Безопасность

Что обеспечивает транспортный протокол tcp. Что такое протокол TCP-IP

Что обеспечивает транспортный протокол tcp. Что такое протокол TCP-IP

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:49, 28 января 2017.

NUMBEREDHEADINGS__

Стек протоколов ТСР/IP

IP-сеть

IP-сеть (какой является Интернет) отличается от глобальных сетей тем, что является составной сетью из подсетей, число которых измеряется тысячами. Для Интернета характерно использование стека протоколов не эталонной модели OSI, а эталонной модели TCP/IP . На рис. 1 представлен стек протоколов TCP/IP и его соответствие уровням модели OSI. Отличительной особенностью TCP/IP является также то, что IP-пакеты могут передаваться с использованием различных технологий составных сетей, в том числе посредством уже рассмотренных глобальных сетей Х.25, FR и ATM, которые являются самостоятельными со своими протоколами, адресацией и др. Другой особенностью является то, что эталонная модель TCP/IP в отличие от эталонной модели OSI была разработана под конкретную составную сеть (интерсеть или internet). Подсети, составляющую эту составную сеть, соединяются между собой маршрутизаторами. Такими подсетями могут быть как локальные, так и глобальные сети различных технологий.

Прикладной уровень стека TCP/IP (уровень 4) соответствует трём верхним уровням модели OSI. К протоколам прикладного уровня относятся протокол переноса файлов (FTP); протокол электронной почты (SMTP); протокол, используемый для создания страниц во всемирной паутине WWW (HTTP) - основа для доступа к связанным между собой документам; протокол преобразования (DNS) текстовых имен в сетевые IP-адреса, простой протокол сетевого управления (SNMP), протоколы соответственно сигнализации и передачи данных (SIP, RTP/RTCP) в IP-телефонии или речь поверх IP (VoIP-Voice over IP) и др. К протоколам прикладного уровня относятся также протоколы информационной безопасности Kerberos, PGP, SET и др.

Рис. 1. Стек протоколов TCP/IP

Транспортный уровень стека TCP/IP

Транспортный уровень стека TCP/IP (уровень 3) обеспечивает передачу данных между прикладными процессами. Транспортный уровень включает два протокола TCP и UDP. Протокол управления передачей TCP (Transmission Control Protocol) является надёжным протоколом с установлением соединения, позволяющим управлять потоком, т.е. без ошибок доставлять байтовый поток с одной машины на любую другую машину составной сети. Для того чтобы обеспечить надёжную доставку данных, протокол TCP предусматривает установление логического соединения. Это позволяет ему нумеровать пакеты, подтверждать их прием квитанциями, в случае потери организовывать повторные передачи, распознавать и уничтожать дубликаты, доставлять прикладному уровню в том порядке, в котором они были отправлены. Пакеты, поступающие на транспортный уровень, организуются в виде множества очередей к точкам входа прикладных процессов. В терминологии TCP/IP такие очереди, однозначно определяющие приложение в пределах хоста, называется портами. За портами каждого стандартного приложения определён номер например, порт TCP № 21 - за протоколом передачи файла FTP (File Transport Protocol). Номер порта в совокупности с номером сети и номером конечного узла имеет название сокет (socket). Каждое логическое соединение идентифицируется парой сокетов взаимодействующих процессов. Второй протокол транспортного уровня -протокол пользователей дейтаграмм UDP (User Data Protocol) является простейшим дейтаграммным протоколом (т.е. без установления соединения). К протоколу транспортного уровня относится протокол информационной безопасности SSL/TLS. Протоколы прикладного и транспортного уровней стека уровней TCP/IP устанавливаются на оконечных станциях (хостах) сети.

Межсетевой уровень стека TCP/IP

Межсетевой уровень стека TCP/IP (уровень 2) , называемый также сетевым уровнем (по модели OSI), является стержнем всей архитектуры TCP/IP. Именно этот уровень, функции которого соответствуют сетевому уровню модели OSI, обеспечивает перенос пакетов данных в пределах всей составной сети. Протоколы межсетевого уровня поддерживают интерфейсы с вышележащим транспортным уровнем, получая от него запросы на передачу данных по составной сети. Основным протоколом межсетевого уровня является межсетевой протокол IP (Internet Protocol). Он обеспечивает продвижение пакета между подсетями - от одного пограничного маршрутизатора до другого, до тех пор, пока пакет не попадёт в сеть назначения. Протокол IP так же, как и протоколы функций коммутации глобальных сетей связи (FR, ATM и др.), устанавливается не только на оконечных пунктах (хостах), но и на всех маршрутизаторах сети. Маршрутизатор представляет собой процессор, который связывает между собой две сети (подсети). Протокол межсетевого уровня работает в режиме без установления соединения (дейтаграммный режим), в соответствии с которым он не отвечает за доставку пакета до узла назначения. При потере пакета в сети протокол IP не пытается восстановить его.

В заголовке IP-пакета содержится IP-адрес отправителя и получателя - по 4 байта каждый. К межсетевому уровню относятся также протоколы, выполняющие функции составления и коррекции таблиц маршрутизации RIP (Routing Internet Protocol), OSPF (Open Shortest Path First), протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol). К протоколу сетевого уровня относится протокол информационной безопасности IPSec. Уровень сетевого доступа стека TCP/IP (уровень 1) отвечает за организацию интерфейса с частными технологиями подсетей составной сети. Перемещение пакета можно рассматривать как последовательность «прыжков» от одного маршрутизатора к другому. На очередном маршрутизаторе на сетевом уровне определяется сетевой адрес следующего по маршруту маршрутизатора. Чтобы передать пакет IP этому маршрутизатору, надо перенести его через некоторую подсеть. Для этого необходимо использовать транспортные средства этой подсети. Задача уровня сетевого доступа сводится к инкапсуляции (вложению) пакета в блок данных этой промежуточной сети и в преобразовании сетевых адресов граничных маршрутизаторов этой подсети в новый тип адреса, принятой в технологии промежуточной сети.

