HTTP 1.0 대 1.1


263

누군가 HTTP 1.0과 HTTP 1.1의 차이점에 대한 간략한 개요를 알려줄 수 있습니까? 나는 두 RFC와 함께 시간을 보냈지 만 그들 사이에 많은 차이를 이끌어 낼 수 없었습니다. Wikipedia는 다음과 같이 말합니다.

HTTP / 1.1 (1997-1999)

현재 버전; 영구 연결은 기본적으로 활성화되어 있으며 프록시와 잘 작동합니다. 또한 요청 파이프 라이닝을 지원하여 여러 요청을 동시에 보낼 수 있으므로 서버가 워크로드를 준비하고 요청 된 리소스를 클라이언트에보다 신속하게 전송할 수 있습니다.

그러나 그것은 나에게 큰 의미가 없습니다. 나는 이것이 다소 복잡한 주제라는 것을 알고 있으므로 완전한 대답을 기대하지는 않지만 누군가 저에게 조금 낮은 수준의 차이점에 대한 간략한 개요를 줄 수 있습니까?
이것은 HTTP 서버 또는 응용 프로그램을 구현하기 위해 알아야 할 정보를 찾고 있음을 의미합니다. 나는 주로 올바른 방향으로 너지를 찾고있어 스스로 알아낼 수 있습니다.


다음은 주요 차이점을 요약 한 것입니다. http://www.research.att.com/~bala/papers/h0vh1.html
Kev

3
소스로 이동해 주셔서 감사합니다. 요약을 이해하지 못하면 일반적으로 네트워킹에 대해 잘 모르는 것처럼 들립니다. 아마도 그 용어들도 연구해야 할 것입니다.
Marcin

4
이 문제에 관해서는 여전히 초보자이지만, 나의 주요 문제는 요약이 "어떻게"보다는 "무엇"을 더 많이 제공한다는 것입니다.
Jason Baker


답변:


363

프록시 지원 및 호스트 필드 :

HTTP 1.1에는 사양별로 필요한 호스트 헤더가 있습니다.

HTTP 1.0에는 공식적으로 호스트 헤더가 필요하지 않지만 추가해도 문제가되지 않으며 많은 응용 프로그램 (프록시)이 프로토콜 버전에 관계없이 호스트 헤더를 보게됩니다.

예:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

이 헤더는 프록시 서버를 통해 메시지를 라우팅 할 수 있고 웹 서버가 동일한 서버의 다른 사이트를 구별 할 수 있기 때문에 유용합니다.

따라서 blahblahlbah.com과 helohelohelo.com이 동일한 IP를 가리키는 경우를 의미합니다. 웹 서버는 호스트 필드를 사용하여 클라이언트 시스템이 원하는 사이트를 구별 할 수 있습니다.

지속적인 연결 :

HTTP 1.1을 사용하면 지속적인 연결을 유지할 수 있습니다. 즉, 동일한 HTTP 연결에서 둘 이상의 요청 / 응답을 가질 수 있습니다.

HTTP 1.0에서는 각 요청 / 응답 쌍마다 새 연결을 열어야했습니다. 그리고 각 응답 후 연결이 닫힙니다. 이것은 TCP Slow Start로 인해 큰 효율성 문제를 야기 합니다.

옵션 방법 :

HTTP / 1.1에는 OPTIONS 메소드가 도입되었습니다. HTTP 클라이언트는이 방법을 사용하여 HTTP 서버의 기능을 판별 할 수 있습니다. 주로 웹 응용 프로그램의 Cross Origin Resource Sharing에 사용됩니다.

캐싱 :

HTTP 1.0은 헤더를 통한 캐싱을 지원했습니다 : If-Modified-Since.

HTTP 1.1은 '엔티티 태그'라는 것을 사용하여 캐싱 지원을 크게 확장합니다. 2 개의 자원이 동일하면 동일한 엔티티 태그를 갖습니다.

HTTP 1.1은 또한 If-Unmodified-Since, If-Match, If-None-Match 조건부 헤더를 추가합니다.

