Для чего используются порты на транспортном уровне
Для чего используются порты на транспортном уровне
Как упоминалось в самом начале, на транспортном уровне присутствуют два протокола – TCP и UDP. TCP используется для гарантированной передачи данных, в то время как UDP используется для передачи потоковых данных.
Функции TCP
Использование портов
TCP и UDP используют порты, которые в свою очередь, делятся на зарезервированные порты и динамические:
Таблица 5.1 Список зарезервированных портов
Номер порта | Протокол Транспортного Уровня | Протокол Уровня Приложений |
---|---|---|
20,21 | TCP | FTP |
22 | TCP | SSH |
23 | TCP | Telnet |
53 | TCP,UDP | DNS |
67,68 | UDP | DHCP |
69 | UDP | TFTP |
80 | TCP | HTTP |
443 | TCP | HTTPS |
Чтобы лучше понять, что такое порты и как их “едят”, разберем пример соединений с использованием портов.
Наверно, самое часто используемое приложение – браузер. Часто мы открываем несколько “вкладок” с одним и тем же сайтом, и у каждой вкладки должно быть отличие, по которому компьютер сможет определить какой вкладке предназначены приходящие данные.
Рисунок 5.1 Передача данных с использованием портов
Компьютер Андрея запросил с веб-сервера три веб-страницы (открыл три “вкладки” в браузере). На рисунке 5.1, Веб-сервер отправляет пакеты с одинаковыми заголовками (в заголовках одинаковые IP адреса), но заголовки сегментов различаются ( обратите внимание на порт отправителя (S_PORT) и порт получателя (D_PORT)). Изначально компьютер Андрея привязал к каждому соединению определенный порт, который был определен случайным образом из динамически распределяемого диапазона (от 49152 по 65535), а обратился он на зарезервированный порт 80 (HTTP). Так происходит со всеми передаваемыми данными, к каждому приложению присваивается определенный порт/порты, таким образом данные получает то приложение, которому они предназначены. Еще можно схематично представить наш пример.
Рисунок 5.2 Схематичное представление соединений
Сегментация
Прежде чем данные будут переданы по сети они должны быть разбиты на сегменты, обычно не превышающие 1460 байт.
Например, вы хотите передать видео файл размером 200Кбайт. Видео не будет передаваться одним целым файлом, оно будет разбито на сегменты, после чего по сети будут передаваться около 137 сегментов (200 000/1460
Установление соединений
Устанавливаются соединения в 3 сообщения, рисунок 5.3.
Рисунок 5.3 Установка соединения TCP
После этих трех сообщений соединение считается установленным, и клиент отправляет запрос на получение данных с сервера.
Завершаются соединения в четыре сегмента, здесь этот процесс рассмотрен не будет.
Восстановление после ошибок
На рисунке 5.4 изображена передача сегментов, и 3-й сегмент не приходит получателю. Введем некоторое пояснение, SEQ, помимо номера сегмента, обозначает количество переданных байт, например, первый сегмент 1400 байт, второй сегмент имеет такой же размер, но номер его 2800, он означает, что при получении этого сегмента будет передано уже 2800 байт. Вернемся к нашему примеру, веб-сервер передает не сразу все сегменты, а по частям, ожидая подтверждения каждой части. Так например, если бы передача прошла успешно, веб сервер бы получил ACK=7000. В нашем примере 3-й сегмент потерялся, поэтому клиент отправляет подтверждение ACK=4200 (как бы спрашивая у сервера, “Где сегмент №4200?”), а сервер это будет трактовать как сегмент с номером 4200 был потерян, и веб-сервер отправляет его еще раз. Вот так и осуществляется восстановление данных после ошибок.
Управление потоком с использованием окон
Максимальная единица передаваемых данных (MTU)
Если вы нашли в тексте ошибку, выделите текст и нажмите Ctrl + Enter
ID: 113 Created: Oct 19, 2016 Modified Oct 07, 2019
Транспортный уровень в OSI и TCP подробный разбор с примерами
Транспортный уровень это 4 уровень в модели взаимодействия открытых систем и 3 уровень в модели TCP/IP.
На канальном уровне мы научились передавать данные между компьютерами, либо по проводам, либо без проводов. На сетевом уровне узнали как строятся составные сети на основе разных технологий канального уровня.
Есть задача, на компьютер который подключен к составной сети приходит пакет. На компьютере работает много сетевых приложений, это может быть электронная почта, скайп, браузер и какие-нибудь другие приложения. На необходимо понять, какому приложению нужно отправить этот пакет. Взаимодействие сетевых приложений и занимается транспортный уровень.
Задачи транспортного уровня (ТУ)
Задача транспортного уровня это передача данных между процессами на разных хостах. На транспортном уровне необходимо обеспечить адресацию. Нам нужно знать для какого процесса назначен тот или иной пакет. Важной задачей ТУ является обеспечение надежности передачи данных. ТУ может предоставлять надежность более высокую, чем надежность сети которая используется для передачи данных. С другой стороны ТУ может и не предоставлять дополнительный уровень надежности, все зависит от требований конкретного приложения.
Модель OSI
Полностью модель взаимодействия открытых систем выглядит так, как показано на рисунке ниже.
Отдельно выделяются хосты, это устройства, где работают полезные пользовательские программы. И сетевое оборудование, такое как маршрутизаторы, коммутаторы и другие сетевые устройства. На сетевом оборудовании есть только 3 уровня: физический, канальный и сетевой. Уровни начиная с транспортного работают только на хостах.
Важной особенностью транспортного уровня является прямое взаимодействие с транспортным уровнем на другом компьютере.
На всех остальных уровнях взаимодействие идет, по звеньям цепи, данные передаются от одного сетевого устройства к другому и так пока не дойдут до нужного хоста.
Транспортный уровень обеспечивает сквозное соединение. Между двумя взаимодействующими хостами может находиться большое количество сетевых устройств, но они не влияют на работу транспортного уровня, поэтому ТУ называется сетенезависимым. Он позволяет скрыть от разработчиков приложений детали сетевого взаимодействия.
Адресации. Порты
Для адресации на транспортном уровне используются порты. Это просто число от 1 до 65 535. Номера у процессов на одном хосте не должны повторяться, иначе мы не сможем понять к какому конкретно процессу отправить пришедший пакет.
Записываются порты, следующим образом 192.168.1.3 :80. Выделенные жирным это IP-адрес, а 80 — это порт. Чтобы в интернете подключиться к какому-нибудь сервису и к службе необходимо указать ip адрес и соответствующий порт.
Типы портов
Если мы хотим подключиться к какому-нибудь сервису в интернете нам нужно знать не только ip адрес, но и порт. Поэтому договорились, что популярные сервисы будут работать на одних и тех же портах. Эти порты называются хорошо или широко известные порты 1-1024.
Ограничение, запускать сервисы работающие на хорошо известных портам могут только пользователи с правами администратора.
Если вы разрабатываете свой сервис, и хотите, чтобы пользователи знали на каком порту он работает, вы можете зарегистрировать этот порт в организации IANA и выбрать себе порт из диапазона зарегистрированные. Но нужно смотреть, чтобы этот порт не был зарегистрирован никаким другим разработчиком приложения.
Использование, как хорошо известных портов, так и зарегистрированных это просто договоренность. Например Web сервер может работать не только на 80 порту, но и на любом другом. Часто используется support номер 88 или 8080. При этом, когда вы подключаетесь к такому веб-серверу Вы должны указать порт на котором он работает.
Динамические порты назначаются операционной системой клиентом. Клиенту, точно также, как и серверу необходим не только ip адрес, но и порт. В случае с клиентом номер порта не имеет принципиального значения, так как клиент отправляет запрос серверу и сервер в запросе увидит, как ip адрес клиента, так и его порт. Поэтому, операционная система назначает клиентам порты автоматически из диапазона динамических портов.
IP-адреса и порты
Рассмотрим пример сетевого взаимодействия с использованием ip адресов и портов. Есть сервер на котором работает web сервер на порту №80. И есть клиент, который хочет подключиться к этому веб серверу.
Клиент открывает браузер, операционная система автоматически назначает ему порт 50298. Браузер выполняет соединение с веб сервером, запрашивает веб страницу. Web сервер отправляет ему эту страницу.
Предположим, что дальше клиент решил открыть еще один браузер и зайти на тот же самый сервер, на ту же самую веб-страницу. Операционная система автоматически назначила браузеру порт 50302. Браузер соединяется с веб-сервером, Web сервер видит в запросе не только ip клиента, но и его порт. Поэтому, когда приходит ответ он отправляется именно в тот браузер, из которого был направлен запрос, а не в другой браузер. Благодаря использованию не только ip адресов, но и портов, никакой путаницы не будет.
Надежность на транспортном уровне
Важной особенностью ТУ является то, что он может обеспечить более высокую надежность, чем сеть которая используется для передачи данных. В настоящее время это эффективно на практике, потому что используются надежные каналы связи, ошибки в этих КС происходят редко. Поэтому можно строить сеть ненадежную, которая будет стоить дешево, а ошибки, так как они возникают редко, можно исправлять программно на хостах транспортного уровня.
В модели OSI предусмотрено много различных вариантов обеспечения надежности на транспортном уровне, но на практике, чаще всего используются две возможности.
Протоколы транспортного уровня TCP/IP
В стеке протоколов tcp на ТУ используется два протокола TCP и UDP. Tcp это протокол, который обеспечивает надежность доставки. Он обеспечивает гарантию доставки и гарантию порядка следования сообщений. Протокол udp не гарантирует доставку данных, но зато работает быстрее, чем протокол tcp.
Заключение
Для взаимодействия с ТУ используется интерфейс сокетов. Многие сетевые приложения взаимодействуют с ТУ. Хотя сейчас все более популярными становятся разработка сетевых приложений, которые взаимодействуют не с транспортным, а с прикладным уровнем.
Что такое TCP- и UPD-порты
Сервисы и порты
На подключенном к сети сервере могут одновременно работать различные программы, которые принимают и обрабатывают данные, например, запросы к web-серверу или сообщения электронной почты. Эти программы называются сетевыми сервисами.
Каждая приходящая на сервер порция данных предназначена для обработки определенным сервисом.
Для того, чтобы сетевая подсистема сервера различала данные, адресованные определенным сервисам, и правильно распределяла их, в протокол TCP/IP было введено понятие номера порта.
Пакеты данных и их заголовки
Каждый пакет данных имеет специальный заголовок, содержащий служебную информацию.
Сетевая подсистема сервера анализирует заголовок пакета, находит номер порта и, согласно его значению, направляет данные той или иной работающей на сервере программе-сервису.
Каждая принимающая сетевые данные программа на сервере при запуске сообщает операционной системе, что готова получать и обрабатывать данные, адресованные на определенный порт.
Распределение пакета данных IP по сервисам в соответствии с номером порта
TCP- и UDP-порты
Порты используются протоколами TCP или UDP.
Протокол UDP предназначен для быстрой передачи порции данных без гарантии доставки и без предварительной установки соединения.
Оба протокола в заголовке пакета данных указывают порт получателя, а также исходящий номер порта. Протокол TCP устанавливает соединение, при котором данные между сервером и клиентом обмениваются между исходящим портом клиента и входящим портом сервера.
Диапазоны портов
Номер порта может находиться в диапазоне от 0 до 65535. Как и другие используемые в сети Интернет ресурсы, номера портов стандартизированы. Все порты в диапазоне 1-1023 называются “системными портами” и распределены, согласно списку, от координационного центра Internet организации IANA.
Порты в диапазоне 1024-49151 называются “пользовательскими”, и они предназначены для настройки дополнительных сервисов по выбору пользователя.
Оставшиеся порты из диапазона 49152-65535 называются “динамическими” и предназначены для использования операционной системой для установки соединений в рамках протокола TCP/IP.
Система Linux применяет в качестве динамических портов диапазон 32768-60999.
Список портов и протоколов
Технически администратор сервера может гибко настраивать используемые порты для каждого из запускаемых на сервере сетевых сервисов. Например, при желании он может изменить номер порта, на котором работает web-сервер, с 80 на 8080. Но при этом, если пользователи не знают, что номер порта изменен, то они не смогут присоединиться к web-серверу. Поэтому для публичных сетевых сервисов принято применять стандартные номера портов.
Если вы работаете с интернет-сервисами, то будет лучше выучить наизусть номера портов, используемых для наиболее часто встречающихся сервисов: HTTP, HTTPS, FTP, SSH, почтовых протоколов.
Таблица наиболее важных и распространенных номеров портов выглядит так:
Порты и URL
Номер порта можно указывать в ссылках на web-ресурсы, то есть в URL (Universal Resource Locator). Это делается с помощью двоеточия, за которым следует номер порта. Если используется стандартный порт протокола HTTP (80) или HTTPS (443), то тогда он не указывается в URL.
Пример URL с указанным номером порта: HTTP://www.myserver.ru:1500/manager
Как просмотреть список используемых портов на сервере
Для пользователей виртуальных и выделенных серверов может понадобиться просмотреть список применяемых на сервере портов TCP и UDP. Для этой задачи в операционной системе Linux имеется утилита Netstat.
Утилита Netstat работает из командной строки. Чтобы просмотреть список используемых для входящих соединений портов, прослушиваемых запущенными на сервере сетевыми сервисами, примените следующую команду:
Netstat выводит информацию в несколько колонок. Номер порта, на который принимаются соединения, можно увидеть в колонке “Local address”. Также в колонке “PID/Program name” можно увидеть, какая программа на сервере слушает конкретный порт.
Порты и безопасность сервера
Порты TCP и UDP используются для соединения с сервером, а значит, могут подвергаться атакам. Например, протокол SSH работает по умолчанию на порте 22, и злоумышленники часто ведут атаку на этот порт, пытаясь подобрать пароль от сервера.
Для повышения уровня безопасности вы можете изменить номер порта для SSH. Например, замените порт 22 на 2222.
1. Отредактируйте на сервере файл /etc/ssh/sshd_config.
2. Найдите в файле строку “Port 22” и измените ее на “Port 2222”.
3. Перезагрузите программу-сервис sshd командой:
Теперь сервер будет принимать SSH-соединения по нестандартному порту 2222, который не известен злоумышленникам.
В других случаях порты менять не нужно, так как большинство плагинов, модулей, почтовых программ и другого стороннего ПО для работы с сайтами и серверами настроено по умолчанию для работы по стандартным портам.
Выводы
1. TCP и UPD- протоколы транспортного уровня:
2. Для просмотра списка используемых на сервере портов TCP и UDP используйте утилиту Netstst в операционной системе Linux.
3. Номера портов сервисов HTTP, HTTPS, FTP, SSH и почтовых протоколов лучше выучить наизусть для более комфортной работы.
Сети и системы передачи информации
Официальная документация по Internet
Все разработчики должны придерживаться этой документации, но на практике, не всегда так происходит.
Адресация в сети Internet.
Компьютер в сети TCP/IP может иметь адреса трех уровней (но не менее двух):
IP-адрес, состоящий из 4 байт, например, 109.26.17.100. Этот адрес используется на сетевом уровне. Он назначается администратором во время конфигурирования компьютеров и маршрутизаторов.
Символьный идентификатор-имя (DNS), например, www.kstu.ru.
IP-адреса принято записывать разбивкой всего адреса по октетам (8), каждый октет записывается в виде десятичного числа, числа разделяются точками. Например, адрес
10100000010100010000010110000011
записывается как
Перевод адреса из двоичной системы в десятичную
IP-адрес хоста состоит из номера IP-сети, который занимает старшую область адреса, и номера хоста в этой сети, который занимает младшую часть.
Базовые протоколы (IP, TCP, UDP)
Стек протоколов TCP/IP
Открытые стандарты протоколов, разрабатываемые независимо от программного и аппаратного обеспечения;
Независимость от физической среды передачи;
Система уникальной адресации;
Стандартизованные протоколы высокого уровня для распространенных пользовательских сервисов.
Стек протоколов TCP/IP
Стек протоколов TCP/IP делится на 4 уровня:
Физический и канальный.
Позже была принята 7-ми уровневая модель ISO.
Данные передаются в пакетах. Пакеты имеют заголовок и окончание, которые содержат служебную информацию. Данные, более верхних уровней вставляются, в пакеты нижних уровней.
Пример инкапсуляции пакетов в стеке TCP/IP
Физический и канальный уровень.
Стек TCP/IP не подразумевает использования каких-либо определенных протоколов уровня доступа к среде передачи и физических сред передачи данных. От уровня доступа к среде передачи требуется наличие интерфейса с модулем IP, обеспечивающего передачу IP-пакетов. Также требуется обеспечить преобразование IP-адреса узла сети, на который передается IP-пакет, в MAC-адрес. Часто в качестве уровня доступа к среде передачи могут выступать целые протокольные стеки, тогда говорят об IP поверх ATM, IP поверх IPX, IP поверх X.25 и т.п.
Межсетевой уровень и протокол IP.
Основу этого уровня составляет IP-протокол.
IP (Internet Protocol) – интернет протокол.
Первый стандарт IPv4 определен в RFC-760 (DoD standard Internet Protocol J. Postel Jan-01-1980)
Первый стандарт IPv6 определен в RFC-1883 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1995)
Протокол IP доставляет блоки данных от одного IP-адреса к другому.
Программа, реализующая функции того или иного протокола, часто называется модулем, например, “IP-модуль”, “модуль TCP”.
Когда модуль IP получает IP-пакет с нижнего уровня, он проверяет IP-адрес назначения.
Также может потребоваться, на границе сетей с различными характеристиками, разбить IP-пакет на фрагменты (фрагментация), а потом собрать в единое целое на компьютере-получателе.
Если модуль IP по какой-либо причине не может доставить IP-пакет, он уничтожается. При этом модуль IP может отправить компьютеру-источнику этого IP-пакета уведомление об ошибке; такие уведомления отправляются с помощью протокола ICMP, являющегося неотъемлемой частью модуля IP. Более никаких средств контроля корректности данных, подтверждения их доставки, обеспечения правильного порядка следования IP-пакетов, предварительного установления соединения между компьютерами протокол IP не имеет. Эта задача возложена на транспортный уровень.
Структура дейтограммы IP. Слова по 32 бита.
TOS играет важную роль в маршрутизации пакетов. Интернет не гарантирует запрашиваемый TOS, но многие маршрутизаторы учитывают эти запросы при выборе маршрута (протоколы OSPF и IGRP).
Коды некоторые протоколов RFC-1700 (1994)
Код | Протокол | Описание |
0 | — | Зарезервировано |
1 | ICMP | Протокол контрольных сообщений |
2 | IGMP | Групповой протокол управления |
4 | IP | IP-поверх-IP (туннели) |
6 | TCP | Протокол управления передачей |
8 | EGP | Протокол внешней маршрутизации |
9 | IGP | Протокол внутренней маршрутизации |
17 | UDP | Протокол дейтограмм пользователя |
35 | IDRP | Междоменный протокол маршрутизации |
36 | XTP | Xpress транспортный протокол |
46 | RSVP | Протокол резервирования ресурсов канала |
88 | IGRP | внутренний протокол маршрутизации |
89 | OSPFIGP | внутренний протокол маршрутизации |
97 | ETHERIP | Ethernet-поверх-IP |
101-254 | — | не определены |
255 | — | зарезервировано |
Протокол IP является маршрутизируемый, для его маршрутизации нужна маршрутная информация.
Маршрутная информация, может быть:
Статической (маршрутные таблицы прописываются вручную)
Динамической (маршрутную информацию распространяют специальные протоколы)
Протоколы динамической маршрутизации:
Другие служебные IP-протоколы
Анализируя заголовок своего пакета, полученного от межсетевого уровня, транспортный модуль определяет по номеру порта получателя, какому из прикладных процессов направлены данные, и передает эти данные соответствующему прикладному процессу. Номера портов получателя и отправителя записываются в заголовок транспортным модулем, отправляющим данные; заголовок транспортного уровня содержит также и другую служебную информацию; формат заголовка зависит от используемого транспортного протокола.
На транспортном уровне работают два основных протокола: UDP и TCP.
Протокол надежной доставки сообщений TCP
TCP (Transfer Control Protocol) – протокол контроля передачи, протокол TCP применяется в тех случаях, когда требуется гарантированная доставка сообщений.
Посылает запрос на следующий пакет, указывая его номер в поле «Номер подтверждения» (AS). Тем самым, подтверждая получение предыдущего пакета.
Делает проверку целостности данных, если пакет битый посылает повторный запрос.
Структура дейтограммы TCP. Слова по 32 бита.
UDP (Universal Datagram Protocol) — универсальный протокол передачи данных, более облегченный транспортный протокол, чем TCP.
Основные отличия от TCP:
Отсутствует соединение между модулями UDP.
Не разбивает сообщение для передачи
При потере пакета запрос для повторной передачи не посылается
Структура дейтограммы UDP. Слова по 32 бита.
Не все поля UDP-пакета обязательно должны быть заполнены. Если посылаемая дейтаграмма не предполагает ответа, то на месте адреса отправителя могут помещаться нули.
Протокол реального времени RTP
По номеру порта транспортные протоколы определяют, какому приложению передать содержимое пакетов.
Порты могут принимать значение от 0-65535 (два байта 2^16).
Некоторые заданные порты RFC-1700 (1994)
Программа для проверки соединения и работы с удаленным хостом.
Работу порта, также можно проверить с помощью telnet.