-
[HTTP 기본] HTTP 메시지기타 2022. 2. 22. 00:26반응형
이 글은 혼자 학습한 내용을 바탕으로 작성되었습니다.
틀리거나 잘못된 정보가 있을 수 있습니다.
댓글로 알려주시면 수정하도록 하겠습니다.
1. HTTP 메시지
HTTP에서 서버와 클라이언트가 서로 정보를 교환하는 정보를 HTTP 메시지라고 부릅니다.
클라이언트 -> 서버로 전송되는 정보를 리퀘스트 HTTP 메시지라고 하며, 서버 -> 클라이언트로 전송되는 정보를 리스폰스 HTTP 메시지라고 합니다.
HTTP 메시지는 크개 3가지 데이터로 구성된 텍스트 문자열 입니다. 이 중 메시지 바디는 항상 존재하는 것이 아닌 있을 수도 있으며 없을 수 도 있습니다.
- 메시지 헤더
- 개행 문자
- 메시지 바디
2. HTTP 메시지 구조
HTTP 메시지는 리퀘스트 메시지와 리스폰스 메시지로 2가지가 존재하며 2가지는 조금씩 차이점이 있습니다.
리퀘스트 메시지
큰 틀에서의 3가지 데이터로 구성된 것은 리스폰스와 동일 합니다. 그러나 메시지 헤더 부분에서 조금의 차이가 있습니다.
리퀘스트 HTTP 메시지의 메시지 헤더는 3가지로 구성됩니다.
- 리퀘스트 라인
메소드, URI, HTTP 버전이 포함된 메시지 헤더의 한 부분 입니다. - 헤더 필드
리퀘스트 헤더, 일반 헤더, 엔티티 헤더가 포함되며 리퀘스트의 여러 조건과 속성 등을 나타내는 필드입니다. - 그 외
기타 부가적으로 필요한 정보를 헤더에 담아 서버로 전송이 가능 합니다.
대표적인 예로 쿠키 등 다양한 정보를 추가하여 전송 합니다.
리스폰스 메시지
큰 틀에서의 3가지 데이터로 구성된 것은 리퀘스트와 동일 합니다. 그러나 메시지 헤더 부분에서 조금의 차이가 있습니다.
리스폰스 HTTP 메시지의 메시지 헤더는 3가지로 구성됩니다.
- 상태 라인
리퀘스트에 대한 결과를 나타내는 상태 코드와 상태 설명, 사용하는 HTTP 버전이 포함된 메시지 헤더의 한 부분 입니다. - 헤더 필드
리스폰스 헤더, 일반 헤더, 엔티티 헤더가 포함되며 리스폰스의 여러 조건과 속성 등을 나타내는 필드입니다. - 그 외
기타 부가적으로 필요한 정보를 헤더에 담아 클라이언트로 전송이 가능 합니다.
대표적인 예로 쿠키로 저장되어야 하는 등 다양한 정보를 추가하여 전송 합니다.
3. 메시지 바디 종류
메시지 바디 위치는 항상 정보가 포함되지 않습니다. 헤더만 필요한 경우는 헤더 정보만 포함하여 전송하는 경우도 있습니다.
반대로 특정 메시지 또는 엔티티 정보의 전송이 필요 시 메시지 바디 또는 엔티티 바디 형태로 정보를 전송 합니다.
또한 메시지 바디와 엔티티 바디는 기본적으로는 같지만 전송 인코딩이 적용되면 엔티티 바디의 내용이 변하여 메시지 바디와 달라지는 경우가 있습니다.
메시지 바디 위치에는 메시지 바디와 엔티티 바디 2가지 종류의 메시지가 포함 될 수 있습니다.
- 메시지 바디
HTTP 통신의 기본 단위입니다.
옥텟 시퀀스로 구성되고 전송 됩니다. - 엔티티 바디
리퀘스트와 리스폰스의 페이로드로 전송되는 정보를 엔티티 헤더와 엔티티 바디에 담아 전송 합니다.
4. 멀티파트
멀티파트는 여러 다른 종류의 데이터를 수용하는 방법을 말합니다.
예를 들어 메일의 경우 메일에 작성한 메일 본문 외에도 첨부파일에 GIF, PNG와 같은 이미지 파일과 EXCEL과 같은 문서 등 여러 종류의 첨부 파일을 하나의 메일에 동시에 보낼 수 있는 것을 의미합니다.
HTTP또한 이러한 멀티파트를 지원하고 있습니다. 그래서 하나의 메시지 바디에 엔티티를 여러개 포함하여 전송할 수 있습니다.
멀티파트의 종류에는 3가지 종류가 있습니다.
- multipart/form-data
WEB 폼으로 부터 첨부파일을 전달하는 경우에 사용됩니다. - multipart/byteranges
리스폰스의 상태 코드가 206인 메시지가 여러 내용을 포함하고 있는 경우에 사용됩니다.
반응형'기타' 카테고리의 다른 글
[HTTP 기본] HTTP 헤더 (0) 2022.02.24 [HTTP 기본] HTTP 상태 코드 (0) 2022.02.22 [HTTP 기본] HTTP 메소드 (0) 2022.02.17 [HTTP 기본] 간결한 HTTP 프로토콜 (0) 2022.02.17 [HTTP 기본] TCP/IP 4계층 (0) 2022.02.16