Tại sao tôi thấy gói RST, ACK thay vì gói RST?


42

Nhìn vào Wireshark, tôi thường thấy các luồng TCP kết thúc bằng gói RST, ACK thay vì gói RST. Bất cứ ai biết lý do tại sao điều này?

Một ví dụ về những gì tôi thấy:

SYN SYN, ACK ... dữ liệu ... RST, ACK

Wireshark không chọn gói RST trước gói RST, ACK.


2
Tại sao bạn nghĩ nên có một phân khúc RST trước RST / ACK? Có lẽ bạn có thể cung cấp một ví dụ về dấu vết gói như vậy?
Gerben

ACK có cõng RST trong cùng một gói không?
generalnetworkerror

Có câu trả lời nào giúp bạn không? nếu vậy, bạn nên chấp nhận câu trả lời để câu hỏi không xuất hiện mãi mãi, tìm kiếm câu trả lời. Ngoài ra, bạn có thể cung cấp và chấp nhận câu trả lời của riêng bạn.
Ron Maupin

Tôi ACK u đã gửi yêu cầu \ kết nối dữ liệu Kết nối cuối = RST
motoko

Câu trả lời:


55

RST / ACK không phải là sự thừa nhận của RST, giống như một SYN / ACK không chính xác là sự thừa nhận của một SYN. Thiết lập TCP thực sự là một quá trình bốn chiều: Khởi tạo máy chủ gửi một SYN đến máy chủ nhận, nó sẽ gửi một ACK cho SYN đó. Máy chủ nhận sẽ gửi một SYN đến máy chủ khởi tạo, nó sẽ gửi lại ACK. Điều này thiết lập giao tiếp nhà nước.

SYN --> 
    <-- ACK
    <-- SYN
ACK -->

Để làm cho việc này hiệu quả hơn, máy chủ nhận có thể ACK SYN và gửi SYN của chính nó trong cùng một gói, tạo ra quy trình ba chiều mà chúng ta thường thấy.

SYN -->
    <-- SYN/ACK
ACK -->

Trong trường hợp RST / ACK, Thiết bị sẽ xác nhận bất kỳ dữ liệu nào được gửi trong (các) gói trước đó trong chuỗi bằng ACK và sau đó thông báo cho người gửi rằng kết nối đã đóng với RST. Thiết bị chỉ đơn giản là kết hợp hai gói thành một, giống như một SYN / ACK. RST / ACK thường không phải là phản hồi bình thường khi đóng phiên TCP, nhưng nó cũng không nhất thiết là vấn đề.


4
Một kịch bản ví dụ về gửi RST / ACK là khi máy chủ nhận không nghe trên cổng TCP đích.
Indika K

Vâng thực sự. Tôi đã từng thử mô phỏng một cuộc tấn công DDoS (vì mục đích giáo dục;)) từ máy A sang máy B trên cổng 80. Nhưng cổng 80 của B không mở. Vì vậy, tôi có thể thấy máy B gửi rất nhiều RST ACKphản hồi đến địa chỉ nguồn giả mạo.
smwikipedia

Phản ứng RST / ACK có thể phụ thuộc vào nội dung gói không? Tức là máy chủ nhận được gói và vì nội dung gói phù hợp với một số điều kiện, phiên đã bị đóng.
skooog

1

Sau khi kết nối được thiết lập, tất cả các gói cần phải được đặt ACK và khớp với số thứ tự của các gói đã nhận để vận chuyển / bảo mật đáng tin cậy. RST không có ACK sẽ không được chấp nhận. Khi một bên gửi RST, ổ cắm được đóng ngay lập tức và bên nhận cũng đóng ổ cắm ngay sau khi nhận được RST hợp lệ. Nó không cần phải và không thể được thừa nhận.

sau khi bắt tay TCP

A ---> B Syn = x, Ack = y, len = z, Cờ ACK

B ---> A Syn = y, Ack = x + z, len = o, Cờ ACK

A ---> B Syn = x + z, Ack = y + o, len = p, Cờ ACK

B ---> A Syn = y + o, ACK = x + z + p, len = q, RST, Cờ ACK

B đóng ổ cắm sau khi nó gửi gói cuối cùng và A đóng ổ cắm sau khi nhận được.

(không xem xét cửa sổ TCP ở đây hoặc có thể có nhiều gói hơn từ một đầu trước khi xác nhận)

Cờ ACK, số xác nhận và quy trình xác nhận có liên quan nhưng không giống nhau.

Mỗi RFC793

RFC793

Số xác nhận: 32 bit

If the ACK control bit is set this field contains the value of the
next sequence number the sender of the segment is expecting to
receive.  Once a connection is established this is always sent.

Đặt lại xử lý

Trong tất cả các trạng thái ngoại trừ SYN-SENT, tất cả các phân đoạn đặt lại (RST) được xác thực bằng cách kiểm tra các trường SEQ của chúng. Thiết lập lại là hợp lệ nếu số thứ tự của nó là trong cửa sổ. Ở trạng thái SYN-SENT (RST nhận được khi phản hồi với SYN ban đầu), RST có thể được chấp nhận nếu trường ACK thừa nhận SYN.

Người nhận RST trước tiên xác nhận nó, sau đó thay đổi trạng thái. Nếu người nhận ở trạng thái LISTEN, nó sẽ bỏ qua nó. Nếu người nhận ở trạng thái TIẾP NHẬN và trước đó đã ở trạng thái LISTEN, thì người nhận sẽ trở về trạng thái LISTEN, nếu không, người nhận sẽ hủy kết nối và chuyển sang trạng thái ĐÓNG. Nếu người nhận ở bất kỳ trạng thái nào khác, nó sẽ hủy kết nối và thông báo cho người dùng và chuyển sang trạng thái ĐÓNG.

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.