числовых значений MTU, поскольку MSS представляет собой обычный размер данных в TCP (сюда не входят 20-байтовые заголовки IP и 20-байтовые заголовки TCP). Значение MSS основано на размерах заголовков, установленных по умолчанию: стек отправителя должен вычесть соответствующие значения для IP- и TCP-заголовков в зависимости от того, какие опции TCP и IP используются. Способ работы MSS в данный момент заключается в том, что каждый узел сначала сравнивает MTU исходящего интерфейса с собственным буфером и выбирает наименьшее значение для отправки MSS. Затем на узлах сравнивается размер полученного MSS и размер MTU собственного интерфейса, после чего вновь выбирается меньшее из значений.
Сценарий 2 иллюстрирует эти дополнительные действия, выполняемые отправителем с целью избежать фрагментации на локальной и удаленной линиях. Обратите внимание на то, каким образом каждый из узлов учитывает значение MTU исходящего интерфейса (еще до того, как узлы обменяются значениями MSS) и как это позволяет избежать фрагментации. Сценарий 2 Узел A сравнивает свой буфер MSS (16 кбайт) и свой MTU (1500 - 40 = 1460 байт) и для отправки узлу В качестве значения MSS использует наименьшее значение (1460). 1. Узел B получает от узла А значение MSS для отправки (1460) и сравнивает это значение со значением MTU своего исходящего интерфейса MTU - 40 (4422). 2.
Узел B устанавливает наименьшее значение (1460) в качестве MSS для отправки IP-датаграмм узлу А. 3. Узел B сравнивает значение своего буфера MSS (8 кбайт) и своего MTU (4462 - 40 = 4422) и в качестве MSS, которое будет отправлено узлу А, использует значение 4422. 4. Узел A получает от узла B значение MSS для отправки (1460) и сравнивает это значение со значением MTU своего исходящего интерфейса MTU -40 (4422). 5. Узел A устанавливает наименьшее значение (1460) в качестве MSS для отправки IP-датаграмм узлу B. 6. 1460 – это значение, выбранное обоими узлами в качестве посылки MSS друг другу. Очень часто на обеих концах TCP-соединения выбирается одно и то же значение MSS для отправки.
В сценарии 2 удалось избежать фрагментации на обеих концах TCP-соединения, поскольку узлы учли значения MTU для обоих исходящих интерфейсов. Однако пакеты могут подвергнуться фрагментации в сети между маршрутизатором A и маршрутизатором B. Это произойдет в том случае, если они попадут в канал, значение MTU которого меньше значения MTU на исходящем интерфейсе какого-либо из узлов. Что такое PMTUD? Как описано выше, TCP MSS отвечает за фрагментацию в двух конечных точках подключения TCP. Но он не работает в том случае, если канал с меньшим MTU располагается посередине между этими конечными точками. Алгоритм PMTUD позволяет избежать фрагментации на пути между конечными точками.
Он позволяет в динамическом режиме определить наименьшее значение MTU на всем пути от источника пакета до точки назначения.