html Giải thích cửa sổ bằng không và gói thăm dò TCP - FCTELE
                                   +8618758069661 [email protected]
Tìm kiếm sản phẩm Hướng dẫn: dấu cách = VÀ, | = HOẶC, ! = KHÔNG

Vì sao TCP ngừng gửi khi cáp vẫn tốt? Cửa sổ nhận và gói thăm dò cửa sổ bằng không

Bạn có câu hỏi? Hãy gọi cho chúng tôi ngay hôm nay!

+8618758069661

Hoặc để lại lời nhắn cho chúng tôi

Lời nhắn trực tuyến

Vì sao TCP ngừng gửi khi cáp vẫn tốt? Cửa sổ nhận và gói thăm dò cửa sổ bằng không

Lượt xem: 11 +11Bài gốc của FCTELETác giả: Đội ngũ kỹ thuật FCTELE

ĐIỀU KHIỂN LUỒNG NHẬN TCP

Vì sao TCP có thể tạm dừng trên một liên kết hoạt động bình thường?

Hệ thống nhận lưu dữ liệu TCP cho đến khi ứng dụng đọc dữ liệu đó. Nếu không còn dung lượng nhận khả dụng, hệ thống có thể thông báo cửa sổ bằng không. Bên gửi tuân thủ giới hạn đó và thăm dò để lấy thông tin cửa sổ hiện tại. Việc đọc có thể giúp cửa sổ mở lại; chỉ thăm dò không thể khắc phục ứng dụng bị chặn. Đây là các khái niệm chung, không phải số liệu đo của sản phẩm hay thời gian khôi phục cố định.

01

Bộ đệm

Data can wait in the system buffer before the application reads it.Receive bufferApp

Dữ liệu có thể chờ trong bộ đệm hệ thống trước khi ứng dụng đọc.

02

Phản hồi

The receiver advertises its limit back to the sender.Window = 0SenderReceiver

Bên nhận thông báo giới hạn của mình cho bên gửi.

03

Mở lại

Reading can free receive space; probes help obtain the current window state.Probe →← Window updateData →

Việc đọc có thể giải phóng dung lượng nhận; các gói thăm dò giúp lấy trạng thái cửa sổ hiện tại.

01 Xác định

Ghi lại đầu cuối nào thông báo cửa sổ bằng không và trong kết nối nào.

02 Đối chiếu

Đối chiếu thời điểm thay đổi cửa sổ với nhật ký đọc của ứng dụng và nhật ký tài nguyên.

03 Thử nghiệm

So sánh việc đọc liên tục và đọc có trì hoãn trong một thử nghiệm được cho phép.

Danh sách kiểm tra lựa chọn và xác minh — mở rộng
Mục kiểm tra Nội dung cần xác nhận Cách xác minh
Kết nối Đầu cuối và chiều truyền Ghi lại các cặp địa chỉ và cổng
Bên nhận Ứng dụng đang đọc So sánh nhật ký ứng dụng và trạng thái bộ đệm
Khôi phục Cửa sổ thực sự mở lại Đối chiếu các gói thăm dò, bản cập nhật và dữ liệu được truyền trở lại

Thiết bị đang trực tuyến và đèn liên kết sáng, nhưng ứng dụng gửi dường như đã tạm dừng. Bản ghi bắt gói có thể báo cửa sổ bằng không. Điều này không nhất thiết có nghĩa là cáp bị hỏng hoặc băng thông bộ chuyển mạch bằng không. Bên nhận TCP có thể đang thông báo cho đầu bên kia rằng tạm thời không còn dung lượng nhận. Hãy theo dõi đường đi từ lúc dữ liệu đến mạng, qua bộ đệm hệ thống đến khi ứng dụng đọc để hiểu nguyên nhân.

Một cổng kết nối công nghiệp gửi dữ liệu trước đó đến máy chủ có ứng dụng đọc chậm
Hình 1: Dữ liệu trước đó làm đầy bộ đệm nhận; sau đó bên nhận thông báo cửa sổ bằng không. Ứng dụng đọc dữ liệu từ bộ đệm.

Đến cổng mạng chưa phải là kết thúc hành trình

Các cổng kết nối công nghiệp, máy chủ thiết bị nối tiếp và máy tính giám sát có thể trao đổi dữ liệu bằng TCP. TCP cung cấp một luồng byte có thứ tự; ứng dụng quyết định các byte đó biểu thị bản ghi nhiệt độ, thông báo trạng thái hay lệnh. Việc Ethernet chuyển giao một khung chỉ hoàn thành một phần của đường đi.

