Всем привет! В интернете полно статей про сетевые порты, но очень мало где используется нормальный человеческий язык. Именно поэтому я решил написать свою подробную статью по разбору этой темы. Давайте для начала ответим на вопрос – а что же такое сетевой порт в компьютере и информатике в целом.
Определение
Лучше всего расскажу на примере. Представим себе, что у вас есть компьютер, который уже подключен к интернету. У данного компьютера есть свой IP адрес, который определяет его среди множества других сетевых устройств, находящихся в интернет пространстве.
Если кабель от провайдера идёт на компьютер напрямую, то ему присваивается внешний IP адрес. Если же подключение идет через роутер, то внешний IP находится именно у данного интернет-центра. Данный IP нужен для того, чтобы пакеты доходили именно до этого компьютера.
Но тут встаёт небольшая проблема, когда пакет информации доходит, компьютер или сервер не понимает – в каком приложении его открывать?! Вот за данную функцию частично и отвечают порты. Например, пользователь сделал запрос в интернете на определенный сайт. Далее пакет данных доходит до сервера, на котором работает одновременно много системных служб и программ.
В запросе от пользователя также одновременно прописывается информация о порте. Тогда сервер сразу понимает, что запрос был отправлен с целью получения информации о какой-нибудь Web-странице. И сервер отправляет ответ с нужной информацией.
Если говорить грубо, то IP (в нашем примере) – это адрес дома. Но когда почтальон приходит к дому, он не знает в какую квартиру отнести письмо. И вот порт – это и есть номер квартиры. На данный момент существует определенное число портов – 65 535. Вы можете заметить аналогию с многоквартирным домом, по сути в каждом доме есть определенное количество квартир.
Некоторые порты компьютера могут быть открыты или закрыты в зависимости от настроек системы. Также некоторые приложения открывают свои порты или используют смежные. Также не забываем, что для передачи информации по сети используется модель TCP/IP или UDP. Ещё один пример, который сможет более точно объяснить – для чего же нужны сетевые порты на компьютере.
Вася решил завести у себя на компьютере свой Web-сайт. После верстки он все же решил загрузить его на свой компьютер. Конечно, он мог бы арендовать сервер, но он решил сэкономить.
Интернет у него подключен напрямую к системному блоку.
Теперь вопрос знатокам: при запросе из интернета – как компьютер будет понимать, что нужно отдавать по запросу именно страницы сайта, а не данные общих папок или ответ от какого-нибудь запущенного приложения?
Вот тут и будет вступать в силу порт. В данном случае чаще всего используется номера: 80 или 8080. Именно поэтому Вася должен на своем компьютере открыть локальный порт для своего сайта.
Конечно объяснение было немного грубое, и все там обстоит куда сложнее, но моя задача была разъяснить именно суть и назначение порта.
Потому что почему-то нигде толкового объяснения нет, а многие оперируют сложными техническими понятиями.
Номера портов
И так товарищ, ты теперь почти просветлел и понял – что же такое порт. Теперь же давайте поговорим про понятие «номер порта». Как я уже и говорил, в каждом компьютере, сервере, маршрутизаторе существует ровно 65 535 портов. Конечно, используются они не все и есть свободные «адреса».
С 0 до 1023-го – это зарезервированные «квартиры» для систем как Windows, так и Linux. Насчет Mac OS сказать не могу, с данной ОС не работал. Далее с 1024 по 49151 идут свободно используемые входы. То есть их могут использовать отдельные приложения, утилиты или даже системные службы. Некоторые программы могут одновременно использовать один и тот же номер.
Остальные порты, можно сказать – находятся в свободном полете и могут использоваться или не использоваться по усмотрению ОС или пользователя. Запоминать тот или иной номер бессмысленно, потому что их очень и очень много. Например, очень часто для игр на домашних роутерах нужно открыть дополнительные номера. Но запоминать, к какой именно игре используется тот или иной номер, смысла нет.
Но со временем за определенными портами закрепились отведенные службы. Вот пример нескольких из них:
- 20, 21: FTP
- 22: SSH
- 23: Telnet
- 25: SMTP
- 43: WHOIS
- 53: DNS
- 67, 68: DHCP
- 80: HTTP (Веб-port)
- 110: POP3
- 113: аутентификация в IRC
- 143: IMAP
- 161: SNMP
- 194: IRC
- 389: LDAP
- 443: HTTPS
- 587: SMTP
- 631: CUPS
Чаще всего обычный пользователь не задумывается о пробросе, открытии или закрытии портов. Этим занимается сама операционная система, а в частности Брандмауер.
Также при установке приложений, игр и утилит, которые используют интернет или сетевое подключения, они сами прописывают при инсталляции настройки по использованию тех или иных входных номеров.
Некоторые программы используют сразу несколько.
ПРИМЕЧАНИЕ! Портовая конфигурация также есть у роутеров и провайдера.
Просмотр открытых и закрытых портов
Чтобы посмотреть все входные номера, которые используются, заблокированы или ждут своей очереди – можно через консоль. В Windows достаточно зайти в командную строку: для этого нажимаем на кнопки и R и прописываем команду «cmd». Далее нужно будет ввести:
netstat -a
В Kali Linux прописываем другую команду:
less /usr/share/nmap/nmap-services
Для удобства я все же советую использовать удобную программку «Process and port analyzer». Она в более удобном виде выводит все задействованный список портов на данном устройстве. Вы можете посмотреть зарезервированные, свободные и используемые номера.
Таблица портов
Открытие и закрытие
Как я уже и говорил ранее – данную функцию выполняет сама система или установленные программы. Но вы сами можете изменять или добавлять некоторые правила. По сути вам нужно указать сетевой порт, а также приложение или программу, для которой это правило будет действовать. Если же вы будете производить настройку на роутере, то нужно будет указывать IP адрес устройства переадресации.
Для начала вам нужно определиться с тем – какой «вход» вы хотите открыть и для чего. Номер и название приложение вы можете посмотреть в том PDF файле, который я прикрепил выше. Покажу на примере игры World of Warcraft.
Будем открывать официально зарезервированный номерной «вход» – 3724. Вообще в играх чаще всего используется именно UDP порт, который работает в потоковой передаче данных.
Но вам нужно смотреть именно в столбец с портом: там будет подсказка, какой протокол надо использовать в выбранном приложении (TCP или UDP).
- В Windows нужно открыть меню «Пуск» и перейти в «Панель управления».
- Заходим в «Брандмауэр»
- «Дополнительные параметры»
- Слева в окне нажимаем «Правила для входящих подключений». Вы сразу тут увидите очень много правил под каждое установленное приложение.
- В окошке справа выбираем «Создать правило…». Так как мы будем открывать порт для игры, то выбираем вторую галочку.
- Создаем UDP правило и вводим только номер, указанные в том PDF файлике – в моем случае это: 3724 (я показываю на примере игры WOW у вас может быть совершенно другой номер). Вы также можете указать диапазон номеров. Для TCP и UDP лучше создать два правила отдельно.
- Оставляем значение по умолчанию «Разрешить подключение».
ПРИМЕЧАНИЕ! Таким образом вы можете закрыть определенный «вход», выбрав «Блокировать подключение».
- Далее идут правила профилей – можно оставить все. Самое главное, чтобы при подключении к удаленному ресурсу через интернет был включен «Публичный» профиль.
- В самом конце вводим название и описание. В название я советую добавлять номер порта, который вы открыли, чтобы потом его не потерять.
Проброс
Открытие и проброс портов – это разные вещи, хоть некоторые их и путают. Когда вы открываете какой-то «вход», то вы делаете это на конкретном устройстве – например, на своём компьютере.
Проброс портов – обычно делается на сетевом шлюзе, который из внешней сети принимает какой-то запрос от пользователя. Далее он или разрешает данный запрос, или запрещает.
Чаще всего если порт не проброшен, то идет точный запрет, и пользователь не получит ответа.
Например, у вас дома стоит система видеонаблюдения. Сеть камер, подключенных к видеорегистратору, который в свою очередь привязан к интернету с помощью роутера. Камера кстати может быть вообще одна и подключена напрямую к маршрутизатору.
Чтобы просматривать камеру через интернет, отдыхая на Бали или во Вьетнаме, нужно пробросить порт. После проброса, чтобы попасть на камеру, нужно будет зайти в браузер, ввести внешний IP адрес вместе с проброшенным номером, и тогда можно увидеть изображение с камеры.
По пробросу у нас уже есть отдельные инструкции на сайте:
- D-Link
- ASUS
- TP-Link
- Tenda
- Upvel
- ZyXEL Keenetic
Если у вас ещё остались вопрос или есть дополнения, то пишите в х.
Сети и системы передачи информации
10100000.01010001.00000101.10000011 = 160.81.5.131
Перевод адреса из двоичной системы в десятичную
IP-адрес хоста состоит из номера IP-сети, который занимает старшую область адреса, и номера хоста в этой сети, который занимает младшую часть.
160.81.5.131 — IP-адрес
160.81.5. — номер сети
- 131 — номер хоста
- Базовые протоколы (IP, TCP, UDP)
- Стек протоколов TCP/IP
- TCP/IP — собирательное название для набора (стека) сетевых протоколов разных уровней, используемых в Интернет. Особенности 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)
Последняя версия IPv4 — RFC-791 (Internet Protocol J. Postel Sep-01-1981).
Первый стандарт IPv6 определен в RFC-1883 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1995)
Последняя версия IPv6 — RFC-2460 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1998).
Основные задачи:
- Адресация
- Маршрутизация
- Фрагментация датаграмм
- Передача данных
- Протокол IP доставляет блоки данных от одного IP-адреса к другому.
- Программа, реализующая функции того или иного протокола, часто называется модулем, например, “IP-модуль”, “модуль TCP”.
- Когда модуль IP получает IP-пакет с нижнего уровня, он проверяет IP-адрес назначения.
- Если IP-пакет адресован данному компьютеру, то данные из него передаются на обработку модулю вышестоящего уровня (какому конкретно — указано в заголовке IP-пакета).
- Если же адрес назначения IP-пакета — чужой, то модуль IP может принять два решения: первое — уничтожить IP-пакет, второе — отправить его дальше к месту назначения, определив маршрут следования — так поступают маршрутизаторы.
Также может потребоваться, на границе сетей с различными характеристиками, разбить IP-пакет на фрагменты (фрагментация), а потом собрать в единое целое на компьютере-получателе.
Если модуль IP по какой-либо причине не может доставить IP-пакет, он уничтожается.
При этом модуль IP может отправить компьютеру-источнику этого IP-пакета уведомление об ошибке; такие уведомления отправляются с помощью протокола ICMP, являющегося неотъемлемой частью модуля IP.
Более никаких средств контроля корректности данных, подтверждения их доставки, обеспечения правильного порядка следования IP-пакетов, предварительного установления соединения между компьютерами протокол IP не имеет. Эта задача возложена на транспортный уровень.
Структура дейтограммы IP. Слова по 32 бита.
Версия — версия протокола IP (например, 4 или 6)
Длина заг. — длина заголовка IP-пакета.
Тип сервиса (TOS — type of service) — Тип сервиса (подробнее рассмотрен в лекции 8).
TOS играет важную роль в маршрутизации пакетов. Интернет не гарантирует запрашиваемый TOS, но многие маршрутизаторы учитывают эти запросы при выборе маршрута (протоколы OSPF и IGRP).
- Идентификатор дейтаграммы, флаги (3 бита) и указатель фрагмента — используются для распознавания пакетов, образовавшихся путем фрагментации исходного пакета.
- Время жизни (TTL — time to live) — каждый маршрутизатор уменьшает его на 1, что бы пакеты не блуждали вечно.
- Протокол — Идентификатор протокола верхнего уровня указывает, какому протоколу верхнего уровня принадлежит пакет (например: TCP, UDP).
- Коды некоторые протоколов RFC-1700 (1994)
Код | Протокол | Описание |
— | Зарезервировано | |
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 является маршрутизируемый, для его маршрутизации нужна маршрутная информация.
- Маршрутная информация, может быть:
- Статической (маршрутные таблицы прописываются вручную)
- Динамической (маршрутную информацию распространяют специальные протоколы)
Протоколы динамической маршрутизации:
- RIP (Routing Information Protocol) — протокол передачи маршрутной информации, маршрутизаторы динамически создают маршрутные таблицы.
- OSPF (Open Shortest Path First) — протокол «Открой кротчайший путь первым», является внутренним протоколом маршрутизации.
- IGP (Interior Gateway Protocols) — внутренние протоколы маршрутизации, распространяет маршрутную информацию внутри одной автономной системе.
- EGP (Exterior Gateway Protocols) — внешние протоколы маршрутизации, распространяет маршрутную информацию между автономными системами.
- BGP (Border Gateway Protocol) — протокол граничных маршрутизаторов.
- Протокол ICMP
- ICMP (Internet Control Message Protocol) — расширение протокола IP, позволяет передавать сообщения об ошибке или проверочные сообщения.
- Другие служебные IP-протоколы
- IGMP (Internet Group Management Protocol) — позволяет организовать многоадресную рассылку средствами IP.
- RSVP (Resource Reservation Protocol) — протокол резервирования ресурсов.
- ARP (Address Resolution Protocol) — протокол преобразования IP-адреса и адреса канального уровня.
- Транспортный уровень
Протоколы транспортного уровня обеспечивают прозрачную доставку данных между двумя прикладными процессами. Процесс, получающий или отправляющий данные с помощью транспортного уровня, идентифицируется на этом уровне номером, который называется номером порта. Таким образом, роль адреса отправителя и получателя на транспортном уровне выполняет номер порта (или проще — порт).
Анализируя заголовок своего пакета, полученного от межсетевого уровня, транспортный модуль определяет по номеру порта получателя, какому из прикладных процессов направлены данные, и передает эти данные соответствующему прикладному процессу.
Номера портов получателя и отправителя записываются в заголовок транспортным модулем, отправляющим данные; заголовок транспортного уровня содержит также и другую служебную информацию; формат заголовка зависит от используемого транспортного протокола.
- На транспортном уровне работают два основных протокола: UDP и TCP.
- Протокол надежной доставки сообщений TCP
- TCP (Transfer Control Protocol) – протокол контроля передачи, протокол TCP применяется в тех случаях, когда требуется гарантированная доставка сообщений.
Первая и последняя версия TCP — RFC-793 (Transmission Control Protocol J. Postel Sep-01-1981).
Основные особенности:
- Устанавливается соединение.
- Данные передаются сегментами. Модуль TCP нарезает большие сообщения (файлы) на пакеты, каждый из которых передается отдельно, на приемнике наоборот файлы собираются. Для этого нужен порядковый номер (Sequence Number — SN) пакета.
- Посылает запрос на следующий пакет, указывая его номер в поле «Номер подтверждения» (AS). Тем самым, подтверждая получение предыдущего пакета.
- Делает проверку целостности данных, если пакет битый посылает повторный запрос.
Структура дейтограммы TCP. Слова по 32 бита.
- Длина заголовка — задается словами по 32бита.
- Размер окна — количество байт, которые готов принять получатель без подтверждения.
- Контрольная сумма — включает псевдо заголовок, заголовок и данные.
- Указатель срочности — указывает последний байт срочных данных, на которые надо немедленно реагировать.
- URG — флаг срочности, включает поле «Указатель срочности», если =0 то поле игнорируется.
- ACK — флаг подтверждение, включает поле «Номер подтверждения, если =0 то поле игнорируется.
- PSH — флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.
- RST — флаг прерывания соединения, используется для отказа в соединении
- SYN — флаг синхронизация порядковых номеров, используется при установлении соединения.
- FIN — флаг окончание передачи со стороны отправителя
- Протокол UDP
- UDP (Universal Datagram Protocol) — универсальный протокол передачи данных, более облегченный транспортный протокол, чем TCP.
Первая и последняя версия UDP — RFC-768 (User Datagram Protocol J. Postel Aug-28-1980).
Основные отличия от TCP:
- Отсутствует соединение между модулями UDP.
- Не разбивает сообщение для передачи
- При потере пакета запрос для повторной передачи не посылается
UDP используется если не требуется гарантированная доставка пакетов , например, для потокового видео и аудио, DNS (т.к. данные небольших размеров).
Если проверка контрольной суммы выявила ошибку или если процесса, подключенного к требуемому порту, не существует, пакет игнорируется (уничтожается).
Если пакеты поступают быстрее, чем модуль UDP успевает их обрабатывать, то поступающие пакеты также игнорируются.
Структура дейтограммы UDP. Слова по 32 бита.
Не все поля UDP-пакета обязательно должны быть заполнены. Если посылаемая дейтаграмма не предполагает ответа, то на месте адреса отправителя могут помещаться нули.
Протокол реального времени RTP
RTP (Real Time Protocol) — транспортный протокол для приложений реального времени.
RTCP (Real Time Control Protocol) — транспортный протокол обратной связи для приложения RTP..
- Назначение портов
- По номеру порта транспортные протоколы определяют, какому приложению передать содержимое пакетов.
- Порты могут принимать значение от 0-65535 (два байта 2^16).
- Номера портам присваиваются таким образом: имеются стандартные номера (например, номер 21 закреплен за сервисом FTP, 23 — за telnet, 80 — за HTTP), а менее известные приложения пользуются произвольно выбранными локальными номерами (как правило, больше>1024), некоторые из них также зарезервированы.
- Некоторые заданные порты RFC-1700 (1994)
43%
Порт | Служба | Описание |
— | Зарезервировано | |
13 | Daytime | Синхронизация времени |
20 | ftp-data | Канал передачи данных для FTP |
21 | ftp | Передача файлов |
23 | telnet | Сетевой терминал |
25 | SMTP | Передача почты |
37 | time | Синхронизация времени |
43 | Whois | Служба Whois |
53 | DNS | Доменные имена |
67 | bootps | BOOTP и DHCP — сервер |
68 | bootps | BOOTP и DHCP — клиент |
69 | tftp | Упрощенная передача почты |
80 | HTTP | Передача гипертекста |
109 | POP2 | Получение почты |
110 | POP3 | Получение почты |
119 | NNTP | Конференции |
123 | NTP | Синхронизация времени |
137 | netbios-ns | NETBIOS — имена |
138 | netbios-dgm | NETBIOS Datagram Service |
139 | netbios-ssn | NETBIOS Session Service |
143 | imap2 | Получение почты |
161 | SNMP | Протокол управления |
210 | z39.50 | Библиотечный протокол |
213 | IPX | IPX — протокол |
220 | imap3 | Получение почты |
443 | HTTPs | HTTP с шифрованием |
520 | RIP | Динамическая маршрутизация |
Диапазон 1024-65535 | ||
1024 | — | Зарезервировано |
6000-6063 | X11 | Графический сетевой терминал |
- Программа Ping
- Программа для проверки соединения и работы с удаленным хостом.
- Программа TraceRoute — позволяет проверитьмаршрут до удаленного хоста.
- Программа nmap — позволяет сканировать порты.
- Работу порта, также можно проверить с помощью telnet.
Последнее изменение: Понедельник, 10 Апрель 2017, 14:40
2. Лекция — Статическая маршрутизация. ►
Пропустить Люди
- Садыков Александр Мунирович
- Богомолов Владислав Афанасьевич
Просмотр списка участников запрещен в этом курсе Пропустить Категории курсов
TCP
Как упоминалось в самом начале, на транспортном уровне присутствуют два протокола – TCP и UDP. TCP используется для гарантированной передачи данных, в то время как UDP используется для передачи потоковых данных.
Функции TCP
- Использование портов – функция, которая позволяет определить для какого приложения предназначены данные, основываясь на номере порта (можно считать это адресацией транспортного уровня).
- Восстановление после ошибок – работает за счет подтверждений.
- Управление потоком с использованием окон – процесс, определяющий количество сегментов передаваемых до подтверждения.
- Установление и завершение соединений.
- Сегментация и упорядочивание передаваемых данных. Данные, разбитые на сегменты, должны быть собраны, после передачи, в том же порядке, в каком были разбиты изначально.
Использование портов
TCP и UDP используют порты, которые в свою очередь, делятся на зарезервированные порты и динамические:
- с 1 по 1023 – зарезервированные порты (well-known ports, общеизвестные или системные, пример в таблице 5.1);
- с 1024 по 49151 – зарезервированные порты (пользовательские);
- с 49152 по 65535 – динамически распределяемые порты.
Таблица 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 Схематичное представление соединений
На заметку. TCP и UDP могут устанавливать соединения с одинаковыми номерами портов, но при этом они будут считаться разными соединениями, так например, порт UDP 69 и порт TCP 69 – это два различных соединения.
Сегментация
Сегментация – разбивание данных на сегменты.
Прежде чем данные будут переданы по сети они должны быть разбиты на сегменты, обычно не превышающие 1460 байт.
Например, вы хотите передать видео файл размером 200Кбайт. Видео не будет передаваться одним целым файлом, оно будет разбито на сегменты, после чего по сети будут передаваться около 137 сегментов (200 000/1460~137).
Установление соединений
Устанавливаются соединения в 3 сообщения, рисунок 5.3.
Рисунок 5.3 Установка соединения TCP
- TCP устанавливает порт для приложения (для клиента, чаще всего, он находится случайным образом из диапазона от 49152 по 65535, в нашем примере, Source PORT 61734), определяет порт получателя/сервера (Destination PORT 80), случайно выставляет номер сегмента ( SEQuence 300, каждый передаваемый сегмент имеет порядковый номер) и устанавливает параметр SYN (SYNchronization – этот параметр означает инициализацию соединения) в одно из полей заголовка сегмента (напомню, что в каждом заголовке много разных полей – настроек, с помощью которых осуществляется одноуровневое взаимодействие). Такой сегмент приходит на сервер, который просматривает все, что приходит на 80-й порт.
- Сервер формирует ответный сегмент, где он так же указывает порты отправителя и получателя. Но на этом шаге он указывает свой номер сегмента (случайно подобранный, SEQ 900), параметр SYN и новый параметр ACK (ACKnowledgment) – это подтверждение. В нашем примере параметр ACK равен 301, тем самым сервер подтверждает получение сегмента с номером 300, и ожидает получения сегмента с порядковым номером 301.
- Третьим сообщением является ответ клиента на сегмент сервера, в нем указывается следующий порядковый номер (SEQ=301, а был SEQ=300) и подтверждается получение предыдущего сегмента от сервера (ACK=901, подтверждает получение сегмента SEQ=900).
После этих трех сообщений соединение считается установленным, и клиент отправляет запрос на получение данных с сервера.
Завершаются соединения в четыре сегмента, здесь этот процесс рассмотрен не будет.
Восстановление после ошибок
Восстановление данных осуществляется за счет подтверждений (а обнаружение ошибок происходит на канальном уровне, за счет FCS).
Рисунок 5.4 Восстановление данных
На рисунке 5.4 изображена передача сегментов, и 3-й сегмент не приходит получателю. Введем некоторое пояснение, SEQ, помимо номера сегмента, обозначает количество переданных байт, например, первый сегмент 1400 байт, второй сегмент имеет такой же размер, но номер его 2800, он означает, что при получении этого сегмента будет передано уже 2800 байт. Вернемся к нашему примеру, веб-сервер передает не сразу все сегменты, а по частям, ожидая подтверждения каждой части. Так например, если бы передача прошла успешно, веб сервер бы получил ACK=7000. В нашем примере 3-й сегмент потерялся, поэтому клиент отправляет подтверждение ACK=4200 (как бы спрашивая у сервера, “Где сегмент №4200?”), а сервер это будет трактовать как сегмент с номером 4200 был потерян, и веб-сервер отправляет его еще раз. Вот так и осуществляется восстановление данных после ошибок.
Управление потоком с использованием окон
Окно, в понятии TCP – количество сегментов передаваемых до подтверждения. Окно может менять свой размер, уменьшаться (сужаться), т.е. уменьшать кол-во передаваемых сегментов, при возникновении ошибок и расширяться при успешной передаче данных, т.е. увеличивать количество передаваемых сегментов.
Максимальная единица передаваемых данных (MTU)
Maximum Transmission Unit – это максимальный размер пакета, который может быть передан, без дробления на более мелкие пакеты. Этой величиной может управлять транспортный уровень, за счет увеличения или уменьшения сегмента.
Если вы нашли в тексте ошибку, выделите текст и нажмите Ctrl + Enter
ID: 113 Created: Oct 19, 2016 Modified Oct 07, 2019
Самые популярные номера портов TCP и UDP
Протокол управления передачей (TCP) использует набор каналов связи, называемых портами, для управления системным обменом сообщениями между несколькими различными приложениями, работающими на одном физическом устройстве. В отличие от физических портов на компьютерах, таких как USB-порты или Ethernet-порты, TCP-порты являются виртуально программируемыми записями, пронумерованными от 0 до 65535.
Большинство портов TCP являются каналами общего назначения, которые могут вызываться при необходимости, но в остальном бездействуют. Однако некоторые порты с меньшими номерами предназначены для определенных приложений. Хотя многие TCP-порты принадлежат приложениям, которые больше не существуют, некоторые из них очень популярны.
TCP порт 0
TCP фактически не использует порт 0 для сетевого взаимодействия, но этот порт хорошо известен сетевым программистам. Программы сокетов TCP используют порт 0 по соглашению, чтобы запросить доступный порт, который будет выбран и выделен операционной системой. Это избавляет программиста от необходимости выбирать («жесткий код») номер порта, который может не сработать в данной ситуации.
TCP-порты 20 и 21
FTP-серверы используют TCP-порт 21 для управления своей стороной сеансов FTP. Сервер прослушивает команды FTP, поступающие на этот порт, и отвечает соответствующим образом. В активном режиме FTP сервер дополнительно использует порт 20 для инициирования передачи данных обратно клиенту FTP.
TCP-порт 22
Secure Shell использует порт 22. Серверы SSH прослушивают на этом порту входящие запросы на вход от удаленных клиентов.
Из-за характера такого использования порт 22 любого общедоступного сервера часто проверяется сетевыми хакерами и является предметом тщательного изучения в сообществе по сетевой безопасности.
Некоторые защитники рекомендуют администраторам перенести установку SSH на другой порт, чтобы избежать этих атак, в то время как другие утверждают, что это лишь незначительный обходной путь.
TCP-порт 23
Порт 23 управляет telnet , текстовой системой для входа в удаленные системы. Хотя современные подходы к удаленному доступу основаны на Secure Shell на порте 22, порт 23 остается зарезервированным для более старого и менее безопасного приложения telnet.
TCP-порты 25, 110 и 143
Электронная почта опирается на несколько стандартных портов. Порт 25 управляет протоколом Simple Mail Transfer Protocol – инструментом, с помощью которого электронная почта на вашем компьютере направляется на почтовый сервер, а затем с этого сервера в более крупный Интернет для маршрутизации и доставки.
На принимающей стороне порт 110 управляет протоколом почтовой связи версии 3, а порт 143 выделен для протокола доступа к почте через Интернет. POP3 и IMAP контролируют поток электронной почты с сервера вашего провайдера на ваш почтовый ящик.
Безопасные версии SMTP и IMAP различаются в зависимости от конфигурации, но порты 465 и 587 являются общими.
UDP порты 67 и 68
Серверы протокола динамической конфигурации хоста используют UDP-порт 67 для прослушивания запросов, в то время как клиенты DHCP обмениваются данными через UDP-порт 68.
TCP-порты 80 и 443
Возможно, самый известный порт в Интернете – TCP-порт 80 – это значение по умолчанию, которое веб-серверы HyperText Transfer Protocol прослушивают для запросов веб-браузера.
Порт 443 по умолчанию для безопасного HTTP.
UDP-порт 88
Интернет-игра Xbox Live использует несколько разных номеров портов, включая UDP-порт 88.
UDP-порты 161 и 162
По умолчанию простой протокол управления сетью использует UDP-порт 161 для отправки и получения запросов в управляемой сети. Он использует UDP-порт 162 по умолчанию для получения прерываний SNMP от управляемых устройств.
TCP-порт 194
Несмотря на то, что такие инструменты, как приложения для обмена сообщениями на смартфонах, такие как Slack и Microsoft Teams, стали использовать Internet Relay Chat, IRC по-прежнему пользуется популярностью среди людей по всему миру. По умолчанию IRC использует порт 194.
Порты выше 1023
Номера портов TCP и UDP между 1024 и 49151 называются зарегистрированными портами . Управление по присвоению номеров в Интернете ведет список услуг, использующих эти порты, чтобы минимизировать конфликты при использовании.
В отличие от портов с меньшими номерами, разработчики новых служб TCP/UDP могут выбирать определенный номер для регистрации в IANA, а не назначать им номер. Использование зарегистрированных портов также позволяет избежать дополнительных ограничений безопасности, которые операционные системы накладывают на порты с меньшими номерами.