Ổ cắm Python phát hiện vây ack

Để hiểu TCP keepalive [mà chúng ta sẽ gọi là keepalive] làm gì, bạn không cần làm gì khác ngoài việc đọc tên. giữ cho TCP tồn tại. Điều này có nghĩa là bạn sẽ có thể kiểm tra ổ cắm đã kết nối của mình [còn được gọi là ổ cắm TCP] và xác định xem kết nối có còn hoạt động hay không hay nó đã bị hỏng

2. 1. TCP keepalive là gì?

Khái niệm keepalive rất đơn giản. khi bạn thiết lập kết nối TCP, bạn kết hợp một bộ hẹn giờ. Một số bộ hẹn giờ này xử lý thủ tục keepalive. Khi bộ hẹn giờ cố định về 0, bạn gửi cho đồng nghiệp của mình một gói thăm dò cố định không có dữ liệu trong đó và cờ ACK được bật. Bạn có thể làm điều này vì các thông số kỹ thuật TCP/IP, dưới dạng một loại ACK trùng lặp và điểm cuối từ xa sẽ không có đối số, vì TCP là một giao thức hướng dòng. Mặt khác, bạn sẽ nhận được phản hồi từ máy chủ từ xa [không cần hỗ trợ keepalive, chỉ cần TCP/IP], không có dữ liệu và bộ ACK

Nếu bạn nhận được phản hồi cho đầu dò keepalive của mình, bạn có thể khẳng định rằng kết nối vẫn hoạt động mà không phải lo lắng về việc triển khai ở cấp độ người dùng. Trên thực tế, TCP cho phép bạn xử lý luồng chứ không phải gói và do đó, gói dữ liệu có độ dài bằng 0 không gây nguy hiểm cho chương trình người dùng

Quy trình này hữu ích vì nếu các đồng nghiệp khác mất kết nối [ví dụ do khởi động lại], bạn sẽ nhận thấy rằng kết nối bị hỏng, ngay cả khi bạn không có lưu lượng truy cập trên đó. Nếu các đầu dò cố định không được đồng nghiệp của bạn trả lời, bạn có thể khẳng định rằng kết nối không thể được coi là hợp lệ và sau đó thực hiện hành động chính xác

2. 2. Tại sao sử dụng TCP keepalive?

Bạn có thể sống khá hạnh phúc mà không cần keepalive, vì vậy nếu bạn đang đọc bài viết này, bạn có thể đang cố gắng hiểu liệu keepalive có phải là giải pháp khả thi cho các vấn đề của bạn hay không. Thay vào đó hoặc bạn thực sự không có gì thú vị hơn để làm, và điều đó cũng không sao cả. . ]

Keepalive không xâm lấn và trong hầu hết các trường hợp, nếu bạn nghi ngờ, bạn có thể bật nó lên mà không có nguy cơ làm sai điều gì. Nhưng hãy nhớ rằng nó tạo thêm lưu lượng mạng, điều này có thể ảnh hưởng đến bộ định tuyến và tường lửa

Tóm lại, hãy sử dụng bộ não của bạn và cẩn thận

Trong phần tiếp theo, chúng tôi sẽ phân biệt giữa hai tác vụ mục tiêu cho keepalive

  • Kiểm tra các đồng nghiệp đã chết

  • Ngăn chặn ngắt kết nối do mạng không hoạt động

2. 3. Kiểm tra các đồng nghiệp đã chết

Keepalive có thể được sử dụng để thông báo cho bạn khi đồng nghiệp của bạn chết trước khi nó có thể thông báo cho bạn. Điều này có thể xảy ra vì một số lý do, chẳng hạn như hoảng loạn hạt nhân hoặc quá trình xử lý ngang hàng đó bị chấm dứt một cách thô bạo. Một tình huống khác minh họa khi bạn cần keepalive để phát hiện cái chết của đồng nghiệp là khi đồng nghiệp đó vẫn còn sống nhưng kênh mạng giữa nó và bạn đã ngừng hoạt động. Trong trường hợp này, nếu mạng không hoạt động trở lại, bạn sẽ có cái chết ngang hàng. Đây là một trong những tình huống mà các hoạt động TCP bình thường không hữu ích để kiểm tra trạng thái kết nối

Hãy nghĩ về một kết nối TCP đơn giản giữa Peer A và Peer B. có quá trình bắt tay ba bước ban đầu, với một phân đoạn SYN từ A đến B, SYN/ACK quay lại từ B đến A và ACK cuối cùng từ A đến B. Tại thời điểm này, chúng tôi đang trong tình trạng ổn định. kết nối được thiết lập và bây giờ chúng tôi thường đợi ai đó gửi dữ liệu qua kênh. Và đây là vấn đề. rút phích cắm nguồn điện từ B và ngay lập tức nó sẽ ngừng hoạt động mà không gửi bất cứ thứ gì qua mạng để thông báo cho A rằng kết nối sắp bị hỏng. A, từ phía nó, đã sẵn sàng nhận dữ liệu và không biết rằng B đã gặp sự cố. Bây giờ khôi phục nguồn điện cho B và đợi hệ thống khởi động lại. A và B hiện đã quay lại, nhưng trong khi A biết về một kết nối vẫn còn hoạt động với B, thì B không biết. Tình huống tự giải quyết khi A cố gắng gửi dữ liệu tới B qua kết nối đã chết và B trả lời bằng gói RST, khiến A cuối cùng phải đóng kết nối

Keepalive có thể cho bạn biết khi nào một đồng nghiệp khác không thể truy cập được mà không có nguy cơ dương tính giả. Trên thực tế, nếu sự cố xảy ra trong mạng giữa hai đồng nghiệp, hành động cố định là đợi một lúc rồi thử lại, gửi gói cố định trước khi đánh dấu kết nối là bị hỏng

    _____                                                     _____
   |     |                                                   |     |
   |  A  |                                                   |  B  |
   |_____|                                                   |_____|
      ^                                                         ^
      |--->--->--->-------------- SYN -------------->--->--->---|
      |------|
      |                                                         |
      |                                       system crash ---> X
      |
      |                                     system restart ---> ^
      |                                                         |
      |--->--->--->-------------- PSH -------------->--->--->---|
      |---

Chủ Đề