Có vẻ như một phần của mạng không cho phép các khung Ethernet lớn hơn 1510 byte (không bao gồm tổng kiểm tra), khiến MTU được phép là 1496 byte thay vì 1500 byte tiêu chuẩn và do đó, các khung ban đầu chứa tải trọng 1500 byte sẽ bị loại bỏ.
Lý do chính xác khiến MTU giảm không liên quan đến câu hỏi này. Câu hỏi đặt ra ở đây là tại sao Windows Server 2019 có thể khôi phục từ các gói bị mất này trong một số kết nối nhưng không phải những người khác. Theo tôi hiểu, những gì tôi thấy ở đây dường như là "phát hiện lỗ đen PMTU", nhưng tại sao phát hiện lỗ đen PMTU xảy ra đối với một số kết nối nhưng không xảy ra đối với những kết nối khác?
Máy khách 10.246.54.143 và 10.246.54.157 đều nằm trong cùng một phân đoạn mạng LAN tại một địa điểm từ xa, nơi có sự cố MTU. Cả hai đều bắt đầu kết nối với máy chủ 10.8.4.45.
Trong cả hai trường hợp, bắt tay TCP ban đầu đều ổn, sau đó sự cố MTU xảy ra khi máy chủ gửi một vài gói lớn.
Khi điều này xảy ra trên kết nối từ 10.246.54.157, sau một vài lần truyền lại các gói lớn, máy chủ dường như bỏ cuộc và thay vào đó thử tải trọng IP chỉ 576 byte, hoạt động và mọi thứ tiếp tục từ đó:
(thật thú vị, các gói lớn được gửi bởi khách hàng đã đi qua)
Sau đó, khi 10.246.54.143 cố gắng kết nối, các gói lớn sẽ bị hủy và quá trình truyền lại diễn ra, nhưng trong trường hợp này, máy chủ không bao giờ thử với kích thước gói nhỏ hơn và do đó, kết nối không bao giờ có thể hình thành đầy đủ:
Ứng dụng máy chủ (nghe trên cổng 5002) giống nhau trong cả hai trường hợp. Nó được viết bằng Java.
Tại sao máy chủ không bao giờ thử với các gói nhỏ hơn cho kết nối từ 10.246.54.143?
Tất cả đều được định tuyến trên cùng một giao diện và bộ định tuyến ngoại trừ bit gần máy khách nhất, nơi chúng được gắn vào các công tắc khác nhau.