1. HTTP 메시지
메시지 구조 = 메시지 헤더 + 개행문자 + 메시지 바디메시지 헤더: 서버와 클라이언트가 꼭 처리해야 하는 리퀘스트와 리스폰스 내용과 속성 등개행문자[CR+LF] : Carrage Return(CR) + Line Feed(LF)메시지 바디: 꼭 전송되는 데이터 그 자체
2. 리퀘스트 메시지와 리스폰스 메시지의 구조
리퀘스트 메시지
- 메시지헤더
- 리퀘스트라인 = 메소드 + 리퀘스트 URI + HTTP버전
- 리퀘스트 헤더필드
- 일반 헤더필드
- 엔티티 헤더필드
- 그 외 헤더필드 (쿠키 등)
- 개행문자
- 메시지바디
리스폰스 메시지
- 메시지헤더
- 상태라인 = 상태코드 + 상태코드설명 + HTTP버전
- 리스폰스 헤더필드
- 일반 헤더필드
- 엔티티 헤더필드
- 그 외 헤더필드 (쿠키 등)
- 개행문자
- 메시지바디
그 외 헤더필드: HTTP의 RFC 문서에는 정의되어 있지 않지만 실제로 웹에서 널리 사용되는 헤더 필드(예, 쿠키(Cookie))가 포함
- 원래 HTTP 프로토콜의 일부로 정의된 것은 아니지만, 웹 애플리케이션의 필요에 따라 도입
- 나중에 별도의 RFC로 표준화되거나 사실상의 표준으로 자리 잡게 됨
HTTP의 RFC(Request for Comments): HTTP (HyperText Transfer Protocol) 표준을 정의하고 설명하는 문서
RFC: 인터넷과 관련된 표준, 프로토콜, 절차, 프로그램 등을 기술하는 일련의 공식 문서
3. 인코딩으로 전송 효율을 높이다
3-1 메시지 바디와 엔티티 바디의 차이
참고링크: https://hellowwworld.tistory.com/86
3-2 압축해서 보내는 콘텐츠 코딩
콘텐츠코딩:
- 엔티티에 적용하는 인코딩
- 엔티티 정보를 유지한 채 작게 압축해서 송신
- 콘텐츠 코딩된 엔티티는 수신한 클라이언트 측에서 디코딩
- gzip, compress, deflate, identity
3-3 분해해서 보내는 청크 전송 코딩
청크 전송코딩:
엔티티 바디를 청크(덩어리)로 분해하여, 사이즈가 큰 데이터를 전송하는 경우 쓰임
4. 여러 데이터를 보내는 멀티 파트
멀티파트: 여러 다른 종류의 데이터를 수용하는 방법
예) 메일 MIME(다목적 인터넷 메일확장 사양)
multipart/form-data
multipart/byteranges
5. 일부분만 받는 레인지 리퀘스트
리줌(resume): 다운로드 중 커넥션이 끊어지게 되면, 이전에 다운로드를 한 곳에서부터 다운로드 재개
리줌 기능을 실현하기 위해 엔티티 범위를 지정해서 다운로드 할 필요성이 있는데,
범위를 지정하여 리퀘스트를 하는 것을 레인지 리퀘스트라고 함
6. 최적의 콘텐츠를 돌려주는 콘텐츠 네고시에이션
콘텐츠 네고시에이션: 클라이언트와 서버가 제공하는 리소스 내용에 대해 교섭하는 것콘텐츠 네고시에이션 제공 리소스 판단기준: 리퀘스트 헤더필드
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Content-Language
서버 구동형 네고시에이션
에이전트 구동형 네고시에이션
트랜스페어런트 네고시에이션
'컴퓨터과학 🖥️ > 네트워크' 카테고리의 다른 글
[Network] HTTP와 연계하는 웹 서버 (0) | 2024.07.09 |
---|---|
[Network] HTTP 상태코드 (0) | 2024.07.02 |
[Network] 메시지 바디 vs. 엔티티 바디 (0) | 2024.07.01 |
[Network] 간단한 프로토콜 HTTP (0) | 2024.06.23 |
[Network] 웹과 HTTP (0) | 2024.06.18 |