HTTP/1.0과 HTTP/1.1의 차이

carlkim·2023년 11월 2일
0

CS학습 - 네트워크

목록 보기
23/48

HTTP 요청이라는 기술은 1.0부터 시작해 지금은 3까지 많은 발전이 있다.

HTTP/1.0

HTTP/1.0은 수명이 짧은 연이라 부른다.
HTTP 요청은 자체 요청에서 완료가 됩니다.
각 HTTP 요청당 TCP 핸드세이크가 발생되며 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었습니다, 한번 연결할 때마다 TCP연결을 계쏙해야 하니 RTT가 늘어나는 문제점이 발생.

리소스(파일마다)를 요청하니까
ROUND TRIP TIME이 계속해서 늘어난다.

이 문제를 해결하기위해 나온게

HTTP/1.1

한 번 요청하고 다운로드 받는 것을 유지.

1. KEEP-ALIVE DEFAULT

2. 호스트 헤더

HTTP/1.0은 서버가 하나의 호스트만 가진다 가정하기 때문에 HTTP/1.0은 헤더에 호스트를 포함하지 않았습니다. 이 때문에 HTTP/10.은 하나의 IP에 하나의 호스트만 가질 수 있었습니다.
그러나 사실 서버는 여러개의 호스트를 가질 수 있으며 이런 유연성을 위해 HTTP/1.1은 헤더에 특정 호스트를 포함할 수 있게 변경되었으며 항상 호스트를 포함해서 요청하도록 바뀌었다.

3. 대역폭 최적화

HTTP/1.0의 경우 어떠한 파일을 다운로드 받다가 연결이 끊기면 다시 다운로드 받는 것은 불가능했다. 이를 다시 다운로드 받을 수 있게 바뀌었다.

대표적으로 이미지스프라이트, 코드 압축, Base64 인코딩 기술을 같이 쓰게되었습니다.
참고로 HTTP 버전이 올라간 뒤에도 이러한 기술들을 같이 쓰곤 합니다.

이미지 스프라이트

수많은 이미지를 하나의 이미지로 만들어 하나의 이미지만 다운 받아놓고 이를 통해 수많은 이미지를 다운받는 듯한 효과를 내는 것을 말합니다.

EX) 네이버 -- 수많은 이미지를나열해 놓은 이미지 한개를 다운 받고 있는 모습

코드 압축

크기가 큰 코드를 띄어쓰기 같은 것들을 줄여서 압축시켜 RTT를 줄이는 방법

이미지 Base64 인코딩

이미지 파일을 64진법으로 이루어진 문자열로 인코딩해서 이미지 서버에 대한 HTTP 요청을 할 필요가 없이 만드는 것을 말합니다. 하지만 Base64 인코딩을 할 경우 파일크기가 37퍼센트 크기가 더 커지는 단점이 있었습니다.

HTTP/1.1 의 고질적 문제 : HOL

HOL(HEAD OF LINE BLOCKING)
네트워크에서 같은 큐에 있는 패킷이 그 첫번째패킷에 의해 지연될 때 발생하는 성능 저하 현상

profile
가장 나답게 문제해결.

0개의 댓글