HTTP 1.0 so với 1.1


263

Ai đó có thể cho tôi một cái nhìn tổng quan ngắn gọn về sự khác biệt giữa HTTP 1.0 và HTTP 1.1 không? Tôi đã dành một chút thời gian với cả hai RFC, nhưng không thể tạo ra nhiều sự khác biệt giữa chúng. Wikipedia nói điều này:

HTTP / 1.1 (1997-1999)

Phiên bản hiện tại; kết nối liên tục được bật theo mặc định và hoạt động tốt với proxy. Cũng hỗ trợ đường ống yêu cầu, cho phép gửi nhiều yêu cầu cùng lúc, cho phép máy chủ chuẩn bị cho khối lượng công việc và có khả năng chuyển tài nguyên được yêu cầu nhanh hơn cho khách hàng.

Nhưng điều đó không có ý nghĩa nhiều với tôi. Tôi nhận ra đây là một chủ đề hơi phức tạp, vì vậy tôi không mong đợi một câu trả lời đầy đủ, nhưng ai đó có thể cho tôi một cái nhìn tổng quan ngắn gọn về sự khác biệt ở mức độ thấp hơn một chút không?
Điều này có nghĩa là tôi đang tìm kiếm thông tin mà tôi cần biết để triển khai máy chủ hoặc ứng dụng HTTP. Tôi chủ yếu tìm kiếm một người đi đúng hướng để tôi có thể tự mình tìm ra.


Đây là một bản tóm tắt khá hay về những khác biệt chính: http://www.research.att.com/~bala/ con
h0vh1.html

3
Tốt cho bạn đã đi đến nguồn. Có vẻ như bạn không biết về mạng nói chung, nếu bạn không hiểu tóm tắt đó. Có lẽ bạn nên nghiên cứu những điều khoản đó là tốt.
Marcin

4
Mặc dù tôi vẫn là một người mới khi nói đến công cụ này, nhưng vấn đề chính của tôi là bản tóm tắt mang lại cho tôi nhiều hơn "whats" chứ không phải là "hows".
Jason Baker


Câu trả lời:


363

Hỗ trợ proxy và trường Máy chủ:

HTTP 1.1 có tiêu đề Máy chủ theo yêu cầu.

HTTP 1.0 không chính thức yêu cầu tiêu đề Máy chủ, nhưng sẽ không hại khi thêm một tiêu đề và nhiều ứng dụng (proxy) mong muốn thấy tiêu đề Máy chủ bất kể phiên bản giao thức.

Thí dụ:

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

Tiêu đề này hữu ích vì nó cho phép bạn định tuyến thư qua máy chủ proxy và cũng vì máy chủ web của bạn có thể phân biệt giữa các trang web khác nhau trên cùng một máy chủ.

Vì vậy, điều này có nghĩa là nếu bạn có blahblahlbah.com và helohelohelo.com cả hai đều trỏ đến cùng một IP. Máy chủ web của bạn có thể sử dụng trường Máy chủ để phân biệt trang web nào mà máy khách muốn.

Kết nối liên tục:

HTTP 1.1 cũng cho phép bạn có các kết nối liên tục, điều đó có nghĩa là bạn có thể có nhiều yêu cầu / phản hồi trên cùng một kết nối HTTP.

Trong HTTP 1.0, bạn phải mở một kết nối mới cho mỗi cặp yêu cầu / phản hồi. Và sau mỗi phản hồi, kết nối sẽ được đóng lại. Điều này dẫn đến một số vấn đề hiệu quả lớn do TCP Slow Start .

Phương pháp TÙY CHỌN:

HTTP / 1.1 giới thiệu phương thức TÙY CHỌN. Máy khách HTTP có thể sử dụng phương pháp này để xác định khả năng của máy chủ HTTP. Nó chủ yếu được sử dụng để chia sẻ tài nguyên nguồn gốc chéo trong các ứng dụng web.

Bộ nhớ đệm:

HTTP 1.0 có hỗ trợ cho bộ nhớ đệm thông qua tiêu đề: If-Modified-Because.

HTTP 1.1 mở rộng trên bộ nhớ đệm hỗ trợ rất nhiều bằng cách sử dụng một cái gì đó gọi là 'thẻ thực thể'. Nếu 2 tài nguyên giống nhau, thì chúng sẽ có cùng các thẻ thực thể.

HTTP 1.1 cũng thêm các tiêu đề điều kiện If-Unmodified-Because, If-Match, If-none-Match.

