Java/Servlet

[Servlet] 01-3 | HTTP 응답 프로토콜

쥥이 2024. 5. 2. 16:19

이전 글에서는 HTTP 요청 프로토콜의 구조를 알아보았습니다. 이번 글에서는 HTTP 응답 프로토콜의 구조를 살펴보겠습니다.

HTTP 응답 프로토콜 구조

브라우저가 서버에 HTTP 요청 프로토콜 메시지를 보내면, 서버는 메시지에서 정보를 추출하여 요청을 처리합니다. 서버가 요청 처리를 완료하면 HTTP 응답 프로토콜 메시지에 그 결과를 담아 브라우저로 전송합니다.

서버에게 응답을 받은 브라우저는 서버에게 전달받은 HTTP 응답 프로토콜 메시지의 message-body에 담겨 있는 문서를 추출하여 응답 화면을 제공합니다.

 

HTTP 응답 프로토콜 구조

HTTP 응답 프로토콜도 HTTP 요청 프로토콜과 동일하게 (1) start-line (2) message-header (3) CRLF (4) message-body로 이루어져 있습니다.


(1) start-line

HTTP 응답 메시지의 첫 줄에 해당하는 start-line에는 프로토콜 정보와 상태 코드, 상태 메시지가 담겨 있습니다.

상태 코드(status code)와 상태 메시지(status text)
브라우저 요청에 대한 처리 결과를 코드 및 메시지로 표현한 것입니다.

<예시>

상태 코드 상태 메시지 의미
200 OK 정상적인 처리
403 Forbidden 브라우저가 요청한 파일에 접근할 수 없음
404 Not Found 브라우저가 요청한 파일이 서버에 존재하지 않음
405 Method Not Allowed 브라우저가 요청한 방식(method)를 서버에서 지원하지 않음
500 Internal Server Error 브라우저가 요청한 기능을 서버가 처리하는 과정에서 예외(Exception)가 발생함


크롬 브라우저의 개발자 도구에서 [Network] 탭을 클릭하면 실제 서버가 전달한 HTTP 응답 메시지를 확인해볼 수 있습니다. 다음 HTTP 응답 메시지에서 첫 줄을 보면 start-line에 해당하는 내용이 나와 있음을 확인할 수 있습니다.

 


(2) message-header

start-line의 다음 줄부터는 message-header에 해당하는 내용이 나옵니다. message-header에는 서버 정보도 담겨 있지만, 서버가 브라우저에게 전송하는 문서에 대한 정보가 많이 담겨 있습니다.

 

(3) CRLF
HTTP 요청 프로토콜에서와 마찬가지로 message-header와 message-body 사이에는 둘을 구분해 주는 한 줄의 공백이 있습니다.

(4) message-body
message-body에는 브라우저가 요청한, 그에 따라 서버가 브라우저에게 응답으로 전달하는 실질적인 문서가 담겨 있습니다.
만약 브라우저가 서버에게 이미지 파일을 요청했다면 message-body에는 이미지에 대한 바이너리 정보가 포함됩니다. 만약 브라우저가 서버에게 HTML 파일을 요청했다면 message-body에는 HTML 파일이 포함됩니다.

 


참고 자료

도서

- 채규태, <02장. HTTP 프로토콜과 요청 방식>, <<채쌤의 Servlet&JSP 프로그래밍 핵심>>, 쌤즈, 2022년, 29~54쪽