Пример переноса данных в IP-сети

На примере IP-сети (рис. 2) покажем перенос данных оконечной станции А локальной вычислительной сети (подсети) Ethernet в оконечную станцию В сети (подсети) АТМ. Как видно из рисунка в эту составную сеть еще входит сеть (подсеть) Frame Relay. В основу приведенного упрощенного описания положен пример межсетевого взаимодействия сетей Ethernet и АТМ, приведенный в работе . Дополнительно в эту составную сеть введена сеть (подсеть) Frame Relay. Принцип маршрутизации и краткое описание протоколов маршрутизации в сети Интернет приведены в следующей главе. Для того, чтобы технология TCP/IP могла решать задачу объединения сетей, ей необходима собственная глобальная система адресации, не зависящая от способов адресации узлов в отдельных подсетях. Таким адресом является IP-адрес, состоящий из адреса подсети (префикса) и адреса оконечного устройства (хоста). Приведем пример адресации подсети и хоста. IP-адрес 200.15.45.126/25 означает, что 25 старших бит из выделенных 4-х байт под адресацию являются адресом подсети, а оставшиеся 7 бит означают адрес хоста в этой сети.

Как видно из предыдущих глав, глобальные сети Frame Relay и АТМ имеют различные системы нумерации, которые отличаются от системы нумерации локальной вычислительной сети (ЛВС) технологии Ethernet. Каждый компьютер Ethernet имеет уникальный физический адрес, состоящий из 48 бит. Этот адрес называется МАС-адресом и относится к канальному уровню - управлению доступом к среде MAC (Media Access Control). Для организации межсетевого взаимодействия подсетей различной технологии и адресации используются маршрутизаторы, включающие IP-пакеты. В состав этих пакетов входят глобальные IP-адреса. Каждый интерфейс маршрутизатора IP-сети и оконечного устройства включает два адреса – локальный адрес оконечного устройства подсети и IP-адрес.

Рис. 2. Пример взаимодействия двух устройств

Рассмотрим продвижение IP-пакета в сети (рис. 2).


Протоколы TCP/IP

Ниже приводится краткое описание протокола прикладного уровня SNMP и протокола транспортного уровня TCP архитектуры TCP/IP.

Протокол прикладного уровня SNMP

Большие сети не могут быть настроены и управляться вручную в плане изменения конфигурации сети, устранения неисправности в сети, сбора параметров о качестве обслуживания. Если в сети используется оборудование разных производителей, необходимость таких средств становится особенно необходимой. В связи с этим были разработаны стандарты сетевого управления. Одним из наиболее широко используемых является простой протокол управления сетью SNMP (Simple Network Management Protocol) . Приведем краткие сведения об архитектуре сетевого управления. Система сетевого управления включает инструментальные средства для решения задач управления. При этом необходимо использование уже имеющегося оборудования путем внедрения в него дополнительных аппаратных и программных средств для управления сетью. Это программное обеспечение размещается в хостах, коммуникационных процессорах и других устройствах сети. Модель сетевого управления, используемая для SNMP состоит из следующих элементов:

  • станция управления, выполняющая роль интерфейса между сетевым администратором и системой сетевого управления. Станция управления позволяет осуществить мониторинг сети и управление сетью. В этой станции имеется база данных с информацией, полученной из информационных баз всех управляемых объектов сети;
  • агент управления (хосты, коммутаторы и др.), которые отвечают на запросы от станции управления. Агент обеспечивает информацией станцию и без запроса;
  • агент поддерживает базу данных, именуемую MIB (база управляющей информации, Management Information Base), в которой записаны конфигурация, характеристики и состояние устройств.

Станция управления и агенты взаимодействуют по протоколу SNMP. Так как управление сетью задача многоцелевая, приведем некоторые возможности использования протокола SNMP в сети Frame Relay . Агент поддерживает базу данных, именуемую MIB (база управляющей информации, Management Information Base), в которой записаны конфигурация, характеристики и состояние устройств. Форум Frame Relay стандартизировал MIB для устройств Frame Relay. В большинстве служб Frame Relay провайдер собирает информации от агентов SNMP в каждом коммутаторе FR и записывает ее в центральную базу MIB для общего пользования. Тем самым пользователю предоставляется единый источник статистической информации обо всех соединениях виртуальных каналов сети. Это дает возможность отследить свои потоки данных в сети провайдера от коммутатора к коммутатору. Можно использовать SNMP для сбора статистики и аварийных сообщений от собственного оборудования, подключенного к сети FR. Для этого приходится работать с множеством MIB. Для сбора данных на основе SNMP можно использовать виртуальный канал FR.

SNMP может управлять конфигурацией сети. Для сети FR это касается как физической, так и логической конфигурации сети, включая установление адресации, определение DLCI, назначение полосы пропускания для PVC. SNMP может управлять устранением неисправностей в сети при получении системой управления аварийных сообщений от агента сетевого устройства.

Обеспечение информационной безопасности протокола SNMP

В документе RFC 2574 определяется модель USM (User Security Model – модель защиты пользователя) при использовании протокола SNMP. USM разрабатывалась с целью защиты от угроз следующих типов.

  1. Модификация информации. По пути следования сообщения, сгенерированного авторизованным объектом, некоторый другой объект может изменить это сообщение, чтобы выполнить несанкционированные операции управления (например, установив соответствующие значения объекта управления). Суть угрозы заключается в том, что несанкционированный объект может изменить любые параметры управления, включая параметры конфигурации, выполняемых действий и контроля.
  2. Имитация. Объект может пытаться выполнить не разрешенные для него операции управления, отождествляя данный объект с некоторым авторизованным объектом.
  3. Модификация потока сообщений. Протокол SNMP предназначен для работы над транспортным протоколом, не предполагающим установку соединений. Существует угроза переупорядочения, задержки или воспроизведения (дублирования) сообщений SNMP для несанкционированного управления. Например, можно скопировать и впоследствии воспроизвести сообщение, вызывающее перезапуск устройства.
  4. Разглашение информации. Наблюдая за потоком обмена данными между администратором и агентом, объект может выяснить значения управляемых объектов и распознать подлежащие регистрации события. Например, наблюдение за набором команд, изменяющих пароли, может позволить атакующему узнать новые пароли.

