Подробности пакета TCP RST
Почему первый пакет TCP не нуждается в подтверждении? Это потому, что отправитель RST будет продолжать отправлять RSTs каждый раз, когда он получает другой пакет с другой стороны?
на связанной заметке, Как может номер подтверждения в действительном первом пакете Быть 0?
3 ответов
на связанной заметке, Как может номер подтверждения в первом пакете быть 0?
поскольку сегмент с первым битом должен завершить соединение, не более того. Квитирования имеет смысл только тогда, когда соединение установлено и бит ACK установлен в индустрии. Получатель первого сегмента также должен рассмотреть возможность того, что клиент протокола приложения на другом конце был внезапно прерван и не имел возможность обработать неподтвержденные данные, которые были отправлены ему.
посмотреть RFC 793, стр. 15:
Acknowledgment Number: 32 bits
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.
TCP RST packet-это удаленная сторона, сообщающая вам, что соединение, на которое отправляется предыдущий TCP-пакет, не распознается, возможно, соединение закрыто, возможно, порт не открыт, и что-то вроде этого.
вот мое мнение, так как соединение больше не является действительным, нет необходимости отвечать ACK. И поскольку удаленный узел не знает соединения, имеет смысл, что ACK в первом пакете равен 0.
проверить это: http://en.wikipedia.org/wiki/TCP_reset_attack
TCP RST означает, что соединение недопустимо. Т. е. на удаленной стороне нет связанного сеанса. Этот пакет обычно отправляется, когда порт, который вы пытаетесь достичь, закрыт, как я знаю.
TCP FIN-это то, что отправляется, когда соединение собирается закрыть, и там вам нужно подтвердить.