[Network] HTTP 정보와 HTTP 메시지

2024. 7. 2. 00:23・CS/Network

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

서버 구동형 네고시에이션

에이전트 구동형 네고시에이션

트랜스페어런트 네고시에이션

 

 

저작자표시 비영리 (새창열림)

'CS > Network' 카테고리의 다른 글

[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
'CS/Network' 카테고리의 다른 글
  • [Network] HTTP와 연계하는 웹 서버
  • [Network] HTTP 상태코드
  • [Network] 메시지 바디 vs. 엔티티 바디
  • [Network] 간단한 프로토콜 HTTP
dev.hyejin
dev.hyejin
  • dev.hyejin
    혜진의 개발자 성장블로그
    dev.hyejin
  • 전체
    오늘
    어제
    • 분류 전체보기 (89)
      • 2024 데브캠프 (2)
      • 회고 (1)
      • 이슈해결 (3)
      • 기초학습 (13)
      • Frontend (20)
        • JavaScript (3)
        • Git, GitHub (3)
        • HTML, CSS (14)
      • Backend (8)
        • Database (4)
        • Java (4)
      • CS (16)
        • Network (10)
        • Algorithm (6)
      • Eng (16)
      • Tips (5)
  • 인기 글

  • 태그

    런타임
    점근성능
    객체
    절대경로
    box-sizing
    GitHub
    시간복잡도
    ER모델
    상대경로
    border-box
  • hELLO· Designed By정상우.v4.10.3
dev.hyejin
[Network] HTTP 정보와 HTTP 메시지
상단으로

티스토리툴바