Обертывается ли порядковый номер заголовков пакетов TCP?

Мне было интересно, так как порядковый номер в поле заголовка TCP выбирается случайным образом во время квитирования и постепенно увеличивается по мере обмена пакетами, что происходит после 2^32 - initial_seq_no передач?
Обертывается ли порядковый номер вокруг и становится 0 или начальное значение повторно используется (или новое соединение инициализируется с того места, где остановилось предыдущее)?

30
задан Sebi
04.04.2023 6:55 Количество просмотров материала 3524
Распечатать страницу

3 ответа

он обтекает будет 0. По словам RFC 793:

важно помнить, что фактическое пространство порядковых номеров конечное, хотя и очень большая. Это пространство колеблется от 0 до 2**32 - 1. Поскольку пространство конечно, вся арифметика имеет дело с последовательностью цифры должны выполняться по модулю 2**32. Эта арифметика без знака сохраняет отношение порядковых номеров по мере того как они задействуют от 2**32 - 1 снова 0. Есть некоторые тонкости в компьютерном модуле арифметика, поэтому следует проявлять большую осторожность при программировании сравнение этих значений. Символ "=<" означает "меньше или равно" (по модулю 2**32).

19
отвечен jcbermu 2023-04-05 14:43

означает порядковый номер обернуть вокруг и стать 0?

да. Все подробности можно найти в спецификации TCP RFC 793 - протокол управления передачей.


Порядковые Номера

важно помнить, что фактическое пространство порядковых номеров конечное, хотя и очень большая. Это пространство колеблется от 0 до 232 - 1.

поскольку пространство конечно, все арифметические операции с последовательностью цифры должны выполняться по модулю 232. Эта арифметика без знака сохраняет отношение порядковых номеров по мере того как они задействуют от 232 - 1 к 0 снова.

есть некоторые тонкости для компьютера по модулю арифметика, поэтому следует проявлять большую осторожность при программировании сравнение этих значений. Символ "=<" означает "меньше или равно" (по модулю 232).

источник RFC 793 - протокол управления передачей

17
отвечен DavidPostill 2023-04-05 17:00

да, оно оборачивает вокруг. Вы можете прочитать его Википедии или RFC1323, который показывает, как защитить от перенесенного порядковые номера.

позволю себе процитировать:

TCP метки времени используются в алгоритме, известном как защита от обернутых порядковых номеров, или лапы (см. RFC 1323 для деталей). PAWS используется, когда окно приема пересекает границу укручения порядкового номера. В случае, когда пакет был потенциально повторно он отвечает на вопрос: "это порядковый номер в первых 4 ГБ или второй?"И временная метка используется, чтобы разорвать галстук.

и:

лапы используют такой же вариант отметок времени TCP как механизм RTTM описанный ранее и предполагает, что каждый полученный сегмент TCP (включая сегменты данных и ACK) содержит SEG метки времени.TSval значения которых монотонны и не уменьшаются во времени. Основная идея заключаться в том сегмент можно отбросить как старый дубликат, если он получил с меткой СЕГ.TSval меньше, чем некоторые метки недавно получил по этому соединению.

и в лапах, и в механизме RTTM "метки времени" являются 32-разрядными целыми числами без знака в модульном 32-разрядном пространстве. Таким образом, "меньше чем " определяется так же, как и для порядковых номеров TCP, и применяются те же методы реализации. Если s и t значения временной метки, s < t если 0 < (t - s) < 2* * 31, вычисляется в без знака 32-битную арифметику.

7
отвечен MariusMatutiae 2023-04-05 19:17

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх