Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерные Сети(Смоленцев С.В., 2002).doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
967 Кб
Скачать
☆

4.9.1.Протокол udp

Протокол UDP (User Datagram Protocol) является протоколом без установления соединения и без подтверждения. Он предоставляет минимальные услуги протоколам прикладного уровня, но при этом с наименьшими издержками на передачу служебной информации. Этот протокол работает в качестве транзитного протокола, обеспечивая взаимодействие между протоколами прикладного и сетевого уровней. Он обеспечивает передачу прикладным программам информацию об опциях принятых IP пакетов, а также ICMP - сообщения, приходящие от транзитных маршрутизаторов в случае невозможности дальнейшей передачи ими IP пакетов. От прикладного уровня протокол UDP передает на сетевой уровень параметры времени жизни и тип сервиса, которые записываются в заголовки IP пакетов. Заголовок UDP сегмента составляет всего 8 байт. Его формат показан в таблице.

Таблица 10. Формат сегмента UDP

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

Номер порта источника

Номер порта назначения

Длина UDP сегмента

Контрольная сумма сегмента

Данные протокола прикладного уровня

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

Хотя в протоколе имеются средства контроля корректности пришедшего сегмента (с помощью контрольной суммы), но информация об этом в виде подтверждения не передается. Протокол UDP используется в случае передачи коротких запросов, когда сам факт ответа на запрос является подтверждением его приема, а так же для передачи сообщений служебных протоколов (RIP, OSPF, DNS, DHCP и т.п.).

4.9.2.Протокол tcp

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

Протокол TCP обеспечивает передачу информации не между компьютерами (как это делает протокол IP), а между прикладными процессами, работающими на каждом из компьютеров, участвующих в обмене информацией. Каждый прикладной процесс имеет точку входа и на транспортном уровне к каждой точке входа организуются очереди входящий и исходящих сегментов. Эти очереди называются портами и протокол TCP использует номера портов для идентификации точки входа прикладной программы, работающей на компьютере. Номер порта это 16 разрядное число (от 0 до 65535), которое назначается или централизованно – для стандартных служб (например: 21 – служба FTP, 23 – telnet, 80 – http и т.п.) или локально – разработчиками соответствующих приложений. Присвоение службам зарезервированных номеров портов осуществляется организацией IANA и они публикуются в стандарте RFC 1700. Номер порта вместе с IP адресом компьютера называются сокетом и однозначно идентифицируют прикладной процесс в сети.

Сегмент TCP имеет более сложную структуру, чем сегмент UDP. Размер TCP заголовка составляет 20 байт (как и размер IP заголовка), его формат показан в таблице.

Таблица 11. Формат сегмента TCP

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

Номер порта источника

Номер порта назначения

Номер последнего отправленного байта

Номер последнего принятого байта

смещение

резерв

контроль

Окно

Контрольная сумма

Указатель срочности

Опции (могут отсутствовать)

Данные протокола прикладного уровня

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

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

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