반응형
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 텍스트가 포함되어 있습니다.
반응형
'DEVLOG > Backend' 카테고리의 다른 글
[HTTP] HTTP 처리 방식에 대해 알아보자 (0) | 2019.09.09 |
---|---|
웹 프로그래밍(Web Programming)이란 무엇인가 (0) | 2019.09.09 |
댓글