Чому я бачу пакет RST, ACK замість пакета RST?


42

Дивлячись у Wireshark, я часто бачу, як потоки TCP закінчуються пакетом RST, ACK замість пакетом RST. Хтось знає, чому це?

Приклад того, що я бачу:

SYN SYN, ACK ... дані ... RST, ACK

Wireshark не приймає пакет RST перед пакетом RST, ACK.


2
Чому, на вашу думку, перед RST / ACK має бути сегмент RST? Може, ви могли б навести приклад такого сліду пакету?
Гербен

Чи ACK piggyback RST у тому ж пакеті?
generalnetworkerror

Чи допомогла вам якась відповідь? якщо так, то слід прийняти відповідь, щоб питання не з’являлося вічно, шукаючи відповідь. Крім того, ви можете надати та прийняти власну відповідь.
Рон Моупін

Я ACK u відправлений запит \ кінцеве з'єднання даних Кінцеве з'єднання = RST
motoko

Відповіді:


55

RST / ACK не є підтвердженням RST, так само як SYN / ACK не є точно підтвердженням SYN. Встановлення TCP насправді є чотиристороннім процесом: ініціюючий хост надсилає SYN приймаючому хосту, який надсилає ACK для цього SYN. Приймаючий хост посилає SYN до ініціюючого хоста, який надсилає ACK назад. Це налагоджує державне спілкування.

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

Щоб зробити це більш ефективним, приймаючий хост може АКК SYN і надсилати свій власний SYN у тому ж пакеті, створюючи тристоронній процес, який ми звикли бачити.

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

У випадку з RST / ACK, Пристрій розпізнає будь-які дані, що були надіслані в попередньому пакеті (послідовностях) в послідовності з ACK, а потім повідомляє відправника про те, що з'єднання перервано з RST. Пристрій просто поєднує два пакети в один, як і SYN / ACK. RST / ACK зазвичай не є нормальною реакцією на закриття сеансу TCP, але це не обов'язково вказує на проблему.


4
Приклад сценарію надсилання RST / ACK - це коли приймаючий хост не слухає на TCP-порту призначення.
Indika K

Так, справді. Одного разу я намагався імітувати DDoS-атаку (з навчальною метою;)) з машини A на машину B на порту 80. Але порт 80-х не відкритий. Тож я можу бачити, як машина B надсилає багато RST ACKвідповідей на підроблену адресу джерела.
smwikipedia

Чи може відповідь RST / ACK залежати від вмісту пакету? Тобто сервер отримує пакет, і оскільки вміст пакету відповідав якійсь умові, сеанс був закритий.
skooog

1

Після встановлення з'єднання для всіх пакетів потрібно встановити ACK і відповідати порядковому номеру отриманих пакетів для надійного транспорту / безпеки. RST без ACK не приймається. Коли одна сторона надсилає RST, розетка негайно закривається, а приймальна сторона також закриває гніздо відразу після отримання дійсного RST. Це не потрібно і не може бути визнано.

після рукостискання TCP

A ---> B Syn = x, Ack = y, len = z, Прапор ACK

B ---> A Syn = y, Ack = x + z, len = o, прапор ACK

A ---> B Syn = x + z, Ack = y + o, len = p, прапор ACK

B ---> A Syn = y + o, ACK = x + z + p, len = q, RST, прапор ACK

B закриває сокет після того, як він надсилає останній пакет, а A закриває сокет після його отримання.

(не враховуючи вікно TCP тут, або може бути більше пакетів з одного кінця перед присвоєнням)

Прапор ACK, номер підтвердження та процедура підтвердження пов'язані, але не одне і те ж.

За RFC793

RFC793

Номер підтвердження: 32 біта

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.

Скинути обробку

У всіх станах, крім SYN-SENT, всі сегменти скидання (RST) перевіряються, перевіряючи свої SEQ-поля. Скидання дійсне, якщо його порядковий номер знаходиться у вікні. У стані SYN-SENT (RST, отриманий у відповідь на початковий SYN), RST є прийнятним, якщо поле ACK визнає SYN.

Приймач RST спочатку перевіряє його, а потім змінює стан. Якщо приймач знаходився в стані LISTEN, він ігнорує його. Якщо приймач перебував у стані SYN-RECEIVED і раніше був у стані LISTEN, то приймач повертається у стан LISTEN, інакше приймач перериває з'єднання та переходить у стан закритого типу. Якщо одержувач знаходився в будь-якому іншому стані, він припиняє з'єднання та повідомляє користувача та переходить у стан ЗАКРИТО.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.