Làm rõ tiêu đề duy trì sự sống động


106

Tôi được yêu cầu xây dựng một trang web và một trong những người đồng phát triển đã nói với tôi rằng tôi cần phải bao gồm tiêu đề còn tồn tại.

Tôi đã đọc rất nhiều về nó và tôi vẫn còn thắc mắc.

msdn ->

Kết nối mở cải thiện hiệu suất khi máy khách đưa ra nhiều yêu cầu đối với nội dung trang Web, vì máy chủ có thể trả về nội dung cho mỗi yêu cầu nhanh hơn. Nếu không, máy chủ phải mở một kết nối mới cho mọi yêu cầu

Nhìn

nhập mô tả hình ảnh ở đây

  • Khi IIS (F) gửi keep alivetiêu đề ( hoặc dùng gửi giữ-sống ), không có nghĩa là ( E, C, B) tiết kiệm một kết nối mà chỉ dành cho phiên của tôi?
  • Thông tin này được lưu giữ ở đâu ( "kết nối này thuộc về" Royi " )?
  • Có nghĩa là không ai khác có thể sử dụng kết nối đó
  • Nếu vậy - điều đó có nghĩa là giữ tiêu đề tồn tại - giảm số lượng người dùng kết nối chồng chéo?
  • nếu vậy, kết nối được lưu cho tôi trong bao lâu? (nói cách khác, nếu tôi thiết lập tiếp tục sống - "giữ" cho đến khi nào?)

ps cho những ai quan tâm:

nhấp vào trang mẫu này sẽ trả về tiêu đề giữ nguyên


2
Pfff, tôi đã thấy điều này trong một bài giảng, nhưng tôi không chắc lắm. Tôi nghĩ rằng việc duy trì sự sống chỉ xảy ra trên máy chủ và người dùng. Rốt cuộc, mọi thứ ở giữa thậm chí không nên biết đó là HTTP, hãy để một mình nhìn vào các tiêu đề.
Noctua

Tuyên bố được trích dẫn từ MSDN là nhỏ giọt. Khách hàng phải mở một kết nối mới nếu không có kết nối.
Marquis of Lorne,

Và nếu bạn đang xây dựng một trang web, không phải máy chủ Web hay máy khách, thì tiêu đề keepalive đã được thực hiện cho bạn.
Marquis of Lorne

Câu trả lời:


145

Thông tin này được lưu giữ ở đâu ("kết nối này là giữa máy tính Avà máy chủ F")?

Kết nối TCP được nhận dạng bởi IP nguồn và cổng và IP đích và cổng. Hệ điều hành của bạn, tất cả các thiết bị nhận biết phiên trung gian và hệ điều hành của máy chủ sẽ nhận ra kết nối bằng cách này.

HTTP hoạt động với request-response: máy khách kết nối với máy chủ, thực hiện một yêu cầu và nhận phản hồi. Nếu không có tính năng duy trì, kết nối với máy chủ HTTP sẽ bị đóng sau mỗi phản hồi. Với HTTP vẫn tồn tại, bạn giữ cho kết nối TCP cơ bản mở cho đến khi đáp ứng các tiêu chí nhất định.

Điều này cho phép tạo ra nhiều cặp phản hồi yêu cầu trên một kết nối TCP duy nhất, loại bỏ một số trường hợp khởi động kết nối tương đối chậm của TCP.

Khi IIS (F) gửi tiêu đề còn sống (hoặc người dùng gửi tiêu đề còn sống), điều đó có nghĩa là (E, C, B) lưu kết nối

Không. Bộ định tuyến không cần phải nhớ các phiên. Trên thực tế, nhiều gói TCP thuộc cùng một phiên TCP không nhất thiết phải đi qua cùng một bộ định tuyến - đó là để TCP quản lý. Các bộ định tuyến chỉ cần chọn đường dẫn IP tốt nhất và chuyển tiếp các gói tin. Duy trì hoạt động chỉ dành cho máy khách, máy chủ và bất kỳ thiết bị nhận biết phiên trung gian nào khác.

cái nào chỉ dành cho phiên của tôi?

Có nghĩa là không ai khác có thể sử dụng kết nối đó

Đó là mục đích của kết nối TCP : nó là kết nối end-to-end chỉ dành cho hai bên đó.

Nếu vậy - điều đó có nghĩa là giữ tiêu đề tồn tại - giảm số lượng người dùng kết nối chồng chéo?

Xác định "kết nối chồng chéo". Xem kết nối liên tục HTTP để biết một số ưu điểm và nhược điểm, chẳng hạn như:

  • Sử dụng CPU và bộ nhớ thấp hơn (vì ít kết nối được mở đồng thời hơn).
  • Cho phép kết nối HTTP các yêu cầu và phản hồi.
  • Giảm tắc nghẽn mạng (ít kết nối TCP hơn).
  • Giảm độ trễ trong các yêu cầu tiếp theo (không bắt tay).

nếu vậy, kết nối được lưu cho tôi trong bao lâu? (nói cách khác, nếu tôi thiết lập tiếp tục sống - "giữ" cho đến khi nào?)

Một phản ứng duy trì thông thường trông giống như sau:

Keep-Alive: timeout=15, max=100

Xem ví dụ: Xem tiêu đề Keep-Alive Giao thức truyền siêu văn bản (HTTP) (bản nháp cho HTTP / 2 trong đó tiêu đề giữ nguyên được giải thích chi tiết hơn cả 26162086 ):

  • Máy chủ đặt giá trị của timeouttham số thành thời gian mà máy chủ lưu trữ sẽ cho phép kết nối không hoạt động vẫn mở trước khi nó bị đóng. Kết nối không hoạt động nếu máy chủ lưu trữ không gửi hoặc nhận dữ liệu nào.

  • Các maxtham số chỉ ra số lượng tối đa các yêu cầu mà một khách hàng sẽ thực hiện, hoặc một máy chủ sẽ cho phép được thực hiện trên các kết nối liên tục. Sau khi số lượng yêu cầu và phản hồi được chỉ định đã được gửi đi, máy chủ chứa tham số có thể đóng kết nối.

Tuy nhiên, máy chủ có thể tự do đóng kết nối sau một khoảng thời gian hoặc số lượng yêu cầu tùy ý (miễn là nó trả về phản hồi cho yêu cầu hiện tại). Cách thực hiện điều này phụ thuộc vào máy chủ HTTP của bạn.


Xác định "kết nối chồng chéo" ----> Ý tôi là đồng thời. (và tôi nghĩ rằng số lượng kết nối đồng thời sẽ giảm vì như bạn đã nói: "kết nối X được dành riêng cho John vì nó sử dụng tiêu đề duy trì hoạt động." .... tôi nói đúng chứ?
Royi Namir 27/12/13

1
Vì vậy, những gì bạn đang nói là nếu máy chủ có thể xử lý 100 kết nối cùng một lúc và tất cả các kết nối đó sử dụng giữ nguyên, thì kết nối thứ 101 sẽ bị hủy ???
Royi Namir

1
@Royi không, tôi không biết trình duyệt tạo ra bao nhiêu kết nối duy trì đến một máy chủ nhất định và tôi không có ý nói rằng một trình duyệt sẽ chỉ mở một. Số lượng yêu cầu được thực hiện đồng thời bị giới hạn và thay đổi theo từng trình duyệt . Ý tôi là nếu một trình duyệt sử dụng các kết nối còn tồn tại, nó có thể thay vì kích hoạt Ncác yêu cầu qua các Nkết nối (như mặc định kết nối sẽ bị đóng sau mỗi phản hồi), ví dụ: kích hoạt Ncác yêu cầu qua N / Mhoặc thậm chí chỉ là các Mkết nối, vì nó có thể kích hoạt nhiều yêu cầu qua mỗi kết nối đã mở, vì vậy có thể sử dụng ít hơn.
CodeCaster

1
Tôi biết điều đó. (:-)) bạn đã nói trong nhận xét của mình: một ứng dụng khách sẽ tạo ít kết nối đồng thời hơn khi sử dụng chế độ giữ nguyên, nó sẽ kích hoạt các yêu cầu nối tiếp, không song song . Tôi chỉ không hiểu nó liên quan như thế nào đến giữ nguyên.
Royi Namir

5
E, C, B không lưu phiên. Đó là các bộ định tuyến, chúng không có bất kỳ bảng phiên nào và chúng không cần thiết, vì nhiều gói từ một phiên khách-máy chủ TCP có thể đi theo các đường dẫn khác nhau. Vai trò của bộ định tuyến là chọn đường dẫn IP tốt nhất và chuyển tiếp gói tin cho phù hợp, vì vậy nó không đi đến lớp truyền tải (TCP / UDP), cũng như đi đến lớp ứng dụng để xem tiêu đề còn tồn tại. Vì vậy, về cơ bản giữ-sống được một cách rõ ràng giữa khách hàng và máy chủ, và mặc nhiên nó cho phép các thiết bị nhận biết phiên -eg firewalls- mở ra cho rằng rõ ràng phiên client-to-server
Amine Kadimi
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.