2012-02-13 3 views
5

Từ sự hiểu biết của tôi về cờ đặt lại TCP (RST) được đặt bất cứ khi nào một phân đoạn nhận được không dành cho kết nối hiện tại và kết quả là hủy bỏ phiên TCP hiện tại. Nhưng việc chụp hình wireshark dán dưới đây dường như không tuân theo lý thuyết này. Về cơ bản, A đã khởi tạo RESET (frame # 466) cố gắng truyền lại các khung TCP qua cùng một phiên TCP và cũng tiếp tục đáp ứng bất kỳ yêu cầu kết nối mới [SYN] nào từ cuối B với [RST, ACK] và hành vi lặp lại chính nó trong 5 lần và 3 lần bắt tay lại thành công chỉ trong lần thử thứ 6 (frame # 486).Truyền lại TCP tiếp tục ngay cả sau khi cờ RST đặt lại xuất hiện

464 04:35.1 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105    
465 04:35.2 enpc > 50000 [ACK] Seq=7454 Ack=31999 Win=32127 Len=0    
466 04:35.2 50000 > enpc [RST] Seq=31999 Win=0 Len=0     
467 04:35.4 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105     
468 04:36.1 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105     
469 04:37.5 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105     
470 04:40.3 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105     
471 04:45.9 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105     
472 04:57.1 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105     
473 05:17.1 fg-fps > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1     
474 05:17.1 50000 > fg-fps [RST, ACK] Seq=1 Ack=1 Win=0 Len=0    
475 05:17.5 fg-fps > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1     
476 05:17.5 50000 > fg-fps [RST, ACK] Seq=1 Ack=1 Win=0 Len=0    
477 05:18.0 fg-fps > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1     
478 05:18.0 50000 > fg-fps [RST, ACK] Seq=1 Ack=1 Win=0 Len=0    
479 05:19.5 [TCP Retransmission] 50000 > enpc [PSH, ACK] Seq=31894 Ack=7454 Win=5345 Len=105     
480 05:23.2 fg-gip > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1     
481 05:23.2 50000 > fg-gip [RST, ACK] Seq=1 Ack=1 Win=0 Len=0    
482 05:23.7 fg-gip > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1     
483 05:23.7 50000 > fg-gip [RST, ACK] Seq=1 Ack=1 Win=0 Len=0    
484 05:24.2 fg-gip > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1     
485 05:24.2 50000 > fg-gip [RST, ACK] Seq=1 Ack=1 Win=0 Len=0    
486 05:29.7 dyniplookup > 50000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM=1    
487 05:29.7 50000 > dyniplookup [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=2    
488 05:29.7 dyniplookup > 50000 [ACK] Seq=1 Ack=1 Win=65536 Len=0    
489 05:29.7 dyniplookup > 50000 [PSH, ACK] Seq=1 Ack=1 Win=65536 Len=105     
490 05:29.7 50000 > dyniplookup [ACK] Seq=1 Ack=106 Win=5840 Len=0    
491 05:29.7 dyniplookup > 50000 [PSH, ACK] Seq=106 Ack=1 Win=65536 Len=105    

Câu hỏi của tôi:

Tại sao kết thúc A tiếp tục tái truyền các gói dữ liệu qua kết nối nơi RST được tạo ra từ cuối riêng của nó?

+1

Có lẽ người khởi xướng đã gửi ACK ban đầu không mong đợi ACK cho gói khác (số thứ tự khác nhau), vì vậy nó sẽ gửi RST và sau đó gửi lại gói trong khoảng thời gian phát triển cho đến khi người nhận gửi lại đúng thông điệp. không, do đó, người khởi xướng gửi RST một lần nữa và một lần nữa). Có vẻ như một sự cố trong kênh, có thể là cáp bị lỗi hoặc sự khác biệt trong chế độ giao diện (half-duplex so với full-duplex, v.v.) – Alfabravo

+0

@Alfabravo: Tại sao nó lại cố gắng truyền lại gói khi kết nối được chuyển sang trạng thái ĐÃ ĐÓNG CỬA một lần RST được gửi? – amit

+0

RST không có nghĩa là đóng cửa. RST có nghĩa là "hãy thử lại lần nữa". Đối với một kết nối đóng, trình tự là FIN->, <-ACK, <-FIN, ACK->. Và thường, RST có nghĩa là "chúng ta hãy chờ một thời gian ngẫu nhiên (tăng) cho mỗi lần thử mới để tránh va chạm và các thứ". – Alfabravo

Trả lời

3

Có nhiều lý do khiến RST có thể được gửi. Cờ đặt lại được sử dụng khi phân đoạn TCP đến không dành cho kết nối hiện tại hoặc cổng nghe. Ví dụ, nếu cổng TCP bị đóng, ngăn xếp TCP trên hệ thống sẽ phản hồi bằng RST.

Thông thường khi một hệ thống gửi thiết lập lại TCP, nó sẽ có cờ ack cũng được đặt vì nó xác nhận một nỗ lực kết nối. Trong trường hợp của bạn, không có cờ ack, mà (từ bộ nhớ) theo RFC chỉ được thực hiện khi không có kết nối được thiết lập, trong trường hợp của bạn, điều này sẽ gợi ý cho tôi rằng đó là tường lửa hoặc thiết bị trung gian (không phải là một phần của kết nối TCP) gửi thiết lập lại. Do đó, máy chủ A sẽ hợp pháp sau đó vẫn nghĩ rằng kết nối vẫn còn sống.

Khung 467-472 là hành vi truyền lại TCP chuẩn (từ hệ thống A) với thời gian giữa các lần thử kết nối gấp đôi với máy chủ cuối cùng xuất hiện để từ bỏ sau lần thử cuối cùng trong khung 472. Các khung này là truyền lại khung 464, sẽ xuất hiện để chỉ ra rằng khung 465 đã không nhận được bởi hệ thống B. Tôi đoán bạn đã chụp trên hệ thống B?

tôi tin rằng hệ thống A chỉ chuyển đến ĐÓNG CỬA sau khung 473 đã được gửi đi, mà sẽ giải thích lý do tại sao sau đó chúng ta thấy ba-way handshake bắt đầu từ hệ thống B.

Từ dấu vết của bạn, thật khó để nói nhiều hơn mà không nhiều kiến ​​thức về mạng hơn.

HTH!