Лекция 8 Протоколы транспортного уровня tcp и udp. Порты
Протоколы транспортного уровня осуществляют передачу данных между «прикладными процессами», выполняющимися на машинах, подключенных к сети. Данные с сетевого уровня направляются сетевым ПО конкретному процессу получателю и наоборот. На каждом компьютере может выполняться множество процессов, более того, прикладной процесс может иметь несколько точек входа, выступающих в качестве адреса назначения для пакетов данных.
Для однозначной идентификации сетевого приложения, работающего на машине сети, для протоколов транспортного уровня реализована концепция т.н. портов. Порт вместе с IP-адресом однозначно определяют прикладной процесс на любой машине сети. Данный набор идентификационных параметров называетсясокетом (socket). Порты задаются 16-битным числом от 0 до 65535.
Существует три типа номеров портов: назначенные (assigned), зарегистрированные (registered) идинамические (dynamic). Назначенные номера портов располагаются в диапазоне 0 – 1023 и полностью контролируются Комиссией по константамInternet. Они применяются для общеизвестных и стандартизированных сетевых служб. Зарегистрированные номера портов от 1024 до 65535 предназначены для регистрации производителями сетевого ПО своих приложений, работающих с данными портами. Динамические номера портов присваиваются сетевым ПО на локальной машине и могут повторяться от станции к станции для различных приложений.
Протокол udp
Протокол UDP(UserDatagramProtocol– протокол дейтаграмм пользователя) является не ориентированным на соединение транспортным протоколом с ненадежной доставкой данных. Т.е. он не обеспечивает подтверждение доставки пакетов, не сохраняет порядок входящих пакетов, может терять пакеты или дублировать их. ФункционированиеUDPпохоже наIP, за исключением введения понятия портов.UDPобычно работает быстрееTCPза счет меньших «накладных расходов». Он применяется приложениями, которые не нуждаются в надежной доставке, либо реализуют их сами. Например, сервера имен (NameServers), службаTFTP(TrivialFileTransferProtocol, тривиальный протокол передачи данных),SNMP(SimpleNetworkManagementProtocol, простой протокол управления сетью), системы аутентификации. ИдентификаторUDPпротокола в полеProtocolзаголовкаIP– число 17.
Любая прикладная программа, использующая UDPв качестве своей службы транспортного уровня, должна сама обеспечить механизмы подтверждения и систему последовательной нумерации, чтобы гарантировать доставку пакетов в том же порядке, в котором они были высланы.
Транспортный уровень в OSI и TCP подробный разбор с примерами
Транспортный уровень это 4 уровень в модели взаимодействия открытых систем и 3 уровень в модели TCP/IP.
p, blockquote 1,0,0,0,0 —>

p, blockquote 2,0,0,0,0 —>
На канальном уровне мы научились передавать данные между компьютерами, либо по проводам, либо без проводов. На сетевом уровне узнали как строятся составные сети на основе разных технологий канального уровня.
p, blockquote 3,0,0,0,0 —>

p, blockquote 4,0,0,0,0 —>
Есть задача, на компьютер который подключен к составной сети приходит пакет. На компьютере работает много сетевых приложений, это может быть электронная почта, скайп, браузер и какие-нибудь другие приложения. На необходимо понять, какому приложению нужно отправить этот пакет. Взаимодействие сетевых приложений и занимается транспортный уровень.
p, blockquote 5,0,0,0,0 —>

p, blockquote 6,0,0,0,0 —>
Задачи транспортного уровня (ТУ)
Задача транспортного уровня это передача данных между процессами на разных хостах. На транспортном уровне необходимо обеспечить адресацию. Нам нужно знать для какого процесса назначен тот или иной пакет. Важной задачей ТУ является обеспечение надежности передачи данных. ТУ может предоставлять надежность более высокую, чем надежность сети которая используется для передачи данных. С другой стороны ТУ может и не предоставлять дополнительный уровень надежности, все зависит от требований конкретного приложения.
p, blockquote 7,0,0,0,0 —>
Модель OSI
Полностью модель взаимодействия открытых систем выглядит так, как показано на рисунке ниже.
p, blockquote 8,0,1,0,0 —>

p, blockquote 9,0,0,0,0 —>
Отдельно выделяются хосты, это устройства, где работают полезные пользовательские программы. И сетевое оборудование, такое как маршрутизаторы, коммутаторы и другие сетевые устройства. На сетевом оборудовании есть только 3 уровня: физический, канальный и сетевой. Уровни начиная с транспортного работают только на хостах.
p, blockquote 10,0,0,0,0 —>
Важной особенностью транспортного уровня является прямое взаимодействие с транспортным уровнем на другом компьютере.
На всех остальных уровнях взаимодействие идет, по звеньям цепи, данные передаются от одного сетевого устройства к другому и так пока не дойдут до нужного хоста.
p, blockquote 12,0,0,0,0 —>
p, blockquote 13,0,0,0,0 —>
Транспортный уровень обеспечивает сквозное соединение. Между двумя взаимодействующими хостами может находиться большое количество сетевых устройств, но они не влияют на работу транспортного уровня, поэтому ТУ называется сетенезависимым. Он позволяет скрыть от разработчиков приложений детали сетевого взаимодействия.
p, blockquote 14,0,0,0,0 —>
Адресации. Порты
Для адресации на транспортном уровне используются порты. Это просто число от 1 до 65 535. Номера у процессов на одном хосте не должны повторяться, иначе мы не сможем понять к какому конкретно процессу отправить пришедший пакет.
p, blockquote 15,0,0,0,0 —>
Записываются порты, следующим образом 192.168.1.3 :80. Выделенные жирным это IP-адрес, а 80 — это порт. Чтобы в интернете подключиться к какому-нибудь сервису и к службе необходимо указать ip адрес и соответствующий порт.
p, blockquote 16,1,0,0,0 —>
Типы портов
Если мы хотим подключиться к какому-нибудь сервису в интернете нам нужно знать не только ip адрес, но и порт. Поэтому договорились, что популярные сервисы будут работать на одних и тех же портах. Эти порты называются хорошо или широко известные порты 1-1024.
p, blockquote 17,0,0,0,0 —>