Протокол транспортного уровня TCP

Протокол транспортного уровня TCP выполняет функцию управления потоками между оконечными пунктами, так как уровень IP не гарантирует правильной доставки дейтаграмм. Дейтаграммы с уровня IP могут прибывать в неправильном порядке. Восстанавливает сообщения из таких дейтаграмм протокол TCP, обеспечивая этим надежный режим установленного соединения с низкой вероятностью потери пакета. Механизм управления потоками, используемый ТСP, отличается от механизма восстановления правильной последовательности кадров в Х.25 и называется схемой кредитов. В этой схеме считается, что каждый передаваемый байт данных имеет порядковый номер. Границы между сообщениями не сохраняются. Например, если отправляющий прикладной процесс записывает в ТСP-поток четыре 512-байтовые порции данных, эти данные могут быть доставлены получающему процессу в виде четырех 512-байтовых порций, либо двух 1024-байтовых порций, либо одной 2048-байтовой порции. Каждая протокольная единица PDU TCP называется сегментом TCP и включает в заголовок сегмента порт источника данных и порт получателя. Значения портов идентифицируют соответствующих пользователей (приложения) двух объектов TCP.

Логическая связь относится именно к данной паре значения портов. В процессе связи каждый объект отслеживает сегменты TCP, получаемые от другой стороны или отправленные другой стороне, для того, чтобы регулировать поток сегментов и восстанавливать утерянные или поврежденные сегменты. Стандартный номер порта однозначно идентифицирует тип приложения, однако он не может однозначно идентифицировать прикладной процесс этого приложения. Одно приложение может одновременно осуществлять несколько процессов. Поэтому прикладной процесс однозначно определяется в пределах сети и в пределах отдельного компьютера парой (IP-адрес, номер порта) и называется сокетом (socket). Логическое TCP-соединение однозначно идентифицируется парой сокетов, определенных для этого соединения двумя взаимодействующими сокетами.

При работе на хост-отправителе протокол TCP рассматривает информацию, поступающую к нему от уровня приложений, как неструктурированный поток байтов. Эти данные буферируются средствами TCP. На уровень IP из буфера «вырезаются» сегменты, к которым добавляются заголовки. В состав заголовка входят сегменты SYN и ACK, служащие для установления TCP-соединения.

Для передачи сегмента данных имеются три поля, связанные с управлением потоком (восстановлением целостности принятого сообщения): порядковый номер (SN), номер подтверждения (AN) и окно (W) .Когда транспортный объект отправляет сегмент, он помещает в поле данных сегмента порядковый номер первого байта. Принимающий объект подтверждает получение сегмента с помощью обратного сегмента, в котором (АN=i, W=j), что означает:

  • все байты до SN=i-1 подтверждены. Следующий ожидаемый байт имеет номер АN=i.
  • разрешается отправить дополнительное окно из W=j байт данных, т.е. байты от I до i+j-1.

Таким образом, протокол TCP обеспечивает надежную доставку сообщений, поступающих из сети от ненадежного дейтаграммного протокола на межсетевом уровне. В сети Х.25 функцию надежной доставки выполняет канальный уровень модели OSI, который был подробно рассмотрен в предыдущих главах, а в сети Frame Relay эту функцию выполняет протокол ITU-T Q.921.

Протокол TCP (TransmissionControlProtocol, протокол управления передачей) представляет собой надежный протокол с установлением соединения, являющийся альтернативой UDP, и отвечающий за большинство передач пользовательских данных по сетям TCP/IP, и даже внесший свой вклад в название всего набора протоколов. Протокол TCP, как определено в документе RFC 793, обеспечивает приложения всем диапазоном транспортных услуг, включая подтверждение получения пакетов, отслеживание ошибок и их исправление, а также управление потоком.

Протокол TCP предназначен для передачи относительно больших объемов информации, которая заведомо не сможет быть упакована в один пакет. Информация обычно принимает форму целых файлов, которые должны быть разделены на множественные дейтаграммы для передачи. Информация, поставляемая Транспортному уровню, в терминологии протокола TCP рассматривается как последовательность (sequence), которую протокол разбивает на сегменты (segment) для передачи по сети. Как и в случае протокола UDP, сегменты затем упаковываются в IP-дейтаграммы, которые могут преодолевать маршрут до места назначения различными способами. Поэтому, протокол TCP снабжает каждый из сегментов порядковым номером для того, чтобы система-получатель смогла собрать их воедино в правильном порядке.

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

Формат TCP –сообщения

Функции полей TCP-заголовка описаны ниже.

Порт источника (SourcePort), 2 байта. Идентифицирует номер порта передающей системы, используемый процессом, который создал информацию, переносимую TCP-сегментами. В некоторых случаях это может быть фиктивный номер порта, выделенный клиентом специально для данной транзакции.

Порт назначения (DestinationPort), 2 байта. Указывает номер порта системы назначения, на который должна быть передана информация ТСР-сегментов. Номера портов перечислены в документе "AssignedNumbers", а также в файле SERVICES каждой ТСР/1Р-системы.

Порядковый номер (SequenceNumber), 4 байта. Определяет положение конкретного сегмента по отношению ко всей последовательности данных.

Подтвержденный номер (AcknowledgmentNumber), 4 байта. Задает максимальный номер байта в сегменте, увеличенный на единицу, который подтверждающая система ожидает получить от отправителя. Используется совместно с битом управления АСК.


Смещение данных (DataOffset), 4 бита. Задает длину в 4-байтных словах, TCP-заголовка (который может содержать опции, увеличивающие его размер вплоть до 60 байт).