Cache-Control 헤더와 같은 캐싱과 관련된 추가 사항도 있습니다.

100 계속 상태 :

HTTP / 1.1 100 Continue에 새로운 리턴 코드가 있습니다. 이는 서버가 요청을 처리 할 수 ​​있는지 또는 요청을 처리 할 권한이 있는지 클라이언트가 확실하지 않은 경우 클라이언트가 큰 요청을 보내지 못하게하기위한 것입니다. 이 경우, 클라이언트는 헤더만을 송신하고, 서버는 클라이언트 (100)에게 계속해서 본문을 진행할 것을 지시 할 것이다.

훨씬 더:

  • 다이제스트 인증 및 프록시 인증
  • 여분의 새로운 상태 코드
  • 청크 전송 인코딩
  • 연결 헤더
  • 향상된 압축 지원
  • 훨씬 더.

15
호스트 헤더를 생략하면 HTTP / 1.0을 원한다고 주장하는 많은 서버 / 프록시가 매우 화가 나게됩니다.
Paul Tomblin

2
HTTP 1.0은 Content-Encoding 헤더를 통한 압축을 지원합니다. Paul이 언급했듯이 HTTP / 1.0 클라이언트는 호스트 헤더를 보내는 것이 좋습니다. 엄격히 금지되어 있지 않으며 예상대로 작동하는 경우가 더 많기 때문입니다. 그렇지 않으면, 이것은 죽었다.
cpm

@Paul Tomblin : 감사합니다.이 정보를 추가했습니다.
Brian R. Bondy

2
"blahblahlbah.com과 helohelohelo.com이 동일한 IP를 가리키는 경우 웹 서버는 호스트 필드를 사용하여 클라이언트 시스템이 원하는 사이트를 구별 할 수 있습니다." HTTP 1.0 클라이언트가 구별 할 호스트 필드를 제공하지 않으면 어떻게됩니까?
Pacerier

@Pacerier는 보통 일종의 기본 페이지입니다. 서버에 따라 다릅니다.
앤드류 램버트

14

 HTTP 1.0 (1994)

  • 아직 사용 중입니다
  • 청크 (또는 압축) 서버 응답을 처리 할 수없는 클라이언트가 사용할 수 있습니다

 HTTP 1.1 (1996-2015)

  • 버전 1.0에 대한 많은 확장을 공식화합니다
  • 지속적 및 파이프 라인 연결 지원
  • 청크 분할 전송, 압축 / 압축 해제 지원
  • 가상 호스팅 지원 (여러 도메인을 호스팅하는 단일 IP 주소를 가진 서버)
  • 다국어 지원
  • 바이트 범위 전송을 지원합니다. 중단 된 데이터 전송을 재개하는 데 유용

HTTP 1.1은 HTTP 1.0의 향상된 기능입니다. 다음은 네 가지 주요 개선 사항입니다.

  1. 단일 IP 주소에서 여러 도메인을 제공 할 수있어 IP 주소를 효율적으로 사용할 수 있습니다.

  2. 웹 브라우저가 단일 영구 연결을 통해 여러 요청을 보낼 수 있도록하여 빠른 응답.

  3. 청크 인코딩을 지원하여 동적으로 생성 된 페이지에 대한 빠른 응답으로 전체 길이를 알기 전에 응답을 보낼 수 있습니다.
  4. 캐시 지원을 추가하여 응답 속도가 빨라지고 대역폭이 크게 절약됩니다.

9

사소한 응용 프로그램 (예 : 웹 기반 온도계에서 온도 값을 산발적으로 검색)의 경우 HTTP 1.0은 클라이언트와 서버 모두에 적합합니다. 베어 본 소켓 기반 HTTP 1.0 클라이언트 또는 서버를 약 20 줄의 코드로 작성할 수 있습니다.