p, blockquote 18,0,0,0,0 —>
Ограничение, запускать сервисы работающие на хорошо известных портам могут только пользователи с правами администратора.
Если вы разрабатываете свой сервис, и хотите, чтобы пользователи знали на каком порту он работает, вы можете зарегистрировать этот порт в организации IANA и выбрать себе порт из диапазона зарегистрированные. Но нужно смотреть, чтобы этот порт не был зарегистрирован никаким другим разработчиком приложения.
p, blockquote 20,0,0,0,0 —>
Использование, как хорошо известных портов, так и зарегистрированных это просто договоренность. Например Web сервер может работать не только на 80 порту, но и на любом другом. Часто используется support номер 88 или 8080. При этом, когда вы подключаетесь к такому веб-серверу Вы должны указать порт на котором он работает.
p, blockquote 21,0,0,0,0 —>
Динамические порты назначаются операционной системой клиентом. Клиенту, точно также, как и серверу необходим не только ip адрес, но и порт. В случае с клиентом номер порта не имеет принципиального значения, так как клиент отправляет запрос серверу и сервер в запросе увидит, как ip адрес клиента, так и его порт. Поэтому, операционная система назначает клиентам порты автоматически из диапазона динамических портов.
p, blockquote 22,0,0,0,0 —>
IP-адреса и порты
Рассмотрим пример сетевого взаимодействия с использованием ip адресов и портов. Есть сервер на котором работает web сервер на порту №80. И есть клиент, который хочет подключиться к этому веб серверу.
p, blockquote 23,0,0,0,0 —>
Клиент открывает браузер, операционная система автоматически назначает ему порт 50298. Браузер выполняет соединение с веб сервером, запрашивает веб страницу. Web сервер отправляет ему эту страницу.
p, blockquote 24,0,0,1,0 —>

p, blockquote 25,0,0,0,0 —>
Предположим, что дальше клиент решил открыть еще один браузер и зайти на тот же самый сервер, на ту же самую веб-страницу. Операционная система автоматически назначила браузеру порт 50302. Браузер соединяется с веб-сервером, Web сервер видит в запросе не только ip клиента, но и его порт. Поэтому, когда приходит ответ он отправляется именно в тот браузер, из которого был направлен запрос, а не в другой браузер. Благодаря использованию не только ip адресов, но и портов, никакой путаницы не будет.
p, blockquote 26,0,0,0,0 —>

p, blockquote 27,0,0,0,0 —>
Надежность на транспортном уровне
Важной особенностью ТУ является то, что он может обеспечить более высокую надежность, чем сеть которая используется для передачи данных. В настоящее время это эффективно на практике, потому что используются надежные каналы связи, ошибки в этих КС происходят редко. Поэтому можно строить сеть ненадежную, которая будет стоить дешево, а ошибки, так как они возникают редко, можно исправлять программно на хостах транспортного уровня.
p, blockquote 28,0,0,0,0 —>
В модели OSI предусмотрено много различных вариантов обеспечения надежности на транспортном уровне, но на практике, чаще всего используются две возможности.
- Во-первых ТУ может гарантировать доставку данных. Так как сеть у нас не надежная, некоторые пакеты могут потеряться. Чтобы гарантировать доставку ТУ использует подтверждение. Если через определенное время не пришло подтверждение, то тот же самый пакет отправляется снова.
- Во-вторых ТУ может гарантировать порядок следования сообщений. Так как у нас сеть с пакетной коммутацией, разные пакеты могут пойти через разные маршрутизаторы. И может случиться так, что пакет, который был отправлен позже придет к получателю раньше. Чтобы решить эту проблему на ТУ используется нумерация сообщений.
Протоколы транспортного уровня TCP/IP
В стеке протоколов tcp на ТУ используется два протокола TCP и UDP. Tcp это протокол, который обеспечивает надежность доставки. Он обеспечивает гарантию доставки и гарантию порядка следования сообщений. Протокол udp не гарантирует доставку данных, но зато работает быстрее, чем протокол tcp.
p, blockquote 30,0,0,0,0 —>

p, blockquote 31,0,0,0,0 —>
Заключение
Для взаимодействия с ТУ используется интерфейс сокетов. Многие сетевые приложения взаимодействуют с ТУ. Хотя сейчас все более популярными становятся разработка сетевых приложений, которые взаимодействуют не с транспортным, а с прикладным уровнем.