Зарезервировано (Reserved), 6 битов. Выделено для последующих применений.

Биты управления (ControlBits), 6 битов. Содержит шесть 1-битных флагов, выполняющих перечисленные ниже функции:

URG - показывает, что последовательность содержит срочные данные (urgentdata) и активирует поле указателя срочности;

АСК - отмечает, что сообщение является подтверждением ранее полученных данных и активирует поле номера подтверждения;

PSH - предписывает системе-получателю передать всю информацию текущей последовательности, полученную на данный момент, приложению, идентифицированному полем порта назначения, не дожидаясь поступления остальных фрагментов;

RST - инструктирует систему-получателя отбросить все сегменты текущей последовательности, полученные к настоящему моменту, и начать установление TCP-соединение заново;

SYN - используется во время процедуры установления соединения для синхронизирования нумераторов переданных данных между взаимодействующими системами;

FIN - извещает другую систему, что передача данных закончена и соединение должно быть завершено.

Окно (Window), 2 байта. Реализует механизм управления потоком протокола TCP (скользящее окно) путем объявления количества байтов, которое система-получатель может принять от системы-источника.

Контрольная сумма (Checksum), 2 байта. Содержит результат вычисления контрольной суммы с учетом TCP-заголовка, данных, а также псевдозаголовок, составленный из полей IP-адреса источника, протокола, IP-адреса назначения из IP-заголовка плюс длина всего ТСР-сообщения.

Указатель срочности (UrgentPointer), 2 байта. Задействуется совместно с битом URG, определяет данные последовательности, которые должны рассматриваться получателем как срочные.

Опции (Options), переменный размер. Может содержать дополнительные конфигурационные параметры для TCP-соединения вместе с битами выравнивания, требуемыми для того, чтобы привести размер поля до ближайшего значения, кратного 4 байтам. Возможные опции перечислены ниже.

Максимальный размер сегмента (MaximumSegmentSize). Задает размер максимального сегмента, который текущая система может получить от другой системы, соединенной с ней.

Фактормасштабаокна (Window Scale Factor). Используется для увеличения размера поля окна с 2 до 4 байтов.

Временная отметка (Timestamp). Используется для хранения временных отметок пакетов данных, которые система-получатель возвращает отправителю с целью подтверждения. Это позволяет отправителю измерять время путешествия данных в оба конца.

Данные (Data), переменный размер. Может включать в себя сегменты данных, поступившие с вершины протокольного стека, от протоколов Прикладного уровня. В пакетах SYN, АСК и FIN это поле оставляется пустым.

IPX/SPX: Для обеспечения транспортных услуг для операционной системы NovellNetWare, фирмой Novell был создан свой собственный стек протоколов, получивший общее название по наименованию протокола Сетевого уровня - IPX (InternetworkPacketExchange, межсетевой обмен пакетами). По аналогии с TCP/IP этот стек иногда также называют IPX/SPX. Вторая часть этого обозначения соотносится с SPX (SequencedPacketeXchange, последовательный обмен пакетами), протоколом, работающим на Транспортном уровне. Однако, в отличие от комбинации TCP и IP, которая повсеместно встречается в TCP/IP- сетях и предназначена в основном для доставки большого количества трафика, комплекс IPX/SPX в сетях NetWare можно встретить относительно редко.

Протоколы IPX в нескольких аспектах похожи на TCP/IP. Оба стека протоколов задействуют на Сетевом уровне ненадежные протоколы без установления соединения (IPX и IP соответственно) для переноса дейтаграмм, содержащих данные множества протоколов верхних уровней, что обеспечивает широкий спектр услуг для различных применений. Подобно IP, IPX отвечает за адресацию дейтаграмм и маршрутизацию их к месту назначения в другой сети.

Однако в отличие от TCP/IP протоколы IPX были разработаны для применения в локальных сетях, и не поддерживают той почти неограниченной масштабируемости, свойственной протоколам Интернета. IPX не обладает такой самостоятельной адресной системой, какая имеется у протокола IP. Системы в сети NetWare идентифицируют другие системы посредством аппаратных адресов, "зашитых" в платы сетевых адаптеров в сочетании с адресом сети, назначенным администратором (или ОС) во время инсталляции операционной системы.

Дейтаграммы IPX переносятся внутри стандартных кадров протокола Канального уровня точно так же, как дейтаграммы IP. Протоколы IPX не имеют собственных протоколов Канального уровня. Тем не менее, в большинстве сетей данные IPX инкапсулируются кадрами Ethernet или TokenRing.

Протокол IPX

IPX базируется на протоколе IDP (InternetworkDatagramPacket, межсетевой обмен дейтаграммами), разработанном для сетевых служб Xerox (XNS, XeroxNetworkServices). IPX обеспечивает базовые транспортные услуги без установления соединения между системами интерсети при широковещательной и однонаправленной передаче. Большая часть обычного трафика между серверами NetWare или между клиентами и серверами переносится посредством дейтаграмм IPX.

Заголовок дейтаграммы IPX имеет длину 30 байтов (для сравнения: размер заголовка IP равен 20 байтам). Назначение полей заголовка перечислено ниже.

Контрольная сумма (Checksum), 2 байта. В оригинальном заголовке IDP это поле содержит значение CRC для дейтаграммы. Так как протоколы Канального уровня сами выполняют проверку контрольных сумм, то данная функция при обработке дейтаграмм IPX не задействована и поле всегда содержит шестнадцатеричное значение ffff.

Длина (Length), 2 байта. Задает размер дейтаграммы в байтах, включая заголовок IPX и поле данных.

Управление доставкой (TransportControl), 1 байт. Это поле также известно как счетчик транзитов (hopcount). Оно фиксирует количество маршрутизаторов, через которые прошла дейтаграмма на пути к месту назначения. Передающая система сбрасывает его в 0, а каждый из маршрутизаторов при обработке дейтаграммы увеличивает значение счетчика на 1. Как только количество транзитных маршрутизаторов достигает 16, последний из них отбрасывает дейтаграмму.

