본문 바로가기
DEVLOG/Backend

[HTTP] 메시지 구조와 함께 HTTP 프로토콜 이해하기

2019. 9. 9.
반응형

HTTP 프로토콜

HTTP는 Hypertext Transfer Protocol의 약자로, 서버와 클라이언트 사이에서 데이터를 주고받기 위해 사용하는 통신 방식입니다.

HTTP는 TCP/IP 프로토콜 위에서 동작하므로, 서버와 클라이언트는 각각 TCP/IP 동작에 필수적인 IP 주소를 가져야 합니다.

 

HTTP 메시지 구조

  • 스타트라인(Start Line)은 요청 메시지일 때 요청라인(request line)이라고 하고, 응답 메시지일 때 상태라인(status line)이라고 합니다.
  • 헤더(Header)는 각 행의 끝에 줄 바꿈 문자인 CRLF(Carriage Return Line Feed)가 있으며, 헤더와 바디는 빈 줄로 구분합니다.
  • 헤더와 바디(Body)는 생략할 수 있고, 바디에는 텍스트뿐만 아니라 바이너리 데이터도 들어갈 수 있습니다.

예시) 바디가 없는 요청 메시지

GET /book/shakespeare HTTP/1.1
Host: www.example.com:8080

첫 번째 줄은 요청라인으로, 다음과 같이 구성되어 있습니다.

  • 요청 방식(method)
  • 요청 URL
  • 프로토콜 버전

두 번째 줄은 헤더로, 이름: 값 형식으로 표현합니다. 헤더는 여러 줄도 가능합니다.

Host 항목은 필수로 표시해줘야 하는데, 아래 예시 처럼 요청라인의 URL에 Host를 표시할 수도 있습니다.

 

예시) Host 헤더 생략

GET http://www.example.com:8080/book/shakespeare HTTP/1.1

만약 포트번호를 표시하고 싶다면 Host 항목에 같이 표시해주면 됩니다.

 

예시) 응답 메시지

HTTP/1.1 200 OK
Content-Type: application/xhtml+xml; charset=utf-8

<html>
...
</html>

첫 번째 줄의 상태라인은 다음과 같이 구성됩니다.

  • 프로토콜 버전
  • 상태 코드 - 200 OK 이므로 정상적으로 처리 되었음을 나타냅니다.
  • 상태 텍스트

두 번째 줄부터 헤더입니다. 위 예시에서는 헤더 항목이 하나뿐인 응답 메시지로, 이 메시지는 바디를 갖고 있기 때문에 헤더와 바디를 빈 줄로 구분하고 있습니다. 바디에는 보통 HTML 텍스트가 포함되어 있습니다.

 

 

반응형

댓글