HTTP
HTTP는 응용 프로그램 전송 계층에서 사용되는 프로토콜이며 웹 서비스 통신에 사용됩니다. 성(시간이프르티외부 티옮기다 피로토코)보시다시피 HTML 파일을 교환할 때 사용하는 통신 프로토콜이지만 현재는 인터넷 서비스에서 컴퓨터 간의 데이터 송수신에 사용되는 통신 프로토콜까지 확장된 것으로 보인다.
개발
1991년 HTTP/0.9, 1996년 HTTP/1.0, 1999년 HTTP/1.1, 2015년 HTTP/2를 시작으로 Tim Berners-Lee가 팀 전체에서 데이터를 공유하기 위해 개발했습니다. HTTP의 세 번째 버전인 HTTP/ 3, 2022년에 표준화되었습니다.
HTTP/1.x ~ HTTP/2 버전은 TCP를 기반으로 통신하고 HTTP/3 버전은 UDP를 기반으로 통신합니다.
HTTP/1.0
HTTP 통신이 TCP 기반일 때 3-way handshake 과정을 거쳐 신뢰성을 확보합니다. HTTP/1.0에서는 각 통신에 대해 3방향 핸드셰이크가 지속적으로 수행됩니다. 즉, 지연 시간(데이터가 순환하는 시간)이 늘어납니다. 그래서 우리는 코드 압축, Base64 이미지 인코딩 및 이미지 분할을 사용하여 대기 시간을 줄였습니다.
HTTP/1.1
대기 시간 문제를 해결하기 위해 개발된 버전이 HTTP/1.1 버전입니다. 매번 3방향 핸드셰이크를 수행하는 대신 연결이 설정되면 keep-alive 옵션을 사용하여 여러 요청-응답을 수행한 후 해제할 수 있습니다.
단점도 있습니다. HTTP/1.x 버전까지는 한 번에 하나의 파일을 주고 받을 수 없었지만, 여러 개의 파일을 연속으로 보낼 때 앞선 파일이 지연되면 다음 파일에 영향을 주어 성능이 저하될 수 있습니다. 할 수 있다 . 이를 HOL 차단이라고 합니다. 또한 헤더의 중복과 대용량 데이터로 인해 헤더가 무거워 비압축이다.
HTTP/2
HTTP/1.x 버전의 문제점을 개선한 새로운 버전입니다. HTTP/1.1 버전의 데이터 병목 현상인 HOL 차단을 개선하기 위해 여러 파일을 병렬로 전송(멀티플렉싱)하여 동시에 송수신하여 대기 시간을 줄입니다. 이 경우 스트림만 문제가 되고 다른 스트림은 영향을 받지 않습니다!
HTTP/1.x는 헤더가 매우 많았지만 HPACK 압축 형식을 사용하여 헤더를 압축하면 용량이 크게 줄어듭니다. 서버 푸시도 가능합니다. 예를 들어 HTML을 요청하면 다음 요청 없이 CSS, JS 파일을 밀어주는 푸시 기능도 지원한다.
HTTP/3
세 번째 버전인 HTTP/3은 UDP를 통한 QUIC 프로토콜을 사용합니다. 버전 3에서는 3-way 핸드셰이크 없이 특정 신호를 한 번만 요청하고 이에 응답하여 즉시 통신할 수 있습니다. 또한 기본적으로 TLS를 사용합니다.