CS/네트워크

[네트워크] HTTP

mhko411 2021. 7. 7. 07:35
728x90

프로토콜은 어떻게 메시지를 주고받을지 규칙을 정해놓은 것이다. WEB 상에서 클라이언트와 서버는 HTTP를 통해 메시지를 주고받는다. 클라이언트는 HTTP를 통해 "무엇을", "어떻게" 등의 정보를 서버에 전달하고 서버는 HTTP를 통해 응답에 대한 결과를 전달한다.


HTTP의 탄생

유럽 입자 물리학 연구소의 팀 버너스 리 박사는 World Wide Web을 개발하였고 WWW를 구성하는 기술인 HTML, HTTP, URL 등을 고안해냈다. 

HTML의 경우 웹 상에서 주고받는 문서를 작성할 수 있는 마크업 언어이며 HTTP는 이러한 문서를 전송하기 위한 프로토콜, URL은 문서의 주소를 정하는 방법이다. 

 

HTTP의 기본 동작

클라이언트(브라우저)가 서버에 요청을 할 때는 "무엇을", "어떻게"와 부가적인 정보를 전달하게 된다. 여기서 "무엇을"은 URI가 되며 "어떻게"는 메소드가 된다. 메소드는 클라이언트가 웹 서버에 어떤 동작으로 요청을 할지 결정하게 된다. 

다음은 가장 많이 사용되는 메소드들이다.

 

메소드 의미
GET URI에 해당하는 데이터를 가져온다.
POST 클라이언트가 서버에 데이터를 전송한다.
DELETE URI에 해당하는 데이터를 삭제한다.
PUT URI에 해당하는 데이터를 수정한다.

 

"무엇을", "어떻게" 보낼지 알았다면 이를 실제로 서버에 전달할 때는 리퀘스트 메시지를 생성하게된다.

브라우저는 이미 정의되어있는 리퀘스트 메시지의 형태에 맞게 메시지를 생성하게 된다. 리퀘스트 메시지는 크게 4가지의 구조로 나뉘어져있다.

리퀘스트 라인 메소드와 URI를 나타낸다.
메시지 헤더 리퀘스트의 부가적인 정보를 나타내며 요청에 대한 설명, 메시지 본문에 대한 설명 등이 해당된다.
공백 요청에 대한 모든 메타 정보가 전송되었음을 알리는 빈 줄이 삽입된다.
메시지 본문 클라이언트가 서버에 송신하하는 데이터로 form에 입력한 데이터를 POST 메소드로 전송할 때 들어간다.

참고: https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

 

 

위와 같은 구조로 클라이언트가 서버에 리퀘스트 메시지를 전송하면 서버는 응답 메시지를 전송한다. 응답 메시지도 위와 비슷한 구조로 되어있으며 첫 번째 라인에 응답에 대한 결과인 스테이터스 코드가 들어간다. 이를 통해 서버에서 정상적으로 응답이 왔는지 요청이 잘못되었는지 등을 판단하게된다. 또한 메시지 본문에는 클라이언트에서 요청한 데이터 등을 포함하게 되며 바이너리 데이터로 되어있다.

'CS > 네트워크' 카테고리의 다른 글

[네트워크] 서버의 부하를 분산하는 방법  (0) 2021.07.20
[네트워크] 방화벽의 동작원리  (0) 2021.07.19
[네트워크] 네트워크 장비  (0) 2021.07.12
[네트워크] TCP/IP  (0) 2021.07.08
[네트워크] DNS  (0) 2021.07.07