Галкин В.А., Григорьев Ю.А. - Телекоммуникации и сети (1053870), страница 96
Текст из файла (страница 96)
Протоколы IIуровня стека TCP/IFНомер вНомерФлагипоследовательности подтвержденияTCPА<^ДлинаданныхTCPВ110013001АСК 150 1130011051АСК80 1110513081АСКL.LJРис. 5.51. Обмен даннымиРис. 5.52 иллюстрирует закрытие соединения по инициативе ТСР-модуля А,посылающего партнеру ТСР-пакет с установленным флагом FIN. Прием запроса на закрытие соединения ТСР-модуль В подтверждает пакетом, содержащем в своем заголовке поле «Номер подтверждения», значение которого (1052)на 1 больше значения принятого «Номера в последовательности» (1051).
После этого посылка каких-либо данных ТСР-модулем А невозможна, однакомодуль В имеет данные для передачи, которые он отправляет ТСР-модулюА и получает подтверждение на их прием. Затем ТСР-модуль В формируетпакет с флагом FIN, после подтверждения его»приема соединение считаетсязакрыгым.При подтверждении ТСР-пакетов, содержащих единичные флаги SYN илиРШ, значение поля «Номер подтверждения» на 1 больше значения соответствующего поля «Номер в последовательности», несмотря на то, что никакиеданные в подтверждаемых ТСР-пакетах не передаются.Примечание.
Приведенный пример не рассматривает ситуащ1и, связанные с «потерей» ТСР-пакетов в сети, и их обработку, связанную с повторной передачей данных.TCPАНомереНомерпоследовательности подтверждения110511308113081110521312111052ФлагиДлинаданныхТСРВ30811 FIN, АСК- оП ^110521 АСК1!10521 АСК1 40 131211 АСК10521 ACK,FIN |31221 АСК10|0100|1Рис. 5.52. Закрытие соединения4055.
Сетевые протоколыТаймеры и их назначение. Таймер повторной передачи. Данный таймер устанавливается значением КТО (Retransmission Time Out - интервал доповторной передачи) в момент посылки ТСР-пакета адресату. Если таймербудет сброшен в ноль до моменгга получения подтверждения пакета, то этотпакет должен быть послан вновь.Ясно, что величина RTO не может быть фиксированной, так как ТСР-пакеты до разных адресатов следуют по различным маршрутам через сети, скорость передачи данных в которых может различаться более чем в тысячи раз.Для вычисления «оптимального» значения RTO в каждом логическом соединении используется специальная процедура, специфицированная в RFC-793. Согласно этой процедуре, для каждого ТСР-пакета измеряется величина RTT(Round Trip Time - интервал времени от момента посьшки ТСР-пакета до момента получения подтверждения на него).
По измеренным RTT определяютвеличину SRTT (Smoothed RTT - сглаженный RTT):SRTT - * X SRTT + ( 1 - к) X RT(5.1)Здесь A:- сглаживающий коэффициент (например, 0,9).Формула (5.1) учитывает фильтрацию нетипичньгс (пиковьпс) значений измеренной величины RTT.«Оптимальное» значение RTO вьршсляют по формуле:RTO = min(U, max(L, р х SRTT)),(5.2)где: и - ограничение сверху на значение RTO (например, 30 с); L - ограничениеснизу на значение RTO (например, I с);р- коэффициент «запаса» (например, 2).Если после повторной посылки ТСР-пакета, вновь не будет получено егоподтверждение за интервал времени RTO, то попытки послать ТСР-пакетыбудут повторены (до 12 раз), но каждый раз с экспоненциально возрастающимзначением RTO.
Только после неудачи всей серии повторных посылок связьмежду партнерами будет считаться аварийно закрытой.Таймер возобновления передачи, В ходе взаимодействия двух ТСР-модулей (А и В) вполне возможна следующая ситуация:• ТСР-модуль В уведомляет ТСР-модуль А о невозможности приема отнего данньпс, определяя размер окна равным 0;• ТСР-модуль А, имея данные для передачи, переходит в состояние ожидания от ТСР-модуля В пакета с ненулевым размером окна;• ТСР-модуль В, у которого освободилось некоторое пространство в буферах, посылает модулю А ТСР-пакет с ненулевым размером окна;• адресованный модулю А пакет «потерян» по какой-либо причине и обаТСР-модуля переходят в состояние бесконечного ожидания.Для выхода из такого тупикового состояния и служит таймер возобновленияпередачи (persistence timer -- «настойчивый» таймер).
Он устанавливается вмомент получения ГСР-пакета с нулевым значением поля «Размер окна» в его4065.6. Протоколы IIуровня стека TCP/IPзаголовке (типичное начальное значение для этого таймера - 5 с). Если домомента обнуления таймера не будет получено разрешение на возобновлениепередачи данных, то ожидающий разрешения ТСР-модуль отправляет партнеру пакет, содержащий всего лишь 1 байт данных. По реакции партнера, возвращающего пакет с нулевьв^1/ненулевым значением размера окна, ТСР-модульпродолжает ожидание или возобновляет посылку данных:.Таймер закрытия связи. Протокол TCP предусматривает следующий простой прием предотвращения появления в сети ТСР-пакетов, не имеющих адресатов: после закрытия логического соединения между партнерами номера портов, использовавшихся в этом соединении, остаются еще некоторый интервалвремени действительными, что дает возможность долго блуждавшим по сетиТСР-пакетам добраться до места назначения (где они будут просто проигнорированы).
Значение этого интервала равно удвоенному времени жизни IP-пакета (обычно, 2 X15 = 30 с).Таймеры поддержки соединения. Для проверки наличия логического соединения между ТСР-модулями используют следующий механизм. КаждыйТСР-модуль, участвующий в логическом соединении, через фиксированныйпромежуток времени (keep-alive timer), равный обычно 45 с, периодически отправляет партнеру пустые (не содержащие данньпс) ТСР-пакеты и ждет ихподтверждения. Каждое полученное подтверждение говорит о сохранении соединения.
Если же в течении определенного интервала времени (idle timer), равного обычно 360 с, не будет получено ни одного подтверждения, то логическоесоединение считается оборванным.Очевидно, что данный механизм имеет смысл включать в работу толькотогда, когда партнеры по ТСР-взаимодействию приостановили по какой-либопричине обмен данных на достаточно длительный срок (более 45 с).Протокол UDPПротокол дейтаграмм пользователя UDP (User Datagram Protocol) является протоколом транспортного уровня и базируется на возможностях, предоставляемых межсетевым протоколом IP.
Основная задача TCP - обеспечение«быстрой» передачи данных в сети. Его транспортный адрес в заголовке IPсегмента равен 17. Описание протокола UDP дано в рекомендащш RFC-768.Назначение и основные хара1стеристики протокола. Протокол транспортного уровня UDP играет роль интерфейса для прикладных программ к средствам протокола межсетевого уровня IP. Данные, отправляемые прикладнымпроцессом через модуль UDP, достигают места назначения как единое целое.Например, если процесс отправитель производит 6 записей в UDP-порт, то процесс-получатель должен будет сделать 6 чтений.
Размер каждого записанногосообщения будет совпадать с размером каждого прочитанного. Протокол UDPсохраняет границы сообщений, определяемые прикладным процессом. Он никогда не объединяет несколько сообщений в одно и не делит одно сообщениена части.4075. Сетевые протоколыПрисвоение номера порта можно осуществить любым из рассмотренныхвыше способов, в том числе и локальным, который состоит в том, что разработчик некоторого приложения просто связьшает с портом любой доступный,произвольно выбранный числовой идентификатор, обращая внимание на то,чтобы он не входил в число зарезервированных номеров портов. В дальнейшем все удаленные запросы к данному приложению от других приложений должны быть адресованы с указанием назначенного ему номера порта.Основные характеристики протокола:• реализует взаимодействие без установления логического (виртуального)соединения;• организует дейтаграммную передачу данных;• использует 16-битовые номера портов для идентификащш партнеров повзаимодействию на транспортном уровне;• не гарантирует надежной передачи данных (возможна как потеря UDPпакетов, так и их дублирование);• не имеет средств уведомления источника UDP-пакета о доставке пакетаадресату;• не обеспечивает правильный порядок доставки UDP-пакетов от источника к приемнику;• может гарантировать целостность даьшых в UDP-пакете за счет использования контрольной суммы;• очень прост (особенно, по сравнению с протоколом TCP).Формат UDP-дейтаграммы и назначение полей.
Формат заголовка длядейтаграмм пользователя приведён на рис. 5.53. Если задействован порт отправителя, то он указывает порт процесса, посьшающего дейтаграмму. Можно принять, что это тот порт, на который при отсутствии какой-либо иной информации следует адресовать ответную дейтаграмму. Если данное поле незадействовано, то в него следует записать нули. Порт получателя имеет смыслтолько в конгексте конкретного Intemet-адреса получателя.Длина - длина в октетах данной UDP-дейтаграммы, включающая как заголовок, так и данные (это означает, что минимальное значение поля длиныравно восьми).Контрольная сумма - 16-битное дополнение до единицы суммы дополнений полей UDP-заголовка, поля данных, нескольких полей из заголовка в протоколе IP (IP-адрес отправителя, IP-адрес получателя, поле протокола) и полядлины UDP-дейтаграммы.