Тип пакета (Packet Туре), 1 байт. Идентифицирует сервис или протокол верхнего уровня, который создал данные, переносимые дейтаграммой. Используются следующие значения:

0 - не определен;

1 - RoutingInformationProtocol (RIP, протокол информации маршрутизации);

4 - ServiceAdvertisingProtocol (SAP, протокол извещения об услугах);

5 - SequencedPacketExchange (SPX, последовательный обмен пакетами);

17 - NetWare Core Protocol (NCP, основнойпротокол NetWare).

Адрессетиназначения (Destination Network Address), 4 байта. Указывает сеть, в которой расположена система-получатель, содержит значение, выделенное администратором или операционной системой во время инсталляции NetWare.

Адрес узла назначения (DestinationNodeAddress), 6 байтов. Определяет сетевой интерфейс компьютера, которому должны быть доставлены данные, представляет собой аппаратный адрес протокола Канального уровня. Широковещательные сообщения передаются с шестнадцатеричным адресом ffffffffffff.

Сокет назначения (DestinationSocket), 2 байта. Отвечает за идентификацию процесса, выполняющегося на системе-получателе, для которого, собственно, и предназначены данные внутри дейтаграммы. Используетсяодноизследующихзначений:

0451 - NetWare Core Protocol;

0452 - Service Advertising Protocol;

0453 - Routing Information Protocol;

0455 - NetBIOS;

0456 - диагностический пакет;

0457 - пакет присваивания номера (serializationpacket);

4000-6000 - сокеты, отведенные процессам сервера;

9000 - NetWareLinkServicesProtocol;

9004 - IPXWAN Protocol.

Адрес сети источника (SourceNetworkAddress), 4 байта. Идентифицирует сеть, в которой находится система, пославшая дейтаграмму. Используется значение, выделенное администратором или операционной системой во время инсталляции NetWare.

Адрес узла источника (SourceNodeAddress), 6 байтов. Содержит аппаратный адрес протокола Канального уровня для сетевого интерфейса компьютера, который отправил дейтаграмму.

Сокет источника (SourceSocket), 2 байта. Определяет процесс, выполняющийся на локальной системе, сформировавший данные пакета. Применяются те же значения, что и для поля сокета назначения.

Данные (Data), переменной длины. Информация, сгенерированная протоколом вышележащего уровня.

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

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

Протокол TCP используется в тех случаях, когда требуется надежная доставка сообщений. Он освобождает прикладные процессы от необходимости использовать таймауты и повторные передачи для обеспечения надежности. Наиболее типичными прикладными процессами, использующими TCP, являются FTP (File Transfer Protocol - протокол передачи файлов) и TELNET. Кроме того, TCP используют система X-Window, rcp (remote copy - удаленное копирование) и другие "r-команды". Большие возможности TCP даются не бесплатно. Реализация TCP требует большой производительности процессора и большой пропускной способности сети. Внутренняя структура модуля TCP гораздо сложнее структуры модуля UDP.

Реализация TCP, как правило, встроена в ядро системы, хотя есть и реализации TCP в контексте приложения.

Когда осуществляется передача от компьютера к компьютеру через Internet, TCP работает на верхнем уровне между двумя конечными системами, например, интернет-браузер и интернет-сервер. Также TCP осуществляет надежную передачу потока байт от одной программы на некотором компьютере в другую программу на другом компьютере. Программы для электронной почты и обмена файлами используют TCP. TCP контролирует длину сообщения, скорость обмена сообщениями, сетевой трафик.

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

Протокол TCP разбивает поток байт на пакеты; он не сохраняет границ между записями. Например, если один прикладной процесс делает 5 записей в TCP-порт, то прикладной процесс на другом конце виртуального канала может выполнить 10 чтений для того, чтобы получить все данные. Но этот же процесс может получить все данные сразу, сделав только одну операцию чтения. Не существует зависимости между числом и размером записываемых сообщений с одной стороны и числом и размером считываемых сообщений с другой стороны.

Протокол TCP требует, чтобы все отправленные данные были подтверждены принявшей их стороной. Он использует таймауты и повторные передачи для обеспечения надежной доставки. Отправителю разрешается передавать некоторое количество данных, не дожидаясь подтверждения приема ранее отправленных данных. Таким образом, между отправленными и подтвержденными данными существует окно уже отправленных, но еще неподтвержденных данных. Количество байт, которые можно передавать без подтверждения, называется размером окна. Как правило, размер окна устанавливается в стартовых файлах сетевого программного обеспечения. Так как TCP-канал является дуплексным, то подтверждения для данных, идущих в одном направлении, могут передаваться вместе с данными, идущими в противоположном направлении. Приемники на обеих сторонах виртуального канала выполняют управление потоком передаваемых данных для того, чтобы не допускать переполнения буферов.

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

На другом конце, получатель TCP группирует поступившие от протокола нижнего уровня данные в принимающие сегменты своего буфера, проверяет целостность данных, передает данные пользовательскому процессу и уведомляет отправителя об их получении.

Пользовательский интерфейс с TCP может выполнять такие команды как открыть (OPEN) или закрыть соединение (CLOSE), отправить (SEND) или принять (RECEIVE) данные, а также получить состояние соединения (STATUS).

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

В результате работы этого механизма каждый TCP пакет вкладывается в «конверт» протокола нижнего уровня, например, IP. Получившаяся таким образом дейтаграмма содержит в себе TCP-пакет так же как TCP пакет содержит пользовательские данные.

