최신판 |
당신의 편집 |
1번째 줄: |
1번째 줄: |
| [[분류:네트워크]]
| | [[분류:프로토콜]][[분류:인터넷]] |
| [[분류:프로토콜]] | |
| [[분류:인터넷]] | |
| | |
| ;HyperText Transport Protocol | | ;HyperText Transport Protocol |
| | * 1989년 당시 제네바의 CERN에서 일하고 있던 Tim Berners-Lee가 인터넷 상의 하이퍼텍스트 시스템을 만들기 위해 제안 |
| | * 초기에 Mesh라고 불리다 1990년에 구현 과정에서 WWW라 명명 |
|
| |
|
| *1989년 당시 제네바의 CERN에서 일하고 있던 Tim Berners-Lee가 인터넷 상의 하이퍼텍스트 시스템을 만들기 위해 제안
| | == 버전별 차이 == |
| *초기에 Mesh라고 불리다 1990년에 구현 과정에서 WWW라 명명
| |
| | |
| ==버전별 차이== | |
| | |
| ===HTTP/0.9===
| |
| | |
| *HTTP 가장 초기 버전으로, 원래는 버전 번호가 없다.
| |
| **(향후 구분을 위해 0.9라고 버전번호 부여)
| |
| *단순히 HTML 파일만 전송하는 프로토콜
| |
| **오류 코드 또는 응답 코드 또한 HTML에 포함하여 회신
| |
| *사용가능 메서드: GET
| |
| *HTTP 헤더가 존재하지 않음
| |
| | |
| ===HTTP/1.0===
| |
| | |
| ;RFC 1945
| |
| | |
| *헤더를 통해 HTTP 버전 코드를 송신하고, 상태 코드를 회신 받을 수 있음
| |
| *헤더의 Content-Type 구분을 통해 HTML이 아닌 다른 형태의 문서 전송 가능
| |
| *사용가능한 메서드: GET, POST, PUT
| |
| | |
| ===HTTP/1.1===
| |
| | |
| ;RFC 2068
| |
| | |
| *HTTP/1.0이 문서화된지 몇 달 후 1997년 초에 공개
| |
| *Keep Alive 추가
| |
| **커넥션이 재사용될 수 있게 하여 재연결 지연 감소
| |
| *파이프라이닝 추가
| |
| **첫번째 요청에 대한 응답이 완전히 전송되기 이전에 두번째 요청 전송 가능
| |
| **커뮤니케이션 레이턴시를 감소
| |
| *Host 헤더 추가
| |
| **동일 IP 주소에 대해 다른 도메인을 호스트하는 기능이 추가되어 코로케이션 가능
| |
| *청크된 응답 지원
| |
| *캐시 제어 메커니즘 추가
| |
| *사용가능한 메서드: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE
| |
| | |
| ===HTTP/2===
| |
| | |
| *2015년에 발표하였으나, 현장에 많이 적용되지 않음
| |
| *구글이 만든 SPDY를 기반으로 표준화
| |
| *멀티플렉싱: 여러개의 HTTP 요청/응답을 하나의 TCP연결에서 보냄
| |
| *HPACK: 기법을 통해서 요청/응답 헤더를 압축
| |
| *흐름 제어: 복수의 스트림이 단일 연결에서 전송되지만 각각의 흐름 제어를 통해서 클라이언트에서 받아들일 수 있을 만큼만 전송 가능
| |
| *TLS 내재화: HTTP/2는 스펙상 평문으로도 보낼 수 있지만 실제 브라우저는 모두 TLS 위에서만 동작
| |
| *서버 푸시: 클라이언트가 명시적으로 요청하지 않아도 서버가 선제적으로 보낼 수 있음
| |
| *QoS: 요청에 대해 우선순위 부여 가능
| |
|
| |
|
| ===HTTP/3=== | | === HTTP/0.9 === |
| | * HTTP 가장 초기 버전으로, 원래는 버전 번호가 없다. |
| | ** (향후 구분을 위해 0.9라고 버전번호 부여) |
| | * 단순히 HTML 파일만 전송하는 프로토콜 |
| | ** 오류 코드 또는 응답 코드 또한 HTML에 포함하여 회신 |
| | * 사용가능 메서드: GET |
| | * HTTP 헤더가 존재하지 않음 |
|
| |
|
| *QUIC(Quick UDP Internet Connections) 도입
| | === HTTP/1.0 === |
| *UDP에서 구현 된 TCP + TLS + HTTP/2와 유사 | | ;[https://tools.ietf.org/html/rfc1945 RFC 1945] |
| *QUIC의 3-handshake: 속도가 더 빨라지진 않았지만 인증, 암호화 매커니즘 포함 | | * 헤더를 통해 HTTP 버전 코드를 송신하고, 상태 코드를 회신 받을 수 있음 |
| | * 헤더의 Content-Type 구분을 통해 HTML이 아닌 다른 형태의 문서 전송 가능 |
| | * 사용가능한 메서드: GET, POST, PUT |
|
| |
|
| == [[HTTP 코드]] == | | === HTTP/1.1 (현재 표준) === |
| | ;[https://tools.ietf.org/html/rfc2068 RFC 2068] |
| | * HTTP/1.0이 문서화된지 몇 달 후 1997년 초에 공개 |
| | * Keep Alive 추가 |
| | ** 커넥션이 재사용될 수 있게 하여 재연결 지연 감소 |
| | * 파이프라이닝 추가 |
| | ** 첫번째 요청에 대한 응답이 완전히 전송되기 이전에 두번째 요청 전송 가능 |
| | ** 커뮤니케이션 레이턴시를 감소 |
| | * Host 헤더 추가 |
| | ** 동일 IP 주소에 대해 다른 도메인을 호스트하는 기능이 추가되어 코로케이션 가능 |
| | * 청크된 응답 지원 |
| | * 캐시 제어 메커니즘 추가 |
|
| |
|
| == [[HTTP 메서드]] == | | === HTTP/2.0 (차기 표준) === |