Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_5.docx
Скачиваний:
2
Добавлен:
16.11.2019
Размер:
8.38 Mб
Скачать

Лекція №5 Тема 3. Базові протоколи tcp/ip

3.5 Протоколи транспортного рівня: TCP; UDP.

3.6 Управління потоком даних ­ 9

3.7 Сценарій TCP- з'єднання ­ 13

3.8 Адміністрування мереж TCP/IP ­16

3.9 Інтерфейс програмування сокетів ­ 21

Транспортный уровень

Непосредственно над уровнем Internet расположен транспортный уровень узел-узел, или просто транспортный уровень.

Наиболее важными протоколами транспортного уровня являются протокол управления передачей TCP (Transmission Control Protocol) и протокол пользовательских дейтаграмм UDP (User Datagram Protocol).

TCP обеспечивает надежную доставку данных со сквозным обнаружением и устранением ошибок.

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

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

Порты и сокеты

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

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

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

На рисунке представлено схема мультиплексирования и демультиплексирования на транспортном уровне.

Рис. 5.1

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

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

Если процессы представляют собой популярные системные службы, такие как FTP, telnet, HTTP, TFTP, DNS и т.д., то за ними закрепляются стандартные назначенные номера, называемые также хорошо известными (well-known) номерами портов. Эти номера закрепляются и публикуются в стандартах Интернета (RFC 1700, RFC 3232). Так номер 21 закреплен за серверной частью службы удаленного доступа к файлам FTP, а 23 – за серверной частью службы удаленного управления telnet. Назначенные номера из диапазона от 0 до 1023 являются уникальными в пределах Интернета и закрепляются за приложениями централизовано.

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

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

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

Стандартные назначенные номера портов уникально идентифицирует тип приложения (FTP, HTTP, DNS и др.), однако они не могут использоваться для однозначной идентификации прикладных процессов, связанных с каждым из этих типов приложений.

Прикладной процесс однозначно определяется в пределах сети и в пределах отдельного компьютера парой (IP-адреса, номер порта), называемой сокетом (socket). Сокет определяемый IP-адресом и номером UDP-порта, называется UDP-сокетом, а IP-адресом и номером TCP-порта – TCP-сокетом.

В переводе с английского socket (сокет) – это гнездо, в котором расположены адрес и порт. В процессе обмена, как правило, используются два сокета - сокет отправителя и сокет получателя.

Рис. 5.2

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

Рис. 5.3

UDP, протокол пользовательских дейтаграмм.

Протокол пользовательских дейтаграмм (User Datagram Protocol, UDP) дает прикладным программам прямой доступ к службе доставки дейтаграмм, работающей подобно службе доставки IP. Приложения получают возможность обмениваться протоколами по сети с минимальными «накладными расходами».

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

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

Для доставки данных соответствующим процессам приложений в UDP применяются 16-битные номера для исходного и целевого портов в первом слове заголовка сообщения. Формат сообщения UDP приведен на рис. 5.4.

Рис. 5.4

Более подробно формат заголовка UDP представлен в таблице 1

Таблица №1

К каждому отдельному сообщению UDP добавляет 8-байтный заголовок.

Зачем разработчикам приложений использовать UDP в качестве службы доставки данных?

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

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

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

Порты в заголовке UDP определяют протокол UDP как мультиплексор, который позволяет собирать сообщения от приложений и отправлять их на уровень протоколов. При этом приложение использует определенный порт. Взаимодействующие через сеть приложения могут использовать разные порты, что и отражает заголовок пакета. Всего можно определить 216 разных портов. Первые 256 портов закреплены за так называемыми "well known services" (известные услуги), к которым относятся, например, 53 порт UDP, который закреплен за сервисом DNS.

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

Наиболее известными сервисами, основанными на UDP, является служба доменных имен и распределенная файловая система NFS.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]