HTTP 메시지
HTTP 메시지는 웹 애플리케이션에서 클라이언트와 서버 간의 통신을 위해 만들어졌습니다.
클라이언트가 요청하기 위한 Request와 요청에 대해 서버가 응답하는 Response 두 가지로 이루어져 있으며, ASCII로 인코딩 되어 있습니다.
HTTP Request 메시지
GET /index.html HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Accept: */*
body
HTTP 요청 메시지는 다음과같은 형태를 띠고 있습니다.
Request Line
GET /index.html HTTP/1.1
가장 상단의 첫 줄을 의미합니다.
3가지의 정보를 담고 있으며, 순서대로 HTTP 메서드, 경로, HTTP 버전을 나타냅니다.
- HTTP 메서드 - 우리가 흔히 아는 GET, POST, DELETE 등등의 목적과 동작을 나타냅니다.
- 경로 (Path) - 요청할 리소스의 경로를 의미한다. 이 경로를 기반으로 서버에서 리소스를 식별합니다.
- HTTP 버전 - 사용되는 프로토콜 버전을 의미합니다.
Request Header
Host: localhost:8080
Connection: keep-alive
Accept: */*
응답 헤더는 요청 메시지의 부가적인 정보를 담고 있습니다.
Key - Value 형태로 이루어져 있고, 요청 메시지에 대한 메타 데이터를 담고 있습니다.
Blank Line
아무것도 적히지 않은 Blank Lined으로 헤더와 바디를 구분하는 역할을 합니다.
Request Body
body
Blank Line 이후에 존재하는 본문 내용입니다.
GET 메서드의 경우에는 Path의 파라미터값을 붙여 데이터를 요청해 body에 데이터가 없는 경우가 존재하지만, POST나 PUT 같은 메서드의 경우에는 Body에 요청에 필요한 데이터를 담습니다.
JSON이나 XML 형태로 데이터를 담아 전달합니다.
HTTP Response 메시지
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<!DOCTYPE html>
<html>
<head>
<title>ddingmin Page</title>
</head>
<body>
<h1>Welcome to the ddinming Page</h1>
<p>Hello!</p>
</body>
</html>
Response Line
HTTP/1.1 200 OK
요청과 마찬가지로 가장 상단의 첫 줄을 의미합니다.
3가지 정보를 담고 있으며, 순서대로 HTTP 버전, 상태 코드 (Status Code), 상태 메시지 (Status Message)를 나타냅니다.
- HTTP 버전 - 사용되는 프로토콜 버전을 나타냅니다.
- 상태 코드 (Status Code) - 요청에 대한 처리 결과를 나타냅니다. 3자리로 구성되어 있으며, 대표적으로 200은 정상적인 응답을 의미합니다.
- 상태 메시지 (Status Message) - 상태 코드와 함께 간단한 설명을 나타냅니다.
Response Header
Content-Type: text/html
Content-Length: 1234
요청과 마찬가지로 응답 메시지의 부가적인 정보를 담고 있습니다.
Key - Value로 이루어져 있으며, 응답 메시지에 대한 메타데이터를 담고 있습니다.
Blank Line
아무것도 적히지 않은 Blank Lined으로 헤더와 바디를 구분하는 역할을 합니다.
Response Body
<!DOCTYPE html>
<html>
<head>
<title>ddingmin Page</title>
</head>
<body>
<h1>Welcome to the ddinming Page</h1>
<p>Hello!</p>
</body>
</html>
요청에 대한 실제 응답 데이터입니다. 예시처럼 요청의 결과가 존재하는 경우도 있지만, 없는 경우도 있습니다.
데이터 형식은 헤더의 Content-Type에 명시되어 있습니다.
[참고하면 좋을 자료]
https://www.rfc-editor.org/rfc/rfc9110.html#name-syntax-notation
스스로 공부한 내용을 토대로 정리한 글입니다. 오타나 잘못된 내용은 언제나 지적해 주세요!
'Study' 카테고리의 다른 글
[Infra] GitHub Actions를 통한 CI/CD 구축 - 1 (1) | 2023.12.07 |
---|---|
[HTTP] 쿠키와 쿠키를 삭제하는 응답 메시지 보내기 (1) | 2023.07.27 |