Известные порты
Общеизвестные порты зарезервированы для определенных служб и приложений. Они используется, например, веб-службами (HTTP - порт 80) / почтовыми клиентами (POP3 - порт 110).
Протоколы TCP и UDP: порты, сокеты, установка сеанса, надёжная и ускоренная передача данных
Ананко Софья Михайловна
Качур Анна Юрьевна
Основными протоколами транспортного уровня являются TCP и UDP. Они предназначены для передачи данных по сети, разделяя их на сегменты установленного размера. Более подробная информация о каждом протоколе будет представлена в рамках последующих тематических блоков.
Транспортный уровень, являющийся четвертым уровнем в модели OSI, осуществляет передачу сегментов и выполняет роль посредника между уровнем приложений и нижними уровнями, которые используются сетевыми устройствами для передачи данных.
Транспортный уровень может поддерживать несколько одновременных сеансов связи, сформированных несколькими приложениями, при этом отслеживая каждый процесс отдельно.
С целью передачи больших объемов данных существует сегментация. Суть сегментации состоит в разделении большого объема данных на меньшие фрагменты, которые затем снабжаются заголовками и передаются по сети. В большинстве случаев данные разбиваются на сегменты размером не превышающим 1460 байт. Например, при передаче файла размером 300 килобайт он будет разделен на 206 фрагментов, которые затем передадутся по сети.
Использование сегментации позволяет передавать большие объемы данных в средах передачи данных с ограниченной пропускной способностью. Кроме того, сегментация позволяет мультиплексировать данные из различных приложений через один канал передачи.
Чтобы предотвратить заполнение всей полосы пропускания одним типом данных, что может привести к блокированию передачи другой информации, используется сегментация. С помощью мультиплексирования (чередования) сегментов существует возможность передачи большого количества различных данных в одной и той же сети.
Идентификация приложений на транспортном уровне осуществляется с использованием портов.
Порт – это идентификатор приложения (протокола), которое обрабатывает текущий сегмент на устройстве отправителя и на устройстве получателя.
Порты являются дополнительным компонентом IP-адреса и представляют собой значения в диапазоне от 0 до 65535. Они указываются в заголовке TCP/UDP и состоят из 16-битных чисел, отвечающих за порт источника и порт назначения соответственно.
Номер порта представлен вместе с IP-адресом в следующем формате:
В таблице на следующем слайде показаны наиболее известные порты и приложения, которые они идентифицируют.
| Сервис | Порт |
|---|---|
| HTTP | 80 |
| SSH | 22 |
| DNS | 53 |
| POP3 | 110 |
| IMAP | 143 |
| FTP (команды) | 21 |
| FTP (передача) | 20 |
| Сервис | Порт |
|---|---|
| TFTP | 69 |
| Telnet | 23 |
| HTTPS | 443 |
| NTP | 123 |
| DHCP (клиент) | 67 |
| DHCP (сервер) | 68 |
| SMTP | 25 |
Сокет – это сочетания IP-адреса источника с номером порта источника и IP-адреса назначения с номером порта назначения. Такая связка «IP-адрес:Порт» позволяет однозначно определить конечную точку доставки сообщения, потому что оно будет адресовано не просто какому-то устройству, а конкретному приложению на данном устройстве.
Всего существует три группы портов: общеизвестные, зарегистрированные и динамические/частные.
Общеизвестные порты зарезервированы для определенных служб и приложений. Они используется, например, веб-службами (HTTP - порт 80) / почтовыми клиентами (POP3 - порт 110).
Зарегистрированные порты регистрируется организацией IANA для каких-либо нестандартных служб, в основном, это службы, которыми пользуются не все пользователи, к примеру, RADIUS-сервер использует порт 1812 для аутентификации пользователей.
Динамические/частные порты присваиваются, когда пользователь производит инициализацию сеанса связи при подключении к определенному сервису.
iana.org/assignments/service-names-port-numbers
TCP - один из протоколов транспортного уровня. Его главное отличие - обеспечение надежности доставки данных.
Поля заголовка по порядку, ширина строки – 32 бита. Наведите курсор на поле, чтобы увидеть его назначение.
Для управления сеансом связи в заголовке протокола TCP используется поле длиной 6 бит. Данные биты называются флагами.
SYN – флаг синхронизации порядковых номеров. Когда флаг SYN установлен, в поле «порядковый номер» передается изначальный номер последовательности (Initial Sequence Number, ISN). Первый байт данных будет передан в следующем пакете с номером последовательности, равным ISN+1.
ACK – флаг подтверждения. Данный флаг указывает на то, что в поле «номер подтверждения» указан следующий порядковый номер сегмента, который ожидается для получения на приемной стороне. Также, данный флаг подтверждает приём предыдущих сегментов.
FIN – флаг завершения сеанса связи. Если такой флаг установлен, это означает, что отправитель сигнализирует о завершении передачи данных и не планирует отправлять какие-либо дополнительные данные в рамках текущего соединения.
RST – флаг сброса соединения. Установка этого флага означает немедленный разрыв соединения и игнорирование всех последующих входящих данных из этого соединения.
PSH – флаг функции push. Когда такой флаг установлен, это означает, что необходимо передать все данные из буфера памяти в обработку, даже если он не был заполнен. Протокол TCP использует буферизированную передачу данных как на отправке, так и на приеме. То есть, данные перед отправкой поступают в буфер, и при его заполнении отправляются по адресу. Такой метод позволяет снизить количество служебного трафика (заголовков) в сети.
URG – флаг указателя важности. Установка данного флага означает, что данные в пакете необходимо обработать в приоритетном порядке.
Предположим, что ПК1 необходимо отправить сегменты данных на ПК2. Процесс передачи будет следующим:
Чтобы повысить эффективность отправки, отправитель может отправлять несколько сегментов данных одновременно, которые затем по очереди будет подтверждать получатель.
Клиент отправляет запрос на сервер, используя в качестве порта источника частный порт 54824, а в роли порта назначения – общеизвестный порт 443 (HTTPS). Ноль в Sequence Number обозначает порядковый номер относительно начала сессии; raw – настоящий, «сырой» номер.
В ответе роли портов меняются местами. Ack указан 1 и 3638817701, потому что +1 к начальному номеру последовательности. Размер окна изменился – механизм «скользящего окна».
Вновь порты поменялись местами, потому что это данные от клиента для сервера. Последовательность сменилась на единицу. Размер окна будет изменяться в зависимости от параметров сторон и загруженности сети.
Пример передачи данных при TCP-соединении с размером окна, равным 3000 байт, который был согласован в процессе установления TCP-соединения. После передачи получателю 3000 байт, последний уведомляет отправителя об успешном приеме сообщением с флагом ACK, и отправитель начинает передавать следующий блок данных.
В любой, даже хорошо организованной сети, обычно возникают потери данных. Чтобы справиться с этой проблемой, протокол TCP имеет механизм повторной передачи сегментов.
При получении сегментов целевым узлом подтверждаются только те данные, которые поступили в непрерывной последовательности байт. Если после истечения таймаута узел-отправитель не получил подтверждение о доставке, он повторно отправляет сегменты, начиная с последнего полученного подтверждения (ACK).
К примеру, были получены сегменты с порядковыми номерами от 1 до 3000 и от 6001 до 9000, то номер ACK будет равен 3001.
Данные при передаче по протоколу TCP делятся на сегменты, которые при выборе различных путей маршрутизации могут быть доставлены на узел назначения в измененном порядке. Для того чтобы воссоздать исходный порядок сегментов, протокол TCP использует порядковые номера в заголовках каждого сегмента.
При установлении сеанса связи задается начальный порядковый номер сеанса (ISN), представляющий собой случайное начальное значения счетчика байт, которые были переданы целевому узлу. При дальнейшей передаче сегментов указанное число увеличивается на определенное число байт, что позволяет контролировать передачу данных.
Стоит обратить внимание, что ISN не является строго определенным числом, а задается случайно. Таким образом, можно предотвратить осуществление вредоносных атак.
На узле назначения все полученные сегменты распределяются в правильном порядке и только после этого передаются на уровень приложений.
Протокол UDP так же, как и TCP, использует сегментацию данных, при этом не задействует процессы, отвечающие за уведомление об успешном получении сегмента, что позволяет значительно быстрее передавать данные. Пользуясь преимуществом в скорости и отсутствием подтверждения полученной информации, протокол UDP используется при передаче данных которые могут перенести кратковременные потери во время передачи, например, потоковой видео и звуковой информации, где потеря одной или нескольких датаграмм, т.е. с незначительными перебоями, может не повлиять на общую ситуацию в целом во время передачи.
Основными характеристиками протокола UDP являются:
Датаграмма – блок информации, передающийся с помощью протокола UDP, без гарантированной доставки на узел назначения.
Части сообщения в UDP, передающиеся без предварительного установления канала и последующей гарантии передачи, называются датаграммами. У датаграммы есть заголовок, состоящий из 8 байт:
| Параметры | TCP | UDP |
|---|---|---|
| Гарантия доставки | Является надежным протоколом транспортного уровня, гарантирует доставку сообщения до узла назначения | Не обеспечивает надежную доставку сообщений |
| Упорядоченная доставка | Есть. Для того чтобы воссоздать исходный порядок сегментов, протокол TCP использует порядковые номера в заголовках каждого сегмента | Нет. Протокол UDP не использует порядковые номера датаграмм, поэтому не восстанавливает их исходный порядок, а просто пересылает приложению |
| Установка соединения | Устанавливает соединение перед отправкой данных | Не устанавливает соединение |
| Повторная передача данных | Повторная передача сегментов в случае потери | Нет повторной передачи |
| Скорость передачи | Из-за дополнительных функций гарантии доставки имеет увеличенное время передачи данных | Имеет высокую скорость передачи данных |
| Сферы применения | Передача сообщений электронной почты, HTML-страниц, FTP, SMTP, DNS | TFTP, DHCP, VoIP, DNS |
Приложения, которые могут самостоятельно гарантировать полную передачу данных. В таком случае, контроль правильности передачи данных осуществляется приложением 7-го уровня модели OSI, а не самим протоколом;
Приложения, осуществляющие только отправку запросов и получение ответов;
Приложения для передачи мультимедийного контента в режиме реального времени.
Порядковый номер + длина полезной нагрузки = порядковый номер первого байта следующего сегмента.
В рукопожатии: ответ на SYN с номером a содержит номер подтверждения a+1; третий сегмент – порядковый номер a+1 и номер подтверждения b+1.
Подтверждаются только данные, поступившие в непрерывной последовательности байт.