Sau khi nhận dữ liệu TCP, hệ thống kiểm tra dữ liệu theo giao thức, đưa dữ liệu hợp lệ vào bộ đệm nhận của kết nối và chờ ứng dụng đọc. Hãy hình dung một phòng thư: bưu kiện được giao đến quầy không có nghĩa là người nhận đã mở và xử lý bưu kiện đó. Phép so sánh này phân biệt việc lưu trữ với việc tiêu thụ dữ liệu; các hệ thống thực tế duy trì số thứ tự, thông tin cửa sổ và trạng thái bộ nhớ.

Nếu ứng dụng đang chờ ghi đĩa, xử lý thông điệp trước đó hoặc không lập lịch cho luồng đọc chạy, dữ liệu có thể tích tụ. Card mạng và bộ chuyển mạch hoạt động bình thường không thể đọc các byte đó thay cho ứng dụng. Chỉ xem lưu lượng tại cổng có thể bỏ sót hoạt động xử lý phần mềm ở cuối đường đi.

Cửa sổ nhận thông báo dung lượng nào?

Tiêu đề TCP có một trường cửa sổ thông báo phạm vi dữ liệu mà bên nhận hiện sẵn sàng chấp nhận. Phạm vi này phụ thuộc vào bộ đệm và chính sách hệ thống. Nó không nhất thiết bằng bộ nhớ vật lý chưa sử dụng của thiết bị, cũng không phải dung lượng trong hàng đợi đầu ra của bộ chuyển mạch. Cửa sổ bằng không có nghĩa là hiện không có cửa sổ nhận khả dụng cho dữ liệu mới theo chiều đó.

Giả sử một cổng kết nối liên tục gửi các bản ghi thu thập dữ liệu đến máy tính giám sát. Nếu ứng dụng trên máy tính đó đọc chậm lại, hệ thống có thể giảm cửa sổ được thông báo và cuối cùng thông báo cửa sổ bằng không. Bên gửi phải tuân thủ giới hạn thay vì tiếp tục cung cấp dữ liệu mới không giới hạn. Chiều ngược lại của kết nối có trạng thái độc lập; một cửa sổ bằng không không chứng tỏ mọi trao đổi theo cả hai chiều đều đã dừng.

Công cụ bắt gói có thể hiển thị giá trị cửa sổ thô hoặc giá trị được tính có xét đến tùy chọn hệ số tỷ lệ cửa sổ. Hệ số tỷ lệ cửa sổ được thương lượng khi thiết lập kết nối và cho phép sử dụng cửa sổ nhận lớn hơn. Hãy kiểm tra quá trình bắt tay và quy ước hiển thị trước khi diễn giải các giá trị khác không. Áp dụng hệ số tỷ lệ cho số không vẫn cho kết quả bằng không; không cần tính toán công thức để hiểu việc tạm dừng.

Vì sao cần phân biệt xác nhận với kích thước cửa sổ?

Số xác nhận TCP biểu thị số thứ tự byte tiếp theo mà bên nhận mong đợi, cho phép bên gửi theo dõi dữ liệu liên tiếp đã được xác nhận. Cửa sổ biểu thị phạm vi dữ liệu mà bên nhận sẵn sàng chấp nhận tiếp theo. Một giá trị cho biết dữ liệu trước đó đã được nhận đến đâu; giá trị còn lại liên quan đến việc nhận thêm dữ liệu. Chúng xuất hiện cùng nhau nhưng phục vụ các mục đích khác nhau.

Hệ thống nhận có thể xác nhận dữ liệu đã chấp nhận đồng thời thông báo cửa sổ bằng không. Các byte đó có thể nằm trong bộ đệm mà chưa được ứng dụng đọc. Xác nhận TCP cũng không chứng tỏ việc xử lý nghiệp vụ đã thành công: để biết bản ghi cơ sở dữ liệu đã được ghi nhận chính thức hay lệnh đã được chấp nhận, cần có phản hồi ở cấp ứng dụng.

Tương tự, số xác nhận không thay đổi không lập tức chứng minh có mất gói. Hãy xem xét đồng thời chiều truyền, thay đổi cửa sổ, nội dung được truyền và thời điểm. Việc truyền lại, xác nhận trùng lặp và cửa sổ bằng không có thể xuất hiện trong cùng một sự cố, nhưng các nhãn màu của công cụ bắt gói không phải là những chẩn đoán độc lập.

