HTTP 버전, HTTP 표준

(2023-12-31)

HTTP 1.1


1. HTTP 버전 (역사, 표준 등)HTTP 0.9 : 차후 정식 버전과 구분하기 위해 HTTP/0.9로 불리움 (1990년경)
     - HTML 문서를 요청해서 이를 가져오는 매우 단순한 초기의 프로토콜
        . 단일 라인 요청에 경로 제시 및 GET 메서드로써 문서를 가져오고 연결을 끊는 것이 전부
        . 즉, 요청에 데이터(바디)를 포함하지 않음

  ㅇ HTTP 1.0 : RFC 1945  (1996년) 
     - 유용한 초기 개념들 도입
        . 메세지 포멧 규격화
        . HTTP 헤더 (요청,응답 모두에서 사용되며, 헤더,바디를 빈 줄로 분리)
        . HTTP 메서드
        . HTTP 응답 코드
        . 텍스트 파일 이외 다양한 파일 전송 가능
        . 리다이렉트, 비지속 연결(non-persistent) 등

  ㅇ HTTP 1.1 : RFC 2068 (1997년) => RFC 2616 (1999년) => RFC 7230~7235  (1998년~)      
     - HTTP 1.0 으로부터 기능 향상
        . HTTP 헤더Host 필드를 필수 항목으로 함 
           .. 따라서, 1개 IP 주소에 다수의 가상 호스팅이 가능해짐
        . HTTP 헤더 내 Accept 필드에 의한 컨텐츠 협상
        . HTTP 메소드 추가 및 조정 
           .. OPTIONS,CONNECT,TRACE 추가
           .. PUT,DELETE 필수로 됨
        . 잘 정의된 캐시 컨트롤
        . 블록 단위 인코딩 전송
        . 병렬 커넥션
           .. 여러 TCP 커넥션을 통한 동시 HTTP 처리 (실제 많이 사용됨)
           .. 또한, 요청 파이프라인을 통한 병렬 커넥션 처리도 가능 (실제 사용 거의 없음)
        . 지속 커넥션(persistent, 기본 동작)을 통한, 커넥션 재사용
           .. HTTP 1.0에서는 요청 헤더에 다음 헤더를 추가함으로써, Keep-Alive로써 구현됐으나,
           .. HTTP 1.1부터는 지속 커넥션 접속이 기본 동작이 됨
           .. 즉, 기존 TCP 연결을 끊지 않음으로써, 재연결에 따른 TCP 느린 시작에 의한 지연 방지
           .. 이 경우에, 연결 끊음은 `명시적인 요청` 및 `타임아웃`에 의해 발생됨 
        . 그 크기를 미리 알 수 없는 컨텐츠청크(chuncked) 전송 인코딩 지원
        . SSL/TLS에 의한 암호화 통신 지원

  ㅇ HTTP 2 (2015)
     - SPDY 기반 (RFC 7540)
     - 기존 텍스트 형식의 메세지 교환에서, 바이너리 형식의 프레임 단위데이터 교환 
     - 멀티플렉싱, HPACK, 서버 푸시 등
        . 멀티플렉싱 : 단일 TCP 연결에, 다수의 스트림 (가상 채널)을 통해, 다중 전송 (병렬) 처리
        . HPACK : HTTP 메세지HTTP 헤더 압축 기능
        . 서버 푸시 : 다음 요청 전에도 필요한 컨텐츠 전송 가능

  ㅇ HTTP 3 (2020 ~)
     - HTTP 2 업그레이드 버전
     - QUIC 기반 (RFC 9114)
     - UDP, TLS 1.3을 사용해 성능 향상


2. HTTP 관련 주요 표준RFC 1945 (1996년) : HTTP/1.0
     - "Hypertext Transfer Protocol -- HTTP/1.0"
  ㅇ RFC 2068 (1997년) : HTTP/1.1 
     - "Hypertext Transfer Protocol -- HTTP/1.1"
  ㅇ RFC 2616 (1999년) : HTTP/1.1 개정
     - Hypertext Transfer Protocol -- HTTP/1.1
  ㅇ RFC 2817 (2000년) : TLS
     - "Upgrading to TLS Within HTTP/1.1"
  ㅇ RFC 2854 (2000년) : MIME type
     - "The 'text/html' Media Type"
  ㅇ RFC 5785 (2010년) : URI
     - "Defining Well-Known Uniform Resource Identifiers (URIs)"
  ㅇ RFC 6266 (2011년) : Content-Disposition
     - "Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)"
  ㅇ RFC 7230 (2014년) : 메세지 구문구조라우팅
     - "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing"
  ㅇ RFC 7231 (2014년)
     - "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content"

HTTP
   1. HTTP   2. HTTP 메세지   3. HTTP 메소드   4. HTTP 상태코드   5. 프록시   6. 프록시 보안   7. HTTP 캐시   8. 쿠키   9. HTTPS   10. HTTP 표준  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"