Мне было интересно, так как порядковый номер в поле заголовка TCP выбирается случайным образом во время квитирования и постепенно увеличивается по мере обмена пакетами, что происходит после 2^32 - initial_seq_no передач?
Обертывается ли порядковый номер вокруг и становится 0 или начальное значение повторно используется (или новое соединение инициализируется с того места, где остановилось предыдущее)?
Обертывается ли порядковый номер заголовков пакетов TCP?
3 ответа
он обтекает будет 0. По словам RFC 793:
важно помнить, что фактическое пространство порядковых номеров конечное, хотя и очень большая. Это пространство колеблется от 0 до 2**32 - 1. Поскольку пространство конечно, вся арифметика имеет дело с последовательностью цифры должны выполняться по модулю 2**32. Эта арифметика без знака сохраняет отношение порядковых номеров по мере того как они задействуют от 2**32 - 1 снова 0. Есть некоторые тонкости в компьютерном модуле арифметика, поэтому следует проявлять большую осторожность при программировании сравнение этих значений. Символ "=<" означает "меньше или равно" (по модулю 2**32).
означает порядковый номер обернуть вокруг и стать 0?
да. Все подробности можно найти в спецификации TCP RFC 793 - протокол управления передачей.
Порядковые Номера
важно помнить, что фактическое пространство порядковых номеров конечное, хотя и очень большая. Это пространство колеблется от 0 до 232 - 1.
поскольку пространство конечно, все арифметические операции с последовательностью цифры должны выполняться по модулю 232. Эта арифметика без знака сохраняет отношение порядковых номеров по мере того как они задействуют от 232 - 1 к 0 снова.
есть некоторые тонкости для компьютера по модулю арифметика, поэтому следует проявлять большую осторожность при программировании сравнение этих значений. Символ "=<" означает "меньше или равно" (по модулю 232).
да, оно оборачивает вокруг. Вы можете прочитать его Википедии или 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-битную арифметику.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]