Các trường xác nhận và cửa sổ TCP phân biệt tiến độ nhận với phạm vi nhận được thông báo
Hình 2: Xác nhận chỉ đến byte tiếp theo được mong đợi; cửa sổ liên quan đến việc nhận thêm dữ liệu. Tiêu đề không được vẽ theo tỷ lệ.

Vì sao cần thăm dò sau khi cửa sổ bằng không?

Khi ứng dụng nhận đọc trở lại, hệ thống có thể thông báo một cửa sổ khả dụng. Bản cập nhật đó có thể bị mất trên đường truyền. Nếu bên gửi cứ im lặng chờ mãi trong khi bên nhận cho rằng mình đã gửi bản cập nhật, cả hai có thể chờ nhau. TCP quy định việc thăm dò cửa sổ bằng không để lấy lại trạng thái cửa sổ hiện tại của đầu bên kia.

Bên gửi lập lịch thăm dò theo yêu cầu của giao thức và cách triển khai; bên nhận phản hồi xác nhận kèm trạng thái hiện tại. Một gói thăm dò không có nghĩa là thông lượng ứng dụng đã được khôi phục và không chứng minh ứng dụng đã bắt đầu đọc. Khi cửa sổ được thông báo vẫn bằng không, việc truyền dữ liệu mới thông thường vẫn bị hạn chế. Khoảng thời gian giữa các lần thăm dò và việc quản lý tài nguyên phụ thuộc vào cách triển khai, vì vậy một bản ghi bắt gói không xác lập thông số thời gian chung cho mọi sản phẩm.

Việc thăm dò không thể tự động giải phóng một ứng dụng không bao giờ đọc. TCP quy định hành vi duy trì kết nối và thăm dò, trong khi chính sách hệ điều hành, thời gian chờ của ứng dụng và giới hạn tài nguyên thiết bị cũng ảnh hưởng đến kết quả. Không được cam kết rằng kết nối có cửa sổ bằng không sẽ không bao giờ đóng hoặc luôn khôi phục sau một khoảng trễ cố định.

Điều này khác gì với khung Ethernet PAUSE?

Cửa sổ nhận TCP là phản hồi ở tầng giao vận giữa các đầu cuối của một kết nối. Khung Ethernet PAUSE yêu cầu tạm dừng truyền trên một liên kết liền kề. Tắc nghẽn trong hàng đợi bộ chuyển mạch và ứng dụng trên máy chủ đọc chậm đều có thể làm lưu lượng chậm lại, nhưng vị trí, bên nhận phản hồi và các trường có thể quan sát của chúng khác nhau.

Bộ chuyển mạch có băng thông cao hơn không thể bảo đảm khôi phục cho một ứng dụng không đọc socket của mình. Ngược lại, cửa sổ nhận bình thường của máy chủ không chứng minh đường truyền trung gian không bị tắc nghẽn. Hãy kiểm tra lỗi giao diện, các trường hợp loại bỏ gói và tải trên đường truyền tách biệt với bộ đệm máy chủ, tải tiến trình và nhật ký ứng dụng.

Đối với máy chủ thiết bị nối tiếp, cần phân biệt tốc độ phía nối tiếp, kết nối TCP và bộ đệm bên trong. Việc các byte nối tiếp có tiếp tục đến trong thời gian mạng bị hạn chế hay không, cũng như điều gì xảy ra khi bộ đệm đầy, phụ thuộc vào model thực tế, firmware và cấu hình điều khiển luồng. Chỉ riêng việc hỗ trợ TCP không chứng tỏ thiết bị có thể xử lý không mất dữ liệu đối với đầu vào nối tiếp không giới hạn.

Gói thăm dò cửa sổ bằng không và việc mở lại cửa sổ sau khi ứng dụng đọc
Hình 3: Một trình tự khôi phục có thể xảy ra, không phải cam kết về thời gian cố định. Việc thăm dò không thể khắc phục ứng dụng bị chặn.

Thu thập bằng chứng giải thích sự cố

Trước tiên, xác định kết nối và chiều truyền thông báo cửa sổ bằng không, ghi lại địa chỉ đầu cuối, cổng, phiên bản thiết bị và ứng dụng. Kiểm tra quá trình bắt tay và lưu lượng trước và sau sự cố. So sánh cửa sổ nhận, số xác nhận, gói thăm dò và việc mở lại cửa sổ trên cùng một dòng thời gian. Lưu giữ bản ghi bắt gói thay vì chỉ chụp màn hình nhãn Zero Window.

Đối chiếu dòng thời gian đó với nhật ký ứng dụng bên nhận. Ứng dụng có đang đọc không? Nó có đang chờ đĩa, thao tác cơ sở dữ liệu hoặc một luồng khác không? Tài nguyên hệ thống có bất thường không? Nếu bên gửi tiếp tục tạo dữ liệu, cũng cần kiểm tra hàng đợi và thời gian chờ nghiệp vụ của bên gửi. Chuyển lượng dữ liệu tồn đọng sang bên gửi không giải quyết được vấn đề xử lý gốc rễ.

Trong môi trường được cho phép, các thử nghiệm có kiểm soát với lượng dữ liệu nhỏ có thể so sánh việc đọc liên tục với việc tạm thời trì hoãn đọc để xem cửa sổ được thông báo có thay đổi tương ứng hay không. Không được tạm dừng các quy trình sản xuất quan trọng, tùy tiện tăng bộ đệm hoặc vô hiệu hóa thời gian chờ chỉ để loại bỏ một nhãn chẩn đoán. Bộ đệm có thể trì hoãn thời điểm lượng dữ liệu tồn đọng trở nên rõ ràng; năng lực xử lý duy trì không đủ vẫn cần được xem xét.

Xác định đúng giai đoạn của từng vấn đề

Cửa sổ bằng không trực tiếp nhất cho biết giới hạn nhận mà bên nhận thông báo. Nó định hướng điều tra nhưng không chứng minh nguyên nhân khiến ứng dụng chậm lại. Hãy liên hệ bốn giai đoạn: dữ liệu đến cổng mạng, lưu vào bộ đệm TCP, ứng dụng đọc và xử lý nghiệp vụ. Việc phân biệt này giúp xác định cần kiểm tra đường truyền mạng, tài nguyên hệ thống hay logic ứng dụng.

Thông tin đã công bố của FCTELE về bộ chuyển mạch công nghiệp có quản lý bao gồm truy nhập và chuyển tiếp Ethernet công nghiệp. Hãy kiểm tra tài liệu sản phẩm liên quan để biết các giao diện, chức năng quản lý và khả năng thực tế. Hướng dẫn này không trình bày hành vi TCP chung như thiết kế bên trong của một model cụ thể, cũng không tự đưa ra dung lượng bộ đệm hay thời gian khôi phục. Việc lựa chọn thiết bị và thực hiện biện pháp khắc phục cần dựa trên chi tiết giao thức của đầu cuối, tài liệu sản phẩm và xác minh tại hiện trường.

Tài liệu tham khảo

RFC 9293: thăm dò cửa sổ bằng không;Microsoft: cửa sổ TCP và hệ số tỷ lệ;Giao diện TCP và cơ chế bộ đệm trên Linux;Thông tin bộ chuyển mạch công nghiệp có quản lý FCTELE. Hình minh họa chung, không phải số liệu đo của sản phẩm.

Dịch từ bài viết kỹ thuật bằng tiếng Trung: Đọc bài viết gốc bằng tiếng Trung.

Câu hỏi thường gặp

Cửa sổ bằng không có nghĩa là cáp bị hỏng không?

Không. Đây là giới hạn nhận do một đầu cuối TCP thông báo; hãy kiểm tra việc đọc của ứng dụng và trạng thái hệ thống, đồng thời kiểm tra đường truyền.

Xác nhận TCP có chứng minh việc xử lý nghiệp vụ đã hoàn tất không?

Không. Hệ thống có thể đã chấp nhận các byte mà ứng dụng chưa tiêu thụ hoặc xử lý.

Việc thăm dò có thể khắc phục ứng dụng bị chặn không?

Không. Các gói thăm dò lấy thông tin cửa sổ hiện tại. Tình trạng bộ phận đọc bị chặn kéo dài cần được điều tra riêng.

Phạm vi và tài liệu đọc thêm

Các khái niệm TCP chung, không phải mạch của một sản phẩm cụ thể hay thông số thời gian đo được.

Điều khiển luồng Ethernet và khung PAUSE · Chuyển tiếp và bảo trì bộ chuyển mạch

Chia sẻ bài viết này