Tôi đang cố gắng hiểu các kết nối HTTP pipelining và HTTP keep-alive là gì, và cố gắng thiết lập kết nối giữa hai chủ đề này và công nghệ sự kiện Server Sent.HTTP: mối quan hệ giữa pipelining, keep-alive và Server Sent Events là gì?
Theo như tôi hiểu, Kết nối HTTP giữ lại là mặc định trong HTTP 1.1 cách sử dụng TCP khi kết nối TCP được thiết lập một lần được sử dụng để gửi một số yêu cầu HTTP. HTTP pipelining là khả năng của khách hàng gửi yêu cầu đến máy chủ trong khi phản hồi cho các yêu cầu trước chưa được nhận bằng cách sử dụng cùng một kết nối TCP, thường không được sử dụng như một cách mặc định trong trình duyệt.
Câu hỏi của tôi:
1) nếu nó có thể gửi nhiều yêu cầu đến máy chủ một sau khi một sử dụng một kết nối TCP - làm thế nào khách hàng có thể phân biệt giữa các câu trả lời? Tôi đoán khách hàng đang sử dụng thứ tự FIFO gửi phản hồi bằng máy chủ?
2) Tại sao các yêu cầu không phải idempotent như yêu cầu POST không được pipelined (theo wikipedia)?
3) Điều gì về các giới hạn của máy chủ web: số lượng kết nối TCP có thể mở có hạn chế không? Nếu có, thì nếu một số khách hàng giữ các kết nối liên tục, những người khác không thể thiết lập các kết nối, và điều này có thể dẫn đến một vấn đề, đúng không?
4) Sự kiện được gửi của máy chủ đang sử dụng kết nối tiếp tục nhưng theo như tôi hiểu, SSE không sử dụng pipelining. Thay vào đó, họ quản lý để xử lý một số phản hồi cho một yêu cầu hoặc có thể họ chỉ gửi một yêu cầu khác khi phản hồi tiếp theo với sự kiện đã đến. Dự đoán nào là đúng?
5) Một kết nối TCP có nghĩa là một ổ cắm? Một socket có nghĩa là một kết nối TCP? Đóng/mở ổ cắm có nghĩa là đóng/mở kết nối TCP?
Cảm ơn porneL! 1) Nhưng nếu một số phản ứng đã đến sai thứ tự liên quan đến thứ tự đã gửi? 3) Lợi ích của việc sử dụng proxy là gì? nó phải thiết lập các kết nối tương tự với máy chủ không? 4) Vì vậy, bằng cách sử dụng SSE ngụ ý kết nối +1 do đó nâng cao tải máy chủ? – KutaBeach
@KutaBeach Tôi đã mở rộng câu trả lời của mình – Kornel