Возможности MTU, timer TCP

В компьютерных сетях термин maximum transmission unit (MTU) означает максимальный размер полезного блока данных одного пакета (англ. payload), который может быть передан протоколом без фрагментации. Обычно заголовки протокола не входят в MTU, но в некоторых системах в некоторых протоколах заголовки могут учитываться. Когда говорят об MTU обычно имеют в виду протокол канального уровня сетевой модели OSI.

Ограничение на максимальный размер кадра накладывается по нескольким причинам:

· Для уменьшения времени на повторную передачу в случае потери или неисправимого искажения пакета. Вероятность потерь растёт с увеличением длины пакета.

· Чтобы при полудуплексном режиме работы хост не занимал долгое время канал (также для этой цели используется межкадровый интервал (англ. Interframe gap)).

· Чем больше отправляемый пакет, тем дольше ждут отправления другие пакеты, особенно в последовательных интерфейсах. Поэтому маленький MTU был актуален во времена медленных коммутируемых соединений.

· Малый размер и быстродействие сетевых буферов входящих и исходящих пакетов. Однако слишком большие буферы тоже ухудшают производительность.

Хост знает значение MTU для собственного (возможно и своих соседей) интерфейса, но минимальное значение MTU для всех узлов сети обычно неизвестно. Другая потенциальная проблема заключается в том, что протоколы более высокого уровня могут создавать пакеты большего размера, не поддерживаемые другими узлами сети.

Для устранения этих проблем IP поддерживает фрагментацию, что позволяет разбивать дейтаграмму на меньшие кусочки, каждый из которых будет достаточно мал, чтобы беспрепятственно пройти через узел, из-за которого происходит фрагментация. Фрагменты пакетов маркируются таким образом, чтобы IP целевого хоста мог произвести сборку фрагментов в оригинальную дейтаграмму. Фрагментация пакетов имеет свои недостатки:

· Целевой хост должен получить все фрагменты для того, чтобы собрать пакет. Если хотя бы один фрагмент утерян — весь пакет должен быть отправлен заново.

· Как правило, фрагментацию выполняют более медленные процессоры, нежели те, что обрабатывают транзитный трафик. В некоторых случаях задержки, которые вызовет фрагментация всех пакетов, могут быть сочтены неприемлемыми.

· Увеличивается нагрузка на процессоры промежуточных маршрутизаторов и машины адресата.

· Увеличивается требование к памяти маршрутизатора, т.к необходимо хранить в буфере все фрагменты IP пакета.

· Некоторые межсетевые экраны могут блокировать фрагменты.

· Из-за копии IP-заголовка для каждого фрагмента неэффективно используется полоса пропускания.

· Протоколам маршрутизации, например, OSPF, требуется согласованный MTU для корректной работы.

В отличие от сокета UDP, TCP-соединение поддерживает значительный объем информации о состоянии, и благодаря этому состоянию некоторые операции могут выполняться асинхронно. Например, из-за управления потоком данные могут не быть отправленными немедленно при предоставлении их процессом.

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

TCP использует четыре таймера.

Таймер повторной передачи

Чтобы контролировать потери или удаления сегментов, TCP применяет таймер, который контролирует время повторной передачи и время ожидания подтверждения сегмента. Когда TCP посылает сегмент, он запускает таймер повторной передачи для этого конкретного сегмента. При этом могут возникнуть две ситуации:

· Если подтверждение получено для этого конкретного сегмента прежде, чем истечет контрольное время, то таймер стирается.

· Если контрольное время таймера истечет прежде, чем придет подтверждение, сегмент ретранслируется, и таймер включится повторно.

Таймер настойчивости

Он предназначен для предотвращения следующей тупиковой ситуации. Получатель посылает подтверждение, в котором указывает окно нулевого размера, давая тем самым отправителю команду подождать. Через некоторое время получатель посылает пакет с новым размером окна, но этот пакет теряется. Теперь обе стороны ожидают действий противоположной стороны. Когда срабатывает таймер настойчивости, отправитель посылает получателю пакет с вопросом, не изменилось ли текущее состояние. В ответ получатель сообщает текущий размер окна. Если он все еще равен нулю, таймер настойчивости запускается снова, и весь цикл повторяется. Если же окно увеличилось, отправитель может передавать данные.

Дежурный таймер

Когда соединение не используется в течение долгого времени, срабатывает дежурный таймер, заставляя одну сторону проверить, есть ли еще кто живой на том конце соединения. Если проверяющая сторона не получает ответа, соединение разрывается. Эта особенность протокола довольно противоречива, поскольку она приносит дополнительные накладные расходы и может разорвать вполне жизнеспособное соединение из-за кратковременной потери связи.

Таймер времени ожидания

Таймер времени ожидания используется после окончания соединения. Когда TCP закрывается, он реально не разъединяется. Соединение удерживается в неопределенности на период времени ожидания. Если что-либо прибудет к пункту назначения, то оно будет удалено. Значение для этого таймера равно двум временам ожидаемого времени существования сегмента.

БИЛЕТ

Наши рекомендации