Kết nối lại được thiết lập lại bởi mạng ngang hàng có nghĩa là gì?


648

Ý nghĩa của lỗi "thiết lập lại kết nối bằng ngang hàng" trên kết nối TCP là gì? Đây có phải là một lỗi nghiêm trọng hay chỉ là một thông báo hoặc liên quan đến lỗi mạng?

Câu trả lời:


771

Nó gây tử vong. Máy chủ từ xa đã gửi cho bạn một gói RST, cho biết kết nối bị ngắt ngay lập tức, thay vì bắt tay thông thường. Điều này bỏ qua quá trình chuyển trạng thái nửa kín bình thường. Tôi thích mô tả này :

"Thiết lập lại kết nối bằng ngang hàng" là TCP / IP tương đương với việc đập điện thoại trở lại trên móc. Đó là lịch sự hơn là không trả lời, để lại một treo. Nhưng đó không phải là FIN-ACK được mong đợi của converseur TCP / IP thực sự lịch sự.


49
Tại sao nó được gắn nhãn "thiết lập lại kết nối bởi ngang hàng ? Có vẻ như nó phải là" thiết lập lại kết nối bởi máy chủ "hoặc" thiết lập lại kết nối bởi máy chủ "
Robert

27
@Robert Bởi vì đó là nơi thiết lập lại đến từ. Các đồng nghiệp đã gửi một gói RST.
Hầu tước Lorne

106
... Robert, mối quan tâm của bạn không có ý nghĩa với tôi. Peer hoàn toàn chỉ chung chung hơn thế. Trong mô hình máy khách-máy chủ thông thường, máy chủ có thể dễ dàng nhận được thông báo này từ "máy khách". Máy ban đầu yêu cầu kết nối có nhiều năng lượng để gửi thông báo này. Ở cấp độ TCP, nó trông giống hệt nhau khi kết nối đang diễn ra. Hai máy, khi giao tiếp, chỉ là đồng nghiệp.
codetaku

9
Gói này có thể được gửi bởi một thiết bị khác ở giữa như bộ định tuyến?
Arnold Roa

3
Nó không thể được gọi là "thiết lập lại kết nối bởi máy chủ" bởi vì nó có thể được gửi bởi máy khách hoặc máy chủ. Nó không thể được "bỏ qua". Nếu một máy khách nhận được lỗi này, điều này có nghĩa là kết nối TCP không còn mở trong máy chủ, ví dụ như do máy chủ bị sập và được khởi động lại.
Julian Overmann 17/07/17

193

Điều này có nghĩa là RST TCP đã được nhận và kết nối hiện đã bị đóng. Điều này xảy ra khi một gói được gửi từ đầu kết nối của bạn nhưng đầu kia không nhận ra kết nối; nó sẽ gửi lại một gói với bit RST được thiết lập để buộc kết nối.

Điều này có thể xảy ra nếu phía bên kia gặp sự cố và sau đó quay trở lại hoặc nếu nó gọi close()vào ổ cắm trong khi có dữ liệu từ bạn đang chuyển và là một dấu hiệu cho bạn biết rằng một số dữ liệu mà bạn đã gửi trước đó có thể không được nhận.

Tùy thuộc vào bạn cho dù đó là một lỗi; nếu thông tin bạn gửi chỉ vì lợi ích của máy khách từ xa thì có thể không có vấn đề gì về việc mất dữ liệu cuối cùng. Tuy nhiên, bạn nên đóng ổ cắm và giải phóng mọi tài nguyên khác liên quan đến kết nối.


11
Nếu bạn đặt tùy chọn ổ cắm SO_Linger thành 0 khi mở ổ cắm mới, sau đó đóng bình thường, bit RST sẽ được đặt. Vì vậy, tất cả kết nối sẽ kết thúc với một thiết lập lại. Đừng thử nó ở nhà, nó chỉ gây phiền nhiễu. stackoverflow.com/questions/3757289
Chris Huang-Leaver

1
Làm thế nào để khắc phục vấn đề này sau đó, chúng ta có cần khởi động lại cả điều khiển từ xa và máy chủ không?
dùng2225190

3
@ user2225190 Bạn cần kết nối lại máy khách, nhưng trước tiên bạn cần kiểm tra phần mềm của mình để đảm bảo rằng nó không phải do lỗi giao thức ứng dụng, tức là đóng kết nối mà đầu kia vẫn đang ghi.
Hầu tước Lorne

1
Cám ơn bạn đã góp ý. Nó được sử dụng để làm việc trong hai tháng. Tôi cũng đang thử nó từ một dòng lệnh, nhưng vẫn gặp lỗi này. Tôi thử "sftp user @ machine". Lỗi không nhất quán.
dùng2225190
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.