보다 복잡한 시나리오의 경우 HTTP 1.1이 좋습니다. 보다 복잡한 HTTP 1.1 프로토콜의 복잡성을 처리하기 위해 코드 크기가 3 ~ 5 배 증가 할 것으로 예상됩니다. HTTP 1.1에서는 다양한 헤더를 작성, 구문 분석 및 응답해야하기 때문에 복잡성이 주로 발생합니다. 클라이언트가 HTTP 라이브러리를 사용하거나 서버가 웹 응용 프로그램 서버를 사용하도록하여 응용 프로그램을 이러한 복잡성으로부터 보호 할 수 있습니다.


7

주요 호환성 문제는 지속적인 연결 지원입니다 . 최근에 HTTP / 1.1을 "지원하는"서버에서 작업했지만 클라이언트가 HTTP / 1.0 요청을 보낼 때 연결을 닫지 못했습니다. HTTP / 1.1을 지원하는 서버를 작성할 때 HTTP / 1.0 전용 클라이언트와도 잘 작동하는지 확인하십시오.


8
HTTP / 1.1에서 HTTP / 1.0 호환이 필요합니까?
Pacerier

@Troy-HTTP 1.1 요청에 대한 응답을 전송 한 후 즉시 연결을 닫는 것이 유효합니까 (서버에서 요청을 읽은 소켓)? 어떤 실질적 의미 서버 구현 HTTP 1.0
가이 아브라함

5

내 머리 위로 떠 올릴 수있는 첫 번째 차이점 중 하나는 동일한 서버에서 실행되는 여러 도메인, 부분 리소스 검색입니다.이를 통해 리소스 다운로드를 검색하고 속도를 높일 수 있습니다 (거의 모든 다운로드 가속기의 기능).

당신은 웹 사이트 또는 이와 유사한 같은 응용 프로그램을 개발하는 경우의 차이점에 대해 너무 걱정하지 않아도하지만 당신은 해야 간의 차이를 알 수 GETPOST적어도 동사를.

이제 브라우저를 개발하려면 예, HTTP 서버를 개발하려는 경우뿐만 아니라 완전한 프로토콜을 알아야합니다.

HTTP 프로토콜에 대해서만 관심이있는 경우 1.0 대신 HTTP / 1.1로 시작하는 것이 좋습니다.


1
Methinks Jason은 자신의 HTTP 서버 / 앱을 처음부터 구축하려는 경우 GET과 POST의 차이점을 이미 알고 있습니다. :)
Kev

1
실제로 현재 HTTP 1.0 만 지원하는 웹 서버로 일부 작업을 수행했으며 1.1 지원을 추가하는 데 무엇이 궁금합니다.
Jason Baker

2

HTTP 1.1은 인터넷의 TCP / IP 프로토콜 제품군에서 실행되는 월드 와이드 웹 애플리케이션 프로토콜 인 최신 하이퍼 텍스트 전송 프로토콜 버전입니다. HTTP 1.0과 비교하여 HTTP 1.1은 원래 HTTP보다 빠른 웹 페이지 전달을 제공하고 웹 트래픽을 줄입니다.

웹 트래픽 예 : 예를 들어 서버에 액세스하는 경우 동시에 많은 사용자가 데이터를 위해 서버에 액세스하고 있습니다. 그러면 서버가 중단 될 수 있습니다. 이것은 웹 트래픽입니다.


1

HTTP 1.1에는 사양에 호스트 헤더가 포함되어 있지만 HTTP 1.0에는 공식적으로 호스트 헤더가 없지만 추가하는 것을 거부하지는 않습니다.

호스트 헤더는 클라이언트가 프록시 서버를 통해 메시지를 라우팅 할 수있게 해주므로 유용합니다. HTTP 버전 1.0과 1.1의 주요 차이점은 다음과 같습니다.

  1. HTTP 1.1에는 지속적인 연결이 제공되므로 동일한 HTTP 연결에서 둘 이상의 요청 또는 응답을 가질 수 있습니다.
  2. HTTP 1.0에서는 각 요청 및 응답에 대해 새 연결을 열어야합니다.
  3. HTTP 1.0에는 pragma가 있고 HTTP 1.1에는 Cache-Control이 있으며 이것은 pragma와 유사합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.