본문 바로가기

카테고리 없음

너 아직도 HTTP 프로토콜 몰라? 이제는 알아야지 !!

안녕하세요. 이번에는 HTTP 프로토콜에 대해서 한번 알아보려고 합니다.
저는 지금 개발자로 공부를 하고 있는지 1년 .. 정도가 다 돼 가는데요 아직도 HTTP 동작 원리와 개념에 대해서

자세하게는 알고 있지 않아서 미루고 미루다가 드디어 블로그를 작성하게 되네요 .. 저처럼 개발자를 꿈꾸거나 웹 개발을

하는 사람이라면 몰랐거나 자세히 알고 있지 않은 HTTP 프로토콜의 내용을 잘 습득하시고 가시면 좋겠습니다.

 

HTTP 프로토콜이란 무엇일까?

HTTP(Hypertext Transfer Protocol)이라는 것은 통신 프로토콜입니다. ( TCP / IP )
즉 웹 브라우저와 서버 간의 데이터를 전달받고 사용하기 위해서 사용하고 있습니다.
즉 요청과 응답이라고 불리는 request와 response라는 용어가 존재하고 있습니다. 한 번씩은 다 들어보셨죠?

 

서버클라이언트의 개념을 아직 헷갈려하신다면??


서버 : 데이터에 대한 접근을 관리하는 네트워크 상의 시스템 

클라이언트 : 데이터를 접근할 수 있는 프로그램 ➡️ 웹 브라우저, 핸드폰 애플리케이션 등...


HTTP 프로토콜에서 서로 간의 데이터를 주고받기 위해서는 request와 response가 존재합니다. 

 

HTTP 프로토콜 통신 과정

 

HTTP 프로토콜 같은 경우에는 연결 상태를 유지하지 않는 비연결성 프로토콜 중 하나입니다.
서버에서 클라이언트에서 받은 request를 response로 받고 클라이언트와의 연결을 끊어버린다는 특성을 가지고 있죠.
요청이 끝난 후에는 서버는 클라이언트의 이전의 상황에 대해서는 전혀 알 수 없습니다. 이러한 상태를 무상태라고 합니다.

 

아 맞다 connect라는 개념도 혹시 알고 있나요?
connect는 클라이언트가 원하는 서버에 접속을 할 수 있게 도와는 개념을 이야기합니다!

 

결국은 동작이 어떤 순으로 이뤄지느냐.
connect를 통한 클라이언트가 원하는 서버에 접속을 한 다음 request를 통하여 요청에 대한 정보를 담아서 서버에 보내고
response는 그 수집한 정보를 가지고 결과값을 클라이언트로 보내게 된다는 것이다. 연결 후 끊어진다 ( Statusless )


➡️ 이를 해결하기 위해서 Cookie와 Session이라는 개념이 도입이 된 거죠!! ( Token 관리법도 한번 읽어보세요! )

 

Token을 어떻게 관리할까?

개발자들이 개발을 하면서 한 번은 꼭 들어봤을 것 같은 Token에 관한 이야기를 해볼까 한다. 많은 사용자들이 로그인을 하면 자동으로 로그아웃이 되어 다시 로그인하는 것이 귀찮을 경우도 있

ltr2006.tistory.com

HTTP의 장단점

 

장점으로는 많은 유저를 대상으로 하는 서비스에 적합해 서버와 클라이언트의 연결 상태를 유지하지 않으니 많은 처리 가능

단점은 연결을 끊어버리는 특성을 가지고 있기에 이전의 상태를 전혀 알 수가 없다는 단점을 지니고 있음

 

헤더 부분에서는 어떤 일을 할까?

 

여기서 가장 중요하다. 크게 3가지로 나뉘게 되는데 요청 메소드, 요청 URL, HTTP 프로토콜로 나뉘게 된다.

 

요청 메소드는 (Request Method) 

한 번씩은 들어봤을 GET, POST, PATCH, DELETE .. 등등 여러 메소드가 존재하고 있다. 그중에서 대표적으로

  • GET : 정보를 요청하기 위해서 사용한다.
  • POST : 정보를 전달하기 위해서 사용한다.
  • PUT : 정보를 수정하기 위해서 사용한다.
  • DELETE : 정보를 삭제하기 위해서 사용한다.

대충 이러한 메소드를 작성을 한다. 그러고 나서 요청 URL인데 여기서의 URL은 요청하는 자원의 위치를 명시를 해주는 것
그리고 HTTP 프로토콜 버전은 웹 브라우저가 사용하는 http 프로토콜의 버전이라는 것이다.

 

아 요청바디는 요청을 보낼 때 데이터를 담는 부분인 거 알고 있으시죠? POST, PUT 등등 .. 에 사용합니다.

하! 지! 만! GET 같은 경우에는 요청할 때 가지고 가야 되는 자원도 URL에다 붙이기 때문에 GET방식은 요청바디가 없다

 

Status Code

요청을 했으면 그에 받은 status code도 확인해야겠죠? 근데 나도 아직 모든 상태 코드를 알지 못합니다 .. 😥

그래서 다음 세션으로는 상태코드를 이야기하는 블로그를 작성하려고 합니다.

이번 세션에서는 간단하게 설명을 해볼까 해요!!

상태코드는 3자리 수로 이뤄져 있으며, 크게 앞자리 수 1~5로 분류할 수 있습니다..!

1XX : 요청을 받았으며 다음 작업을 이어간다.
2XX : 클라이언트가 요청한 동작이 제대로 작동하고 승낙하며 성공적으로 처리했다.
3XX : 클라이언트의 요청을 마치기 위해서는 다음 동작이 필요하다. 
4XX : 클라이언트 오류. 
5XX : 서버 오류.

 

서버에서 받은 응답 메시지에는 HTML이 담겨 있는 거 아시나요? 그걸 토대로 클라이언트의 UI가 렌더링 된다는 점.

 

URL

그러면 이제 요청하고 우리가 접속하는 URL에 대해서 간단히 알아보면 URL은 데이터를 담고 있는 위치이며, 원하는

서버에 특정 파일을 접근하기 위해서 존재한다. 

https://www.naver.com/

 

위에 URL은 지금 네이버를 가리키고 있는 도메인이죠?? 많이들 봤을 겁니다.
여기서 https는 프로토콜을 가르치고 www은 별 큰 뜻은 존재하지 않지만 완전한 주소를 위해서 사용한다고 합니다.
그다음은 naver IP주소, 도메인 이름에서 사용되는 것이며, com 같은 경우에는 최상위 도메인이라고 불립니다. 
대충 무슨 느낌인지 아시겠죠~~??


느낀 점

아직 HTTP에 대한 전반적인 이해도가 많이 낮은 것 같아서 더 추가적으로 찾아보고 추가하려고 합니다 ..
개발을 한지 이제 거듭 1년이 다 돼 가는데 아직 이런 네트워크 관련한 개념을 너무 많이 모르고 있어서 배울 것이 많네요 ..
앞으로 프로젝트 활동보다는 이러한 개념을 더 공부하는 것도 좋을 것 같네요 .. 🥹 

 

오늘도 즐거운 하루 되세요!!