Ngoài ra còn có các bổ sung khác liên quan đến bộ nhớ đệm như tiêu đề Cache-Control.

100 Trạng thái tiếp tục:

Có một mã trả về mới trong HTTP / 1.1 100 Tiếp tục. Điều này là để ngăn khách hàng gửi yêu cầu lớn khi khách hàng đó thậm chí không chắc chắn liệu máy chủ có thể xử lý yêu cầu đó hay không hoặc được phép xử lý yêu cầu. Trong trường hợp này, máy khách chỉ gửi các tiêu đề và máy chủ sẽ báo cho khách hàng 100 Tiếp tục, tiếp tục với phần thân.

Nhiều hơn nữa:

  • Xác thực digest và xác thực proxy
  • Thêm mã trạng thái mới
  • Mã hóa chuyển khối
  • Tiêu đề kết nối
  • Hỗ trợ nén nâng cao
  • Nhiều hơn nhiều.

15
Lưu ý rằng rất nhiều máy chủ / proxy tuyên bố họ muốn HTTP / 1.0 sẽ rất khó chịu nếu bạn bỏ qua tiêu đề Máy chủ.
Paul Tomblin

2
HTTP 1.0 có hỗ trợ nén thông qua tiêu đề Mã hóa nội dung. Như Paul đã đề cập, tôi chắc chắn sẽ đề nghị bất kỳ ứng dụng khách HTTP / 1.0 nào gửi tiêu đề Máy chủ, vì nó không bị nghiêm cấm làm như vậy và mọi thứ sẽ hoạt động thường xuyên hơn như bạn mong đợi. Nếu không, điều này là chết trên.
cpm

@Paul Tomblin: Cảm ơn tôi đã thêm thông tin này.
Brian R. Bondy

2
Về "nếu bạn có blahblahlbah.com và helohelohelo.com, cả hai đều trỏ đến cùng một IP. Máy chủ web của bạn có thể sử dụng trường Máy chủ để phân biệt trang web nào mà máy khách muốn." Vậy điều gì xảy ra khi máy khách HTTP 1.0 cho chúng ta không có trường chủ để phân biệt?
Pacerier

@Pacerier thường là một trang mặc định của một số loại; nó phụ thuộc vào máy chủ
Andrew Lambert

14

 HTTP 1.0 (1994)

  • Nó vẫn đang được sử dụng
  • Có thể được sử dụng bởi một khách hàng không thể đối phó với trả lời máy chủ chunked (hoặc nén)

 HTTP 1.1 (1996-2015)

  • Chính thức hóa nhiều phần mở rộng cho phiên bản 1.0
  • Hỗ trợ các kết nối liên tục và đường ống
  • Hỗ trợ chuyển khối, nén / giải nén
  • Hỗ trợ lưu trữ ảo (một máy chủ có một Địa chỉ IP lưu trữ nhiều tên miền)
  • Hỗ trợ nhiều ngôn ngữ
  • Hỗ trợ chuyển phạm vi byte; hữu ích để tiếp tục chuyển dữ liệu bị gián đoạn

HTTP 1.1 là sự cải tiến của HTTP 1.0. Sau đây liệt kê bốn cải tiến chính:

  1. Sử dụng hiệu quả các địa chỉ IP, bằng cách cho phép nhiều tên miền được phục vụ từ một địa chỉ IP duy nhất.

  2. Phản hồi nhanh hơn, bằng cách cho phép trình duyệt web gửi nhiều yêu cầu qua một kết nối liên tục.

  3. Phản hồi nhanh hơn cho các trang được tạo động, bằng cách hỗ trợ mã hóa khối, cho phép gửi phản hồi trước khi biết tổng chiều dài của nó.
  4. Phản ứng nhanh hơn và tiết kiệm băng thông lớn, bằng cách thêm hỗ trợ bộ đệm.

9

Đối với các ứng dụng tầm thường (ví dụ, thỉnh thoảng lấy một giá trị nhiệt độ từ nhiệt kế hỗ trợ web) HTTP 1.0 phù hợp cho cả máy khách và máy chủ. Bạn có thể viết một máy khách hoặc máy chủ HTTP 1.0 dựa trên ổ cắm trong khoảng 20 dòng mã.

