Các trình duyệt có tạo kết nối TCP mới cho mỗi yêu cầu HTTP không?


23

Vì vậy, tôi biết rằng HTTP về cơ bản chỉ là một giao thức văn bản qua TCP và TCP là trạng thái / kết nối dựa trên. Điều đó có nghĩa là trình duyệt phải kết nối qua TCP với máy chủ trước khi thực hiện yêu cầu HTTP. Câu hỏi sau đó: các trình duyệt thường tạo kết nối TCP mới cho mỗi yêu cầu HTTP?

Các trình duyệt chỉ có thể mở một yêu cầu TCP và giữ cho nó tồn tại miễn là người dùng vẫn đang duyệt trên máy chủ đó, nhưng sau đó các máy chủ sẽ phải sử dụng một lượng lớn kết nối tối đa để xử lý điều đó. Nhưng một lần nữa, nếu các trình duyệt tạo kết nối cho mỗi yêu cầu và người dùng duyệt rất nhiều trên cùng một máy chủ, điều đó có vẻ như là một sự lãng phí. Làm thế nào nó thường làm việc? Có lẽ thông qua việc sử dụng một bộ đếm thời gian?

Câu trả lời:


30

Trong HTTP / 0.9 (không được sử dụng nữa), mỗi yêu cầu sử dụng một kết nối TCP riêng và kết thúc của phản hồi được báo hiệu bằng cách đóng kết nối.

Trong HTTP / 1.0, các kết nối riêng biệt vẫn là mặc định chính thức. Tuy nhiên, Connection: Keep-Alivetiêu đề yêu cầu "" không chính thức nhưng được hỗ trợ rất rộng rãi có thể được sử dụng để yêu cầu kết nối liên tục nếu máy chủ hỗ trợ.

Trong HTTP / 1.1, các kết nối liên tục trở thành mặc định và hành vi yêu cầu đơn lẻ cũ phải được yêu cầu rõ ràng. Thông thường nhiều kết nối liên tục (2 hè5) được sử dụng.

(Yêu cầu tùy chọn có thể được pipeline , mặc dù điều này hóa ra là khó thực hiện và tạo ra nhiều vấn đề hơn nó giải quyết (head-of-line blocking, vv), để sử dụng ai HTTP / 1.x pipelining.)

HTTP / 2 (còn gọi là SPDY ) được thiết kế đặc biệt để ghép nhiều yêu cầu cùng một lúc. Nó có một lớp khung / gói cho phép các phản hồi đến theo bất kỳ thứ tự nào và thậm chí đồng thời.

Tài nguyên: Bài viết WikipediaRFC 2616 phần 8.1 .


Một bài viết thú vị khác đề cập đến cùng nhà phát
triển.mozilla.org / en-US / docs / Web / HTTP / Giả

6

Có tiêu đề "Kết nối: Keep-Alive". Xem enwiki để biết chi tiết.

Bạn có thể sử dụng Wireshark để nắm bắt và phân tích các kết nối và xem tất cả các tiêu đề.


Tại sao Wireshark thay vì Fiddler?
Pacerier

3
Fiddler là 1. Không phải là một phần mềm Nguồn mở; 2. Chỉ dành cho Windows.
Vi.
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.