Краткое описание протоколов семейства TCP/IP с расшифровкой аббревиатур

  • ARP (Address Resolution Protocol, протокол определения адресов) : конвертирует 32-разрядные IP-адреса в физические адреса вычислительной сети, например, в 48-разрядные адреса Ethernet.
  • FTP (File Transfer Protocol, протокол передачи файлов) : позволяет передавать файлы с одного компьютера на другой с использованием TCP-соединений. В родственном ему, но менее распространенном протоколе передачи файлов - Trivial File Transfer Protocol (TFTP) - для пересылки файлов применяется UDP, а не TCP.
  • ICMP (Internet Control Message Protocol, протокол управляющих сообщений Internet) : позволяет IP-маршрутизаторам посылать сообщения об ошибках и управляющую информацию другим IP-маршрутизаторам и главным компьютерам сети. ICMP-сообщения "путешествуют" в виде полей данных IP-дейтаграмм и обязательно должны реализовываться во всех вариантах IP.
  • IGMP (Internet Group Management Protocol, протокол управления группами Internet) : позволяет IP-дейтаграммам распространяться в циркулярном режиме (multicast) среди компьютеров, которые принадлежат к соответствующим группам.
  • IP (Internet Protocol, протокол Internet) : низкоуровневый протокол, который направляет пакеты данных по отдельным сетям, связанным вместе с помощью маршрутизаторов для формирования Internet или интрасети. Данные "путешествуют" в форме пакетов, называемых IP-дейтаграммами.
  • SMTP (Simple Mail Transfer Protocol, простой протокол обмена электронной почтой) : определяет формат сообщений, которые SMTP-клиент, работающий на одном компьютере, может использовать для пересылки электронной почты на SMTP-сервер, запущенный на другом компьютере.
  • TCP (Transmission Control Protocol, протокол управления передачей) : протокол ориентирован на работу с подключениями и передает данные в виде потоков байтов. Данные пересылаются пакетами - TCP-сегментами, - которые состоят из заголовков TCP и данных. TCP - "надежный" протокол, потому что в нем используются контрольные суммы для проверки целостности данных и отправка подтверждений, чтобы гарантировать, что переданные данные приняты без искажений.
  • UDP (User Datagram Protocol, протокол пользовательских дейтаграмм) : протокол, не зависящий от подключений, который передает данные пакетами, называемыми UDP-дейтаграммами. UDP - "ненадежный" протокол, поскольку отправитель не получает информацию, показывающую, была ли в действительности принята дейтаграмма.

Состав и предназначение полей заголовка

ТСР-сегменты отправляются как IP-дейтаграммы. Заголовок TCP, следующий за IP-заголовком, содержит информацию TCP-протокола.

Source Port (16 бит). Порт отправителя.

Destination Port (16 бит). Порт получателя.

Sequence Number (32 бита). Номер кадра. Номер кадра первого октета данных в этом сегменте (за исключением пакета, где присутствует флаг SYN). Если в пакете присутствует флаг SYN, то номер данного пакета становится номером начала последовательности (ISN) и номером первого октета данных становится номер ISN+1.

Acknowledgment Number (32 бита). Поле номера кадра подтвержденного получения. Если пакет содержит установленный контрольный бит АСК, то это поле содержит номер следующего пакета данных отправителя, который ожидает получатель. При установленном соединении пакет подтверждения отправляется всегда.

Data Offset (4 бита). Поле величины смещения данных. Оно содержит количество 32-битных слов заголовка TCP-пакета. Это число определяет смещение расположения данных в пакете.

Reserved (6 бит). Резервное поле. Поле зарезервировано.

Флаги управления (слева направо):

  • URG: Флаг срочности
  • АСК: Флаг пакета, содержащего подтверждение получения
  • PSH: Флаг форсированной отправки
  • RST: Переустановка соединения
  • SYN: Синхронизация чисел последовательности
  • FIN: Флаг окончания передачи со стороны отправителя

Window (16 бит). Окно. Это поле содержит количество байт данных, которое отправитель данного сегмента может принять, отсчитанное от номера байта, указанного в поле Acknowledgment Number.

Checksum (16 бит). Поле контрольной суммы. Это поле содержит 16 бит суммы побитных дополнений 16-битных слов заголовка и данных. Если сегмент содержит нечетное число байт заголовка и данных, последний байт дополняется справа нулями. При вычислении контрольной суммы поле контрольной суммы полагается равным нулю.

Urgent Pointer (16 бит). Поле указателя срочных данных. Это поле содержит значение счетчика пакетов, начиная с которого следуют пакеты повышенной срочности. Это поле принимается во внимание только в сегментах с установленным флагом URG.

Options. Поле дополнительных параметров: может быть переменной длины.

Padding. Заполнение: переменная длина. Заполнение (нулями) TCP-заголовка используется для выравнивания его по 32-битному слову.

Эта ссылка на наглядное видео. К сожалению, оно на английском языке, но и так понятно.

На транспортном уровне стека TCP/IP используются два основных протокола: TCP и UDP . Общее представление о функциях транспортного уровня можно получит в соответствующей статьей. В данном тексте речь пойдёт о протоколе TCP (Transmission Control Protocol), который используется для обеспечения надёжной доставки данных на транспортном уровне.

Существуют общие задачи транспортного уровня, с которыми справляется как TCP, так и UDP . Основных задач собственно две: сегментация данных , приходящих с уровня приложений и адресация приложений (передающего и принимающего) при помощи портов. Подробнее об этом можно прочесть в статье, посвященной транспортному уровню .

Помимо этого, TCP обеспечивает:

  • Надёжную доставку сегментов.
  • Упорядочивание сегментов при получении.
  • Работу с сессиями.
  • Контроль за скоростью передачи.

Рассмотрим эти возможности более детально.

Надёжная доставка сегментов

Под надёжной доставкой подразумевается автоматическая повторная пересылка недошедших сегментов. Каждый сегмент маркируется при помощи специального поля - порядкового номера (sequence number). После отправки некоторого количества сегментов, TCP на отправляющем узле ожидает подтверждения от получающего, в котором указывается порядковый номер следующего сегмента, который адресат желает получить. В случае, если такое подтверждение не получено, отправка автоматически повторяется. После некоторого количества неудачных попыток, TCP считает, что адресат не доступен, и сессия разрывается.