Đối với các kịch bản phức tạp hơn, HTTP 1.1 là cách để thực hiện. Yêu cầu tăng kích thước mã từ 3 đến 5 lần để xử lý các vấn đề phức tạp của giao thức HTTP 1.1 phức tạp hơn. Sự phức tạp chủ yếu xuất hiện, bởi vì trong HTTP 1.1, bạn sẽ cần tạo, phân tích cú pháp và trả lời các tiêu đề khác nhau. Bạn có thể bảo vệ ứng dụng của mình khỏi sự phức tạp này bằng cách cho khách hàng sử dụng thư viện HTTP hoặc máy chủ sử dụng máy chủ ứng dụng web.


7

Một vấn đề tương thích quan trọng là hỗ trợ cho các kết nối liên tục . Gần đây tôi đã làm việc trên một máy chủ "hỗ trợ" HTTP / 1.1, nhưng không thể đóng kết nối khi máy khách gửi yêu cầu HTTP / 1.0. Khi viết một máy chủ hỗ trợ HTTP / 1.1, hãy chắc chắn rằng nó cũng hoạt động tốt với các máy khách chỉ có HTTP / 1.0.


8
HTTP / 1.1 có yêu cầu chúng tôi phải tương thích HTTP / 1.0 không?
Pacerier

@Troy - Có hợp lệ để gửi phản hồi cho yêu cầu HTTP 1.1 và ngay sau đó đóng kết nối (ổ cắm mà yêu cầu được đọc từ trên máy chủ) không? Điều đó thực tế có nghĩa là máy chủ thực hiện HTTP 1.0
Guy Avraham

5

Một trong những khác biệt đầu tiên mà tôi có thể nhớ lại từ đầu là nhiều tên miền đang chạy trong cùng một máy chủ, truy xuất tài nguyên một phần, điều này cho phép bạn truy xuất và tăng tốc độ tải xuống của tài nguyên (đó là điều mà hầu hết mọi trình tăng tốc tải xuống đều làm).

Nếu bạn muốn phát triển một ứng dụng như một trang web hoặc tương tự, bạn không cần phải lo lắng quá nhiều về sự khác biệt nhưng ít nhất bạn nên biết sự khác biệt giữa GETPOSTđộng từ.

Bây giờ nếu bạn muốn phát triển một trình duyệt thì có, bạn sẽ phải biết giao thức hoàn chỉnh cũng như nếu bạn đang cố gắng phát triển một máy chủ HTTP.

Nếu bạn chỉ muốn biết giao thức HTTP, tôi sẽ khuyên bạn nên bắt đầu với HTTP / 1.1 thay vì 1.0.


1
Methinks Jason đã biết sự khác biệt giữa GET và POST nếu anh ta xem xét việc xây dựng ứng dụng / máy chủ HTTP của riêng mình từ đầu. :)
Kev

1
Tôi thực sự đã thực hiện một số công việc với một máy chủ web hiện chỉ hỗ trợ HTTP 1.0, tôi chỉ tự hỏi những gì liên quan đến việc thêm hỗ trợ 1.1.
Jason Baker

2

HTTP 1.1 là phiên bản mới nhất của Giao thức truyền siêu văn bản, giao thức ứng dụng World Wide Web chạy trên bộ giao thức TCP / IP của Internet. so với HTTP 1.0, HTTP 1.1 cung cấp phân phối trang web nhanh hơn HTTP gốc và giảm lưu lượng truy cập Web.

Ví dụ về lưu lượng truy cập web: Ví dụ: nếu bạn đang truy cập máy chủ. Đồng thời rất nhiều người dùng đang truy cập vào máy chủ để lấy dữ liệu, sau đó có cơ hội treo Máy chủ. Đây là lưu lượng truy cập Web.


1

HTTP 1.1 đi kèm với tiêu đề máy chủ trong thông số kỹ thuật của nó trong khi HTTP 1.0 không chính thức có tiêu đề máy chủ, nhưng nó không từ chối thêm tiêu đề.

Tiêu đề máy chủ rất hữu ích vì nó cho phép máy khách định tuyến thư trên máy chủ proxy và sự khác biệt chính giữa các phiên bản 1.0 và 1.1 HTTP là:

  1. HTTP 1.1 đi kèm với các kết nối liên tục xác định rằng chúng tôi có thể có nhiều yêu cầu hoặc phản hồi trên cùng một kết nối HTTP.
  2. trong khi ở HTTP 1.0, bạn phải mở một kết nối mới cho mỗi yêu cầu và phản hồi
  3. Trong HTTP 1.0, nó có pragma trong khi ở HTTP 1.1, nó có Cache-Control, điều này tương tự như pragma

0

So với 1.0, 1.1 làm giảm lưu lượng truy cập web

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.