누군가 HTTP 1.0과 HTTP 1.1의 차이점에 대한 간략한 개요를 알려줄 수 있습니까? 나는 두 RFC와 함께 시간을 보냈지 만 그들 사이에 많은 차이를 이끌어 낼 수 없었습니다. Wikipedia는 다음과 같이 말합니다.
HTTP / 1.1 (1997-1999)
현재 버전; 영구 연결은 기본적으로 활성화되어 있으며 프록시와 잘 작동합니다. 또한 요청 파이프 라이닝을 지원하여 여러 요청을 동시에 보낼 수 있으므로 서버가 워크로드를 준비하고 요청 된 리소스를 클라이언트에보다 신속하게 전송할 수 있습니다.
그러나 그것은 나에게 큰 의미가 없습니다. 나는 이것이 다소 복잡한 주제라는 것을 알고 있으므로 완전한 대답을 기대하지는 않지만 누군가 저에게 조금 낮은 수준의 차이점에 대한 간략한 개요를 줄 수 있습니까?
이것은 HTTP 서버 또는 응용 프로그램을 구현하기 위해 알아야 할 정보를 찾고 있음을 의미합니다. 나는 주로 올바른 방향으로 너지를 찾고있어 스스로 알아낼 수 있습니다.
답변
프록시 지원 및 호스트 필드 :
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)에게 계속해서 본문을 진행할 것을 지시 할 것이다.
훨씬 더:
- 다이제스트 인증 및 프록시 인증
- 여분의 새로운 상태 코드
- 청크 전송 인코딩
- 연결 헤더
- 향상된 압축 지원
- 훨씬 더.
답변
HTTP 1.0 (1994)
- 아직 사용 중입니다
- 청크 (또는 압축) 서버 응답을 처리 할 수없는 클라이언트가 사용할 수 있습니다
HTTP 1.1 (1996-2015)
- 버전 1.0에 대한 많은 확장을 공식화합니다
- 지속적 및 파이프 라인 연결 지원
- 청크 분할 전송, 압축 / 압축 해제 지원
- 가상 호스팅 지원 (여러 도메인을 호스팅하는 단일 IP 주소를 가진 서버)
- 다국어 지원
- 바이트 범위 전송을 지원합니다. 중단 된 데이터 전송을 재개하는 데 유용
HTTP 1.1은 HTTP 1.0의 향상된 기능입니다. 다음은 네 가지 주요 개선 사항입니다.
-
단일 IP 주소에서 여러 도메인을 제공 할 수있어 IP 주소를 효율적으로 사용할 수 있습니다.
-
웹 브라우저가 단일 영구 연결을 통해 여러 요청을 보낼 수 있도록하여 빠른 응답.
- 청크 인코딩을 지원하여 동적으로 생성 된 페이지에 대한 빠른 응답으로 전체 길이를 알기 전에 응답을 보낼 수 있습니다.
- 캐시 지원을 추가하여 응답 속도가 빨라지고 대역폭이 크게 절약됩니다.
답변
사소한 응용 프로그램 (예 : 웹 기반 온도계에서 온도 값을 산발적으로 검색)의 경우 HTTP 1.0은 클라이언트와 서버 모두에 적합합니다. 베어 본 소켓 기반 HTTP 1.0 클라이언트 또는 서버를 약 20 줄의 코드로 작성할 수 있습니다.
보다 복잡한 시나리오의 경우 HTTP 1.1이 좋습니다. 보다 복잡한 HTTP 1.1 프로토콜의 복잡성을 처리하기 위해 코드 크기가 3 ~ 5 배 증가 할 것으로 예상됩니다. HTTP 1.1에서는 다양한 헤더를 작성, 구문 분석 및 응답해야하기 때문에 복잡성이 주로 발생합니다. 클라이언트가 HTTP 라이브러리를 사용하거나 서버가 웹 응용 프로그램 서버를 사용하도록하여 응용 프로그램을 이러한 복잡성으로부터 보호 할 수 있습니다.
답변
주요 호환성 문제는 지속적인 연결 지원입니다 . 최근에 HTTP / 1.1을 “지원하는”서버에서 작업했지만 클라이언트가 HTTP / 1.0 요청을 보낼 때 연결을 닫지 못했습니다. HTTP / 1.1을 지원하는 서버를 작성할 때 HTTP / 1.0 전용 클라이언트와도 잘 작동하는지 확인하십시오.
답변
내 머리 위로 떠 올릴 수있는 첫 번째 차이점 중 하나는 동일한 서버에서 실행되는 여러 도메인, 부분 리소스 검색입니다.이를 통해 리소스 다운로드를 검색하고 속도를 높일 수 있습니다 (거의 모든 다운로드 가속기의 기능).
당신은 웹 사이트 또는 이와 유사한 같은 응용 프로그램을 개발하는 경우의 차이점에 대해 너무 걱정하지 않아도하지만 당신은 해야 간의 차이를 알 수 GET
및 POST
적어도 동사를.
이제 브라우저를 개발하려면 예, HTTP 서버를 개발하려는 경우뿐만 아니라 완전한 프로토콜을 알아야합니다.
HTTP 프로토콜에 대해서만 관심이있는 경우 1.0 대신 HTTP / 1.1로 시작하는 것이 좋습니다.
답변
HTTP 1.1은 인터넷의 TCP / IP 프로토콜 제품군에서 실행되는 월드 와이드 웹 애플리케이션 프로토콜 인 최신 하이퍼 텍스트 전송 프로토콜 버전입니다. HTTP 1.0과 비교하여 HTTP 1.1은 원래 HTTP보다 빠른 웹 페이지 전달을 제공하고 웹 트래픽을 줄입니다.
웹 트래픽 예 : 예를 들어 서버에 액세스하는 경우 동시에 많은 사용자가 데이터를 위해 서버에 액세스하고 있습니다. 그러면 서버가 중단 될 수 있습니다. 이것은 웹 트래픽입니다.
답변
HTTP 1.1에는 사양에 호스트 헤더가 포함되어 있지만 HTTP 1.0에는 공식적으로 호스트 헤더가 없지만 추가하는 것을 거부하지는 않습니다.
호스트 헤더는 클라이언트가 프록시 서버를 통해 메시지를 라우팅 할 수있게 해주므로 유용합니다. HTTP 버전 1.0과 1.1의 주요 차이점은 다음과 같습니다.
- HTTP 1.1에는 지속적인 연결이 제공되므로 동일한 HTTP 연결에서 둘 이상의 요청 또는 응답을 가질 수 있습니다.
- HTTP 1.0에서는 각 요청 및 응답에 대해 새 연결을 열어야합니다.
- HTTP 1.0에는 pragma가 있고 HTTP 1.1에는 Cache-Control이 있으며 이것은 pragma와 유사합니다.