안녕하세요 여러분 베하!!
이번주도 돌아온 일단고 팀입니다.
비가 굉장히 많이 내리고 있습니다. 다들 조심하시길 바랍니다
오늘은 HTTP의 Request와 Response에 대한 메시지 구조를 알아보겠습니다.
HTTP의 메시지
요청과 응답의 구조를 알아보기 전에, 과연 HTTP의 메시지란 무엇인가. 설명해드리겠습니다.
HTTP 메시지는 클라이언트와 서버 사이에서 데이터를 주고받는 방식을 의미합니다. 그 방식에는 Reqeust와 Response의 두 가지 타입이 존재합니다. Request은 클라이언트가 서버에게 보내는 요청을 말하고, Response은 요청에 대한 서버의 응답이 됩니다.
HTTP 메시지는 ASCII로 인코딩된 텍스트 정보이며 설정 파일(프록시 혹은 서버의 경우), API(브라우저의 경우), 혹은 다른 인터페이스를 통해 제공됩니다.
요청과 응답의 구조는 유사합니다.
- Start Line - 항상 첫 번째 줄에 위치하며 요청이나 응답의 상태를 나타냅니다.
- HTTP Header - 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합입니다.
- Blank Line - 헤더와 본문을 구분하는 빈 줄을 의미합니다.
- Body - 요청과 응답에 관련된 데이터 또는 문서를 포함합니다.
Request (요청)
요청 메시지 구조를 자세히 알아보겠습니다.
1. Start Line
요청 메시지의 Start Line에는 3가지 요소가 있습니다.
- GET, PUT, POST 등 HTTP method : 수행할 작업이나 방식을 나타냄
- Request 타겟 : 요청 대상(URL/URI) 또는 프로토콜, 포트, 도메인의 절대 경로
- HTTP version : 버전에 따라 요청 메시지 구조나 데이터가 상이하기 때문에 명시
2. Header
대소문자 구분 없는 문자열과 콜론(:), 값이 있습니다. 여러 종류의 헤더가 있으며, 헤더에 따라 값이 달라집니다.
헤더는 다음과 같이 그룹으로 나눌 수 있습니다.
- Request headers : User-Agent, Accept-Type, Accept-Language과 같은 헤더는 요청을 보다 구체화합니다. Referer처럼 컨텍스트를 제공하거나 If-None같이 제약 조건을 추가할 수 있습니다.
- General headers : 메시지 전체에 적용됩니다.
- Entity headers : body에 적용되며 body가 비어있는 경오, entity headers는 전송되지 않습니다.
3. Body
요청하는 데이터를 담고 있습니다. 마지막에 위치하며 모든 요청에 body가 필요한 것은 아닙니다. 보통 POST 요청일 경우, HTML 폼 데이터가 포함되어 있습니다.
Response (응답)
응답 메시지 구조를 자세히 알아보겠습니다.
1. Start Line
아래 3가지의 정보를 포함합니다.
- HTTP version
- 상태 코드 : 요청의 결과를 나타냅니다.
- 상태 text : 상태 코드에 대한 설명을 나타냅니다.
2. Header
요청 헤더와 동일한 구조를 가지고 있으며 마찬가지로 몇가지 그룹으로 나눌 수 있습니다.
- General headers : 메시지 전체에 적용됩니다.
- Response headers : Vary, Accept-Ranges와 같이 상태 줄에 넣기에는 공간이 부족했던 추가 정보를 제공합니다.
- Entity headers : body에 적용되며, body가 비어있을 땐 전송되지 않습니다.
3. Body
응답하는 데이터를 담고 있습니다. 마지막에 위치하며, 201, 204와 같은 상태 코드를 가지는 응답에는 body가 필요하지 않습니다.
이렇게 HTTP 의 요청, 응답 메시지 구조에 대해 알아보았는데 이해가 잘 되셨나요? 유익한 시간이었으면 좋겠네요. 그럼 안녕!
'IT KNOWLEDGE' 카테고리의 다른 글
경쟁조건(Race Condition) (0) | 2023.07.21 |
---|---|
Rancher로 Kubernetes 환경 구축하기 - 클러스터 구축 (0) | 2023.07.21 |
캐시와 레지스터 (0) | 2023.07.11 |
Llama Index 실습(OpenAI API 활용) (0) | 2023.07.07 |
Rancher로 Kubernetes 환경 구축하기 - 설치 및 개요 (0) | 2023.07.06 |
댓글