HTTP 버전, HTTP 표준

(2024-05-30)

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 필수로 됨
        . 잘 정의된 캐시 컨트롤 (ETag, Cache-Control ☞ HTTP 캐시 참조)
        . 블록 단위 인코딩 전송
        . 병렬 커넥션
           .. 여러 TCP 커넥션을 통한 동시 HTTP 처리 (실제 많이 사용됨)
           .. 또한, 요청 파이프라인을 통한 병렬 커넥션 처리도 가능 (실제 사용 거의 없음)
        . 지속 커넥션(persistent, 기본 동작)을 통한, 커넥션 재사용
           .. HTTP 1.0에서는 요청 헤더에 다음 헤더를 추가함으로써, Keep-Alive로써 구현됐으나,
           .. HTTP 1.1부터는 지속 커넥션 접속이 기본 동작이 됨
           .. 즉, 기존 TCP 연결을 끊지 않음으로써, 재연결에 따른 TCP 느린 시작에 의한 지연 방지
           .. 이 경우에, 연결 끊음은 `명시적인 요청` 및 `타임아웃`에 의해 발생됨 
        . 그 크기를 미리 알 수 없는 컨텐츠청크(chuncked) 전송 인코딩 지원
        . SSL/TLS에 의한 암호화 통신 지원
     - 주요 기능 확장 표준
        . RFC 2817 (TLS), RFC 5785 (URI), RFC 6266 (Content-Disposition),
        . RFC 6285 (HTTP Status Code 추가), RFC 7230 (Message Syntax and Routing) 등

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

  ㅇ HTTP 3 (2020 ~)  :  HTTP/2 업그레이드
     - 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 표준  


"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"