Таким образом, надёжная доставка не означает, что ваши данные дойдут в случае, если кто-то выдернул кабель из коммутатора. Она означает, что разработчик ПО, использующий TCP на транспортном уровне знает, что если сессия не разорвалась, то всё что он поручил отправить будет доставлено получателю без потерь. Существует множество данных, критичных к потере любой порции информации. Например, если вы скачиваете приложение из интернета, то потеря одного байта будет означать, что вы не сможете воспользоваться тем что скачали. По этой причине многие протоколы уровня приложений используют для транспорта TCP.

Упорядочивание сегментов при получении

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

TCP автоматически пересоберёт их в нужном порядке используя всё то же поле порядковых номеров и передаст после склейки на уровень приложений.

Работа с сессиями

Перед началом передачи полезных данных, TCP позволяет убедиться в том, что получатель существует, слушает нужный отправителю порт и готов принимать данные для этого устанавливается сессия при помощи механизма трёхстороннего рукопожатия (three-way handshake), о котором можно прочесть в соответствующей статье. Далее, в рамках сессии передаются полезные пользовательские данные. После завершения передачи сессия закрывается, тем самым получатель извещается о том, что данных больше не будет, а отправитель извещается о том, что получатель извещён.

Контроль за скоростью передачи

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

Благодаря механизму скользящего окна (sliding window), TCP может работать с сетями разной надёжности. Механизм плавающего окна позволяет менять количество пересылаемых байтов, на которые надо получать подтверждение от адресата. Чем больше размер окна, тем больший объём информации будет передан до получения подтверждения. Для надёжных сетей подтверждения можно присылать редко, чтобы не добавлять трафика, поэтому размер окна в таких сетях автоматически увеличивается. Если же TCP видит, что данные теряются, размер окна автоматически уменьшается. Это связанно с тем, что если мы передали, например, 3 килобайта информации и не получили подтверждения, то мы не знаем, какая конкретно часть из них не дошла и вынуждены пересылать все три килобайта заново. Таким образом, для ненадёжных сетей, размер окна должен быть минимальным.

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

Структура TCP

Заголовок TCP сегмента имеет следующую структуру:

  • Source port и Destination port - это соответственно номера портов получателя и отправителя, идентифицирующие приложений на отправляющем и принимающем узлах.
  • Sequence number и Acknowledgment number - это порядковый номер сегмента и номер подтверждения, которые используются для надёжной доставки. Например, если отправитель шлёт сегмент с SN 100, то получатель может ответить на него ACK 101 SN200, что означает: «Я получил твой сегмент с номером 100 и жду от тебя 101-го, кстати, у меня своя нумерация. Мои номера начинаются с 200» Отправитель, в свою очередь, может ответить SN101 ACK201, что означает «Я получил от тебя сегмент с номером 200, могу принять следующий 201-ый, а вот тебе мой 101-ый сегмент, которого ты ждёшь». Ну и так далее.
  • Header length - Это четырёхбитное поле, содержащее в себе длину заголовка TCP сегмента.
  • Reserved - 6 зарезервированных на всякий случай бит.
  • Control - поле с флагами, которые используются в процессе обмена информацией и описывают дополнительное назначение сегмента. Например, флаг FIN используется для завершения соединений, SYN и ACK - для установки.
  • Window - содержит размер окна, о чём было сказано выше.
  • Checksumm - контрольная сумма заголовка и данных.
  • Urgent - признак важности (срочности) данного сегмента.
  • Options - дополнительное необязательное поле, которое может использоваться, например, для тестирования протокола.
  • В разделе данных содержатся собственно данные, полученные от протокола уровня приложений, либо их кусок, если данные пришлось разбивать.

Протоколы транспортного уровня предназначены для обеспечения непосредственного информационного обмена между двумя пользовательскими процессами. Существует два типа протоколов транспортного уровня – сегментирующие протоколы и не сегментирующие протоколы доставки дейтаграмм.

Сегментирующие протоколы транспортного уровня, разбивают исходное сообщение на блоки данных транспортного уровня - сегменты.

Протоколы доставки дейтаграмм не сегментируют сообщение и отправляют его одним куском, который называется «дейтаграмма». При этом функции установления и разрыва соединения, управления потоком не нужны. Протоколы доставки дейтаграмм просты для реализации, однако, не обеспечивают гарантированной и достоверной доставки сообщений.

В качестве протоколов транспортного уровня в сети Internet могут быть использованы два протокола:

  • UDP User Datagram Protocol
  • TCP Transmission Control Protocol

Идентификация процессов на транспортном уровне

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

  • Синхронизация процесса
  • Буферизация поступающих данных

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

Перечень номеров назначенных портов приведен в документе IETF STD 2

Транспортный протокол UDP

Описание принципов построения протокола UDP приведено в RFC 768. Для передачи сообщений UDP используются пакеты IP. Сообщения UDP в данном случае размещаются в поле данных переносящего их пакета.

Формат сообщения UDP

Дейтаграммы UDP имеют переменную длину и состоят из заголовка сообщения UDP header и собственно сообщения UDP Data. На рисунке приведена структура заголовка сообщения UDP.

Поле UDP DESTINATION PORT

В этом поле должен быть размещен номер порта процесса, которому предназначено данное сообщение.

Поле UDP SOURCE PORT

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

Поле UDP MRSSAGE LENGTH

В поле UDP MRSSAGE LENGTH размещается выраженная в байтах длина сообщения UDP. Сообщение минимальной длины – 8 байт состоит из одного заголовка.

UDP SOURCE PORT UDP DESTINATION PORT
UDP MRSSAGE LENGTH UDP CHECKSUM
DATA

Поле UDP CHECKSUM

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

Использование протокола UDP

Протокол UDP обеспечивает негарантированную доставку сообщений в сети Internet. Этот протокол может быть использован в тех приложениях, которые либо не нуждаются в этом качестве, либо обеспечивают гарантированность доставки другими средствами. Примерами приложений, которые используют протокол UDP, являются TELNET и TFTP.

