728x90
HTTP version 1.0
HTTP의 초기 버전은 서버로부터 정보를 얻는 GET 기능만 가능했다.(HTTP version 0.9) 하지만 점점 인터넷이 발전하고 새로운 기능이 생겨나면서 정보를 얻는 것만으로는 충분하지 않게 되었다, 그래서 HTTP version 1.0에서는 새로운 유틸리티들이 추가되었다.
- Header : HTTP header를 도입해 프로토콜 방식을 유연하고, 확장 가능하게 만든 메타 데이터의 전송이 가능하게 되었다.
- Versioning : HTTP 요청시 사용된 버전을 명시적으로 알려주고 request line에 추가한다.
- Status Code : HTTP 요청은 상태 코드를 가진다. 따라서 상태 코드를 통해 receiver가 요청 처리상태를 확인할 수 있다.
- Content-type : Header 덕분에 HTTP는 일반 HTML 파일이 아닌 다른 문서 유형도 전송할 수 있게 되었다.
- New methods : 추가적으로 POST, HEAD 메서드를 제공한다.
HTTP version 1.1
- Host header : 이를 통해 동일한 IP를 가리키는 도메인을 구분할 수 있으며, Proxy Server를 통해 메시지를 Routing할 때 특히 중요한 역할을 한다.
- Persistent connections : HTTP 1.0에서는 각각의 request와 response가 새로운 연결을 연다. 반면에 HTTP 1.1에서는 여러 요청을 single connection을 사용해 실행할 수 있다.
- Continue status : 서버가 처리할 수 없는 요청을 처리하는 것을 거부하는 것을 방지하기 위해, 클라이언트는 먼저 요청 헤더만 보내고 계속 상태 코드(100)을 수신하는지 확인할 수 있다.
- New methods: PUT, PATCH, DELETE, CONNECT, TRACE, OPTIONS 메서드가 추가되었다.
HTTP version 2.0
- Request Multiplexing : HTTP 1.1은 순차적인 프로토콜이어서 한번에 하나의 요청만 받을 수 있었다. 반면에 HTTP 2.0에서는 요청을 보내고 응답을 비동기적으로 수신받을 수 있다. 따라서 단일 연결을 사용하여 여러 요청을 동시에 수행할 수 있다.
- Request prioritizaion : 이 버전에서는 요청 배치에서 숫자 우선 순위를 설정할 수 있다. 따라서 JS 파일을 응답 받기전에 웹 페이지 CSS를 받는 것과 같은 응답을 예상하는 순서를 명시할 수 있다.
- Automatic compressing : HTTP 1.1 버전에서는 요청 및 응답의 압축을 명시적으로 요구해야 한다. 반면에 2.0 버전에서는 GZip 압축을 자동으로 실행한다.
- Connection reset : 임의의 이유로 인해 서버와 클라이언트 간의 연결을 닫고, 즉시 새 연결을 열 수 있는 기능을 말한다.
- Server push : 서버가 많은 요청을 받는 것을 피하기 위해 2.0 버전은 서버 푸시 기능을 도입했다. 이 기능을 통해서 서버는 곧 요청될 리소스를 예측하려 한다. 따라서 서버는 이러한 리소스를 클라이언트 캐시에 사전에 푸시한다. 이렇게 클라이언트의 요청을 최소화해서 성능 향상을 이끌어낸다.
HTTP version 3.0
HTTP 3.0에서는 2.0에서 사용되는 TCP나 TLS 방식이 아닌 QUIC(Quick UDP Internet Connections)를 통해 설계되었다.
이러한 QUIC은 Native Multiplexing과 내장 암호화 기술(built-in excryption)을 갖춘 전송 계층 프로토콜이다. 따라서 빠른 handshake process를 제공하고, 손실이 많고 느린 연결 대기 시간문제를 완화할 수 있다.
또 다른 HTTP 3.0의 특성은 항상 암호화된 연결을 만든다는 특성이다. 즉, 2.0에서 항상 HTTPS를 사용하는 것과 유사하다.
인용
728x90
'컴퓨터 사이언스 > Network' 카테고리의 다른 글
stream socket vs datagram socket (0) | 2023.11.21 |
---|---|
서버의 시스템 콜(bind, listen, accept) (0) | 2023.11.21 |
proxy 서버 만들기 (0) | 2023.11.21 |
tiny 서버 만들기 (0) | 2023.11.20 |
웹 서버 기초 (0) | 2023.11.19 |