2012-02-17 32 views

Trả lời

15

HTTP Keep-Alive là một tính năng của giao thức HTTP. Web-server, triển khai tính năng Keep-Alive, phải kiểm tra kết nối/socket định kỳ (đối với yêu cầu HTTP đến) trong khoảng thời gian kể từ khi nó gửi phản hồi HTTP cuối cùng (trong trường hợp có yêu cầu HTTP tương ứng). Nếu không nhận được yêu cầu HTTP nào vào thời điểm thời gian lưu giữ được định cấu hình (giây) máy chủ web sẽ đóng kết nối. Không yêu cầu HTTP tiếp theo nào có thể thực hiện được sau khi 'đóng' được thực hiện bởi Máy chủ Web. Mặt khác, TCP Keep-Alive được quản lý bởi hệ điều hành trong lớp TCP. HTTP Keep-Alive và TCP Keep-Alive là những thứ hoàn toàn không liên quan.

36

Tôi biết đây là một câu hỏi cũ, nhưng vẫn còn:

  • HTTP Keep-Alive là một tính năng cho phép HTTP client (thường là trình duyệt) và máy chủ (máy chủ web) để gửi nhiều cặp request/response trên cùng một kết nối TCP. Điều này làm giảm độ trễ cho yêu cầu HTTP thứ 2, thứ 3, ..., giảm lưu lượng mạng và tương tự.

  • TCP keepalive là một con thú hoàn toàn khác. Nó giữ kết nối TCP được mở bằng cách gửi các gói nhỏ. Ngoài ra, khi gói được gửi, nó sẽ được kiểm tra để người gửi được thông báo ngay khi kết nối bị ngắt (lưu ý rằng đây không phải là trường hợp khác - cho đến khi chúng ta cố gắng giao tiếp thông qua kết nối TCP chúng ta không biết nó có ổn không).

Để trả lời câu hỏi của bạn về HTTP Keep-Alive:

How is HTTP Keep Alive implemented? 

Nói một cách đơn giản, máy chủ HTTP không đóng kết nối TCP sau mỗi câu trả lời nhưng chờ đợi một thời gian nếu một số HTTP khác yêu cầu sẽ đi qua nó quá. Sau khi một số thời gian chờ nó đóng nó anyway.

Does it internally use TCP Keep Alive? 

Không, ít nhất tôi không thấy điểm nào trong đó.

If not, how does the server detect if the client is dead or alive? 

Nó không cần - không cần. Nếu một khách hàng gửi một yêu cầu, nó sẽ nhận được phản hồi. Nếu máy khách không gửi bất cứ thứ gì qua kết nối TCP (có thể vì kết nối đã chết) thì thời gian chờ sẽ đóng kết nối; tất nhiên khách hàng sẽ nhận thấy điều này và sẽ gửi yêu cầu thông qua kết nối TCP khác nếu cần.

-2

http keep-alive chỉ làm cho tcp sống lâu hơn để chuyển yêu cầu đa http. Sau khi hết thời gian chờ, kết nối tcp sẽ bị đóng. tcp keep-alive chỉ là một cơ chế giữ kết nối tcp hoặc kiểm tra kết nối tcp không được đóng

Các vấn đề liên quan