Транспортный протокол TCP

Протокол TCP используется для обеспечения надежного информационного обмена на транспортном уровне в сетях Internet. Первое описание протокола приведено в RFC 793.

Особенности реализации информационного обмена TCP

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

Надежный информационный обмен предполагает следующие возможности:

  • Потоковый обмен
  • Использование виртуальных соединений
  • Буферизированная передача данных
  • Неструктурированный поток
  • Обмен в режиме полного дуплекса

Потоковый обмен

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

Использование виртуальных соединений

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

Буферизированная передача данных

Использование буферов позволяет согласовать скорость информационного обмена в канале передачи данных с значением скорости передачи данных приложением пользователя.

Для обеспечения требования доставки трафика, который чувствителен к временным задержкам, в дополнение к буферу может быть использован дополнительный механизм «push» - поршень. Использование данного механизма обеспечивает форсирование передачи содержимого буфера в тот момент, когда в него попадают данные, которые чувствительны к временным задержкам.

Методы обеспечения надежного информационного взаимодействия в TCP.

Для обеспечения гарантированной доставки сообщений протокол TCP использует аппарат позитивного квитирования с повторной передачей (positive acknowledgement with retransmission). Обычно при использовании данной схемы получатель информации посылает специальный сигнал ACK в подтверждение ее получения. Дальнейшее выполнение информационного обмена может быть выполнено только в том случае, если передающая сторона получит это подтверждение.

Простая процедура квитирования

Передающая сторона приостанавливает передачу очередного сегмента до получения подтверждения о приеме предыдущего сегмента. Интервал ожидания устанавливается равным значению задержки повторной передачи – retransmit timer. Если в течение этого интервала времени не будет получено подтверждение о приеме переданного сегмента, передача данного сегмента выполняется повторно.

Квитирование с использованием скользящего окна

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

Максимальное число сегментов, которые передающая сторона может передать до получения подтверждения приема первого из них, называется ОКНОМ

При использовании этого механизма принимающая сторона может передавать подтверждение на получение сразу нескольких сегментов.

Процедуры управления потоком TCP

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

Описанный в предыдущем параграфе метод скользящего окна используется протоколом TCP для обеспечения выполнения двух функций:

  • Управление скоростью передачи данных
  • Обеспечение надежной доставки передаваемых данных

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

Первый указывает границу между последним байтом, который был передан и получение которого подтверждено и первым переданным, но неподтвержденным байтом.

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

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

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

Для обеспечения управления потоком в протоколе TCP предусмотрена возможность изменения размера окна. Каждое сообщение подтверждения содержит в себе значение представляемого размера окна - (window advertisement) которое в общем случае определяет размер буфера, который может быть использован в текущий момент для приема информации.

Использование скользящего окна для управления информационным потоком делает ненужным использование дополнительных механизмов для управления переполнением.

Особенности практической реализации протокола TCP

Синдром неоптимального окна

При использовании протокола TCP на линиях, пропускная способность которых была различной в различных направлениях, пользователи могли наблюдать возникновение ситуации, которая получила название синдром неоптимального окна – silly window syndrome - SWS. Данная ситуация характеризуется тем, что одно из взаимодействующих приложений «А» может передавать данные с существенно большей скоростью, чем другое - «В». Если изначально сторона «В» установила размер своего окна равным величине своего буфера, вполне может получиться так, что сторона «А» заполнит весь буфер до того, как получит первое уведомление об изменении размера окна. Исчерпав лимит байтов, установленный для передачи, сторона «А» перейдет в режим ожидания подтверждения. Когда сторона «В» начнет обработку поступивших данных, она сможет освободить некоторую часть буфера и передаст уведомление о соответствующем изменении размера приемного окна. Сторона «А» быстро заполнит освободившееся место в буфере и опять перейдет в режим ожидания. Наиболее неприятным следствием возникновения такой ситуации будет то, что канал передачи данных в направлении от «А» к «В» будет использоваться крайне неэффективно, поскольку сегменты TCP будут использоваться для переноса небольших объемов данных (до 1 байта). Соотношение долей полезной нагрузки и служебной информации в данном случае будет крайне неудачным. Для того, чтобы избежать возникновения SWS в практической реализации протокола TCP используются несколько различных способов.

Способы предотвращение появления SWS на приемной стороне

Для того, чтобы предотвратить возникновение SWS, приемной стороне достаточно передавать представления только для больших изменений размеров окна. Это означает, что сообщение ACK с новым значением размера окна передается не сразу после того, как появится свободное место во входном буфере, а только после того, как размер этого свободного место будет достаточен для приема минимального установленного объема передаваемой информации. Например, в качестве такого минимального объема может быть использован половинный объем приемного буфера. Некоторые реализации протокола TCP могут также использовать в качестве представления величины окна максимальную длину передаваемого сегмента.

Другим способом, который также может быть использован на приемной стороне для предотвращения возникновения эффекта SWS, является процедура задержки подтверждений. Этот метод довольно прост для реализации и в тоже время достаточно эффективен. Действительно, задержка ответа на некоторое постоянное время, позволит избежать SWS и одновременно повысить эффективность использования канала передачи данных – поскольку на все сегменты, которые поступят на приемник в течение интервала задержки, будет сформировано только одно подтверждение. Использование фиксированной задержки подтверждения рекомендовано стандартом для предотвращения SWS. Следует, однако, иметь в виду, что выбор слишком большого времени задержки может привести к повторной передаче сегмента.

Способы предотвращение появления SWS на передающей стороне

Для предотвращения появления SWS передающая сторона может использовать алгоритм Нейгла (Nagle). Суть этого алгоритма заключается в том, что первая порция информации передается немедленно после попадания в буфер, все последующие дожидаются, пока в буфере накопится достаточный для передачи объем данных.

Предыдущая лекция
Протоколы внешней маршрутизации