Вопрос по – Порядковый номер TCP

25

Я пытаюсь понять, как генерируются порядковые номера заголовка TCP.

В некоторых местах я читал, что это «индекс первого байта в пакете» (ссылка здесь), на некоторых других сайтах это случайное сгенерированное 32-битное число, которое затем увеличивается.

Я действительно не знаю, что есть что, поэтому вот несколько вопросов:

How is the initial sequence number generated ? (rfc number if there is one) How is it incremented ? How is the secret key generated ?

Я читал некоторые из rfcRFC 6528, RFC 793 а такжеRFC 1948 но я не могу понять, какой из них фактически реализован. Я прочитал о & quot; std & quot; статус, но все еще ...

Заранее спасибо !

Ну, нет, это скорее "теоретический" Сетевой вопрос. m_vdbeek
О, прости. Я имел в виду, когда вы просматриваете в Интернете (HTTP / TCP / IP), что ваш компьютер использует для генерации этих порядковых номеров? Как это работает ? m_vdbeek
было бы уместно, если вы хотите самостоятельно декодировать поток TCP. Alnitak
Так что это вообще не вопрос программирования? Wooble
Какая реализация? О каком источнике этой реализации вы конкретно спрашиваете? Wooble

Ваш Ответ

3   ответа
34

й номер для отправляемых пакетов и отправляет этот номер в пакете SYN, который он отправляет как часть установления соединения.

Здесь нетrequirement для каждого конца следовать определенной процедуре выбора начального порядкового номера. Операционная система может свободно использовать любой механизм, который ей нравится, но обычно лучше, если она выбирает случайное число, поскольку это более безопасно.

С этой начальной точки каждый пакет, отправленный любым концом, содержит два порядковых номера - один для указания места в потоке пакета и порядковый номер ACK, который обозначает количество байтов.received, Оба числа смещены на начальный порядковый номер.

Прочитайте все об этом вВикипедия конечно - ищите «порядковый номер» на этой странице, чтобы получить все кровавые подробности.

Error: User Rate Limit ExceededanyError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded m_vdbeek
2

производных от Беркли), когда система инициализируется, порядковый номер начальной отправки инициализируется равным 1. Эта практика нарушает требования к хосту RFC. (Комментарий в коде подтверждает, что это неправильно.) Затем эта переменная увеличивается на 64 000 каждые полсекунды и будет возвращаться к 0 примерно каждые 9,5 часов. (Это соответствует счетчику, который увеличивается каждые 8 микросекунд, а не каждые 4 микросекунды.) Кроме того, каждый раз, когда устанавливается соединение, эта переменная увеличивается на 64 000.

1

вы можете видеть syn как 0 (потому что он использует относительное отображение), однако вы можете сделать так, чтобы он отображал оригинальный номер seq, выполнив Edit - & gt; Настройки. и отмена проверки относительных порядковых номеров и масштабирования окна в соответствии с настройками протокола TCP. Следующий порядковый номер получит приращение на основе полученного номера ACK (a) (становится + 1). ACK увеличивается в зависимости от полезной нагрузки len (l), которую он получил (становится l + 1). Обратите внимание, что данные / полезная нагрузка не отправляются, когда флаг SYN / FIN активен (делает увеличение ACK только на единицу во время SYN и FIN).

Похожие вопросы