Как проверить наличие TCP соединений (открытые порты на компьютере под Windows). Чем отличается протокол TCP от UDP, простым языком

19.08.2019

Источники: Википедия, Майкрософт, portscan.ru

Как узнать, какие порты открыты на компьютере?

  1. Для Windows: Пуск → «cmd» → Запустить от имени администратора → «netstat -bn»
  2. В антивируснике, таком как Avast, есть возможность посмотреть активные порты в Брандмауэре: инструменты -> Брандмауэр -> Сетевые соединения.

Также полезные команды netstat:

To display both the Ethernet statistics and the statistics for all protocols, type the following command:

netstat -e -s

To display the statistics for only the TCP and UDP protocols, type the following command:

netstat -s -p tcp udp

To display active TCP connections and the process IDs every 5 seconds, type the following command:

nbtstat -o 5

To display active TCP connections and the process IDs using numerical form, type the following command:

nbtstat -n -o

Для сокетов TCP допустимы следующие значения состояния:

CLOSED Закрыт. Сокет не используется.
LISTEN (LISTENING) Ожидает входящих соединений.
SYN_SENT Активно пытается установить соединение.
SYN_RECEIVED Идет начальная синхронизация соединения.
ESTABLISHED Соединение установлено.
CLOSE_WAIT Удаленная сторона отключилась; ожидание закрытия сокета.
FIN_WAIT_1 Сокет закрыт; отключение соединения.
CLOSING Сокет закрыт, затем удаленная сторона отключилась; ожидание подтверждения.
LAST_ACK Удаленная сторона отключилась, затем сокет закрыт; ожидание подтверждения.
FIN_WAIT_2 Сокет закрыт; ожидание отключения удаленной стороны.
TIME_WAIT Сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки

Список наиболее часто используемых портов

Существуют два типа межкомпьютерного обмена данны­ми- датагроммы и сеансы. Датаграмма — это сообщение, которое не требует подтверждения о приеме от принимающей стороны, а если такое подтверждение необходимо, то адресат должен сам послать специальное сообщение. Для осуществ­ления обмена данными таким способом принимающая и пере­дающая стороны должны строго придерживаться определен­ного протокола во избежание потери информации. Каждая датаграмма является самостоятельным сообщением, и при наличии нескольких датаграмм в ЛВС их доставка адресату, вообще говоря, не гарантируется. При этом датаграмма обычно является частью какого-либо сообщения, и в большинстве ЛВС скорость передачи датаграмм гораздо выше, чем сооб­щений в сеансах.

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

Операционные системы большинства компьютеров под­держивают мультипрограммный режим, т.е. несколько про­грамм выполняются одновременно (параллельно выполняется несколько процессов). С некоторой степенью точности можно говорить о том, что процесс — это и есть окончательное место назначения для сообщения. Однако в силу того, что процессы создаются и завершаются динамически, отправитель редко имеет информацию, достаточную для идентификации процес­са на другом компьютере. Поэтому возникает необходимость в определении места назначения данных на основе выполняе­мых процессами функций, ничего не зная о тех процессах, которые реализуются этими функциями.

На практике вместо того, чтобы считать процесс конечным местом назначения, полагают, что каждый компьютер имеет набор некоторых точек назначения, называемых протоколь­ными портами. Каждый порт идентифицируют целым поло­жительным числом (от 0 до 65535). В этом случае операцион­ная система обеспечивает механизм взаимодействия, исполь­зуемый процессами для указания порта, на котором они работают, или порта, к которому нужен доступ. Обычно пор­ты являются Буферизированными, и данные, приходящие в конкретный порт до того, как процесс готов их получить, не будут потеряны: они будут помещены в очередь до тех пор, пока процесс не извлечет их.

Чтобы лучше понять технологию портов, представьте, что вы пришли в банк, чтобы сделать вклад. Для этого вам необхо­димо подойти к определенному окошку, где оператор оформит документы и вы откроете счет. В этом примере банк представ­ляет собой компьютер, а операторы банка — программы, кото­рые выполняют определенную работу, А вот окошки — это и есть порты, при этом каждое окошко в банке часто нумеруется (1, 2,3 …).

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

Порты TCP/IP с номерами от 0 до 1023 являются привилегирован­ными и используются сетевыми службами, которые, в свою очередь, запущены с привилегиями администратора (супер пользователя). Например, служба доступа к файлам и папкам Windows использует порт 139, однако если она не запущена на компьютере, то при попытке обратиться к данной службе (т.е. к данному порту) будет получено сообщение об ошибке.

Порты TCP/IP с 1023 до 65535 являются непривилегированными и используются программами-клиентами для получения ответов от серверов. Например, web-браузер пользователя, обращаясь к web-серверу, использует порт 44587 своего компьютера, но обращается к 80 порту web-сервера. Получив запрос, web-сервер отправляет ответ на порт 44587, который используется web-браузером.

Протокол TCP/IP представляет собой фундамент Internet, с помощью которого компьютеры отправляют и принимают информацию из любой точки земного шара, независимо от географического положения. Обратиться к компьютеру с TCP/IP в другой стране так же просто, как к компьютеру, который находится в соседней комнате. Процедура доступа в обоих случаях идентична, хотя для соединения с машиной в другой стране может потребоваться на несколько миллисекунд больше. В результате граждане любой страны могут без труда делать покупки в Amazon.com; однако из-за логической близости усложняется задача информационной защиты: любой владелец подключенного к Internet компьютера в любой точке мира может попытаться установить несанкционированное соединение с любой другой машиной.

Обязанность ИТ-специалистов - установить брандмауэры и системы обнаружения подозрительного трафика. В ходе анализа пакетов извлекается информация об IP-адресах отправителя и назначения и задействованных сетевых портах. Значение сетевых портов не уступает IP-адресам; это важнейшие критерии для отделения полезного трафика от фальшивых и вредных посылок, поступающих в сеть и исходящих из нее. Основная часть сетевого трафика Internet состоит из пакетов TCP и UDP, которые содержат информацию о сетевых портах, используемых компьютерами для того, чтобы направлять трафик от одного приложения в другое. Необходимое условие безопасности брандмауэра и сети - исчерпывающее понимание администратором принципов использования этих портов компьютерами и сетевыми устройствами.

Изучаем порты

Знание основных принципов работы сетевых портов пригодится любому системному администратору. Имея базовые знания об устройстве портов TCP и UDP, администратор может самостоятельно выполнить диагностику отказавшего сетевого приложения или защитить компьютер, которому предстоит обратиться в Internet, не вызывая сетевого инженера или консультанта по брандмауэрам.

В первой части данной статьи (состоящей из двух частей) дается описание основных понятий, необходимых для рассмотрения сетевых портов. Будет показано место сетевых портов в общей сетевой модели и роль сетевых портов и NAT (Network Address Translation - трансляция сетевых адресов) брандмауэра в соединениях компьютеров компании с Internet. И наконец, будут указаны точки сети, в которых удобно идентифицировать и фильтровать сетевой трафик по соответствующим сетевым портам. Во второй части рассматриваются некоторые порты, используемые широко распространенными приложениями и операционными системами, и рассказывается о некоторых инструментах для поиска открытых портов сети.

Краткий обзор сетевых протоколов

TCP/IP - набор сетевых протоколов, через которые компьютеры устанавливают связь друг с другом. Набор TCP/IP - не более чем фрагменты программного кода, установленные в операционной системе и открывающие доступ к этим протоколам. TCP/IP является стандартом, поэтому приложения TCP/IP на компьютере Windows должны успешно обмениваться данными с аналогичным приложением на машине UNIX. В начальный период развития сетей, в 1983 г., инженеры разработали семиуровневую модель взаимодействия OSI для описания процессов сетевого обмена компьютеров, от кабеля до приложения. Модель OSI состоит из физического, канального, сетевого, транспортного, сеансового представления данных и прикладного уровней. Администраторы, постоянно работающие с Internet и TCP/IP, в основном имеют дело с сетевым, транспортным и прикладным уровнями, но для успешной диагностики необходимо знать и другие уровни. Несмотря на солидный возраст модели OSI, ею по-прежнему пользуются многие специалисты. Например, когда сетевой инженер говорит о коммутаторах уровней 1 или 2, а поставщик брандмауэров - о контроле на уровне 7, они имеют в виду уровни, определенные в модели OSI.

В данной статье рассказывается о сетевых портах, расположенных на уровне 4 - транспортном. В наборе TCP/IP эти порты используются протоколами TCP и UDP. Но прежде чем перейти к подробному описанию одного уровня, необходимо кратко ознакомиться с семью уровнями OSI и той ролью, которую они выполняют в современных сетях TCP/IP.

Уровни 1 и 2: физические кабели и адреса MAC

Уровень 1, физический, представляет собственно среду, в которой распространяется сигнал, - например, медный кабель, волоконно-оптический кабель или радиосигналы (в случае Wi-Fi). Уровень 2, канальный, описывает формат данных для передачи в физической среде. На уровне 2 пакеты организуются в кадры и могут быть реализованы базовые функции управления потоком данных и обработки ошибок. Стандарт IEEE 802.3, более известный как Ethernet,- самый распространенный стандарт уровня 2 для современных локальных сетей. Обычный сетевой коммутатор - устройство уровня 2, с помощью которого несколько компьютеров физически подключаются и обмениваются данными друг с другом. Иногда два компьютера не могут установить соединение друг с другом, хотя IP-адреса кажутся корректными: причиной неполадки могут быть ошибки в кэше протокола преобразования адресов ARP (Address Resolution Protocol), что свидетельствует о неисправности на уровне 2. Кроме того, некоторые беспроводные точки доступа (Access Point, AP) обеспечивают фильтрацию адресов MAC, разрешающую соединение с беспроводной AP только сетевым адаптерам с конкретным MAC-адресом.

Уровни 3 и 4: IP-адреса и сетевые порты

Уровень 3, сетевой, поддерживает маршрутизацию. В TCP/IP маршрутизация реализована в IP. IP-адрес пакета принадлежат уровню 3. Сетевые маршрутизаторы - устройства уровня 3, которые анализируют IP-адреса пакетов и пересылают пакеты другому маршрутизатору или доставляют пакеты в локальные компьютеры. Если в сети обнаружен подозрительный пакет, то в первую очередь следует проверить IP-адрес пакета, чтобы установить место происхождения пакета.

Вместе с сетевым уровнем 4-й уровень (транспортный) - хорошая отправная точка для диагностики сетевых неисправностей. В Internet уровень 4 содержит протоколы TCP и UDP и информацию о сетевом порте, который связывает пакет с конкретным приложением. Сетевой стек компьютера использует связь сетевого порта TCP или UDP с приложением, чтобы направить сетевой трафик в это приложение. Например, TCP-порт 80 связан с приложением Web-сервера. Такое соответствие портов с приложениями известно как служба.

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

Сетевой порт представляет собой число от 1 до 65535, указанное и известное обоим приложениям, между которыми устанавливается связь. Например, клиент, как правило, посылает незашифрованный запрос в сервер по целевому адресу на TCP-порт 80. Обычно компьютер посылает запрос DNS на DNS-сервер по целевому адресу на UDP-порт 53. Клиент и сервер имеют IP-адрес источника и назначения, а также сетевой порт источника и назначения, которые могут различаться. Исторически все номера портов ниже 1024 получили название «известных номеров портов» и зарегистрированы в организации IANA (Internet Assigned Numbers Authority). В некоторых операционных системах только системные процессы могут использовать порты этого диапазона. Кроме того, организации могут зарегистрировать в IANA порты с 1024 по 49151-й, чтобы связать порт со своим приложением. Такая регистрация обеспечивает структуру, которая помогает избежать конфликтов между приложениями, стремящимися использовать порт с одним номером. Однако в целом ничто не мешает приложению запросить конкретный порт, если он не занят другой активной программой.

Исторически сложилось так, что сервер может прослушивать порты с малыми номерами, а клиент - инициировать соединение от порта с большим номером (выше 1024). Например, Web-клиент может открыть соединение с Web-сервером через порт назначения 80, но ассоциировать произвольно выбранный порт-источник, например TCP-порт 1025. Отвечая клиенту, Web-сервер адресует пакет клиенту с портом-источником 80 и портом назначения 1025. Комбинация IP-адреса и порта называется сокетом (socket), она должна быть уникальной в компьютере. По этой причине при организации Web-сервера с двумя отдельными Web-сайтами на одном компьютере необходимо использовать несколько IP-адресов, например address1:80 и address2:80, или настроить Web-сервер на прослушивание нескольких сетевых портов, таких как address1:80 и address1:81. Некоторые Web-серверы обеспечивают работу нескольких Web-сайтов через один порт, запрашивая хост-заголовок, но в действительности эта функция выполняется приложением Web-сервера на более высоком уровне 7.

По мере того как в операционных системах и приложениях появлялись сетевые функции, программисты начали использовать порты с номерами выше 1024, без регистрации всех приложений в IANA. Выполнив в Internet поиск для любого сетевого порта, как правило, удается быстро найти информацию о приложениях, которые используют этот порт. Или же можно провести поиск по словам Well Known Ports и отыскать множество сайтов со списками наиболее типичных портов.

При блокировании сетевых приложений компьютера или устранении изъянов в брандмауэре основная часть работы приходится на классификацию и фильтрацию IP-адресов уровня 3, а также протоколов и сетевых портов уровня 4. Чтобы быстро отличать легальный и подозрительный трафик, следует научиться распознавать 20 наиболее широко используемых на предприятии портов TCP и UDP.

Умение распознавать сетевые порты и знакомство с ними не ограничивается назначением правил для брандмауэра. Например, в некоторых исправлениях для системы безопасности Microsoft описана процедура закрытия портов NetBIOS. Эта мера позволяет ограничить распространение «червей», проникающих через уязвимые места операционной системы. Зная, как и где следует закрыть эти порты, можно уменьшить угрозу безопасности сети во время подготовки к развертыванию важного исправления.

И сразу к уровню 7

В настоящее время редко приходится слышать об уровне 5 (сеансовом) и уровне 6 (представления данных), но уровень 7 (прикладной) - горячая тема среди поставщиков брандмауэров. Новейшая тенденция в развитии сетевых брандмауэров - контроль на уровне 7, который описывает методы, используемые для анализа работы приложения с сетевыми протоколами. Анализируя полезную информацию сетевого пакета, брандмауэр может определить законность проходящего через него трафика. Например, Web-запрос содержит оператор GET внутри пакета уровня 4 (TCP-порт 80). Если в брандмауэре реализованы функции уровня 7, то можно проверить корректность оператора GET. Другой пример - многие одноранговые (P2P) программы обмена файлами могут захватить порт 80. В результате постороннее лицо может настроить программу на использование порта по собственному выбору - скорее всего, порта, который должен оставаться открытым в данном брандмауэре. Если сотрудникам компании нужен выход в Internet, необходимо открыть порт 80, но, чтобы отличить законный Web-трафик от трафика P2P, направленного кем-то в порт 80, брандмауэр должен обеспечивать контроль на уровне 7.

Роль брандмауэра

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

Большинство Internet-брандмауэров работает на уровнях 3 и 4, чтобы исследовать, а затем разрешить или блокировать входящий и исходящий сетевой трафик. В целом администратор составляет списки управления доступом (ACL), которые определяют IP-адреса и сетевые порты блокируемого или разрешенного трафика. Например, чтобы обратиться в Web, нужно запустить браузер и нацелить его на Web-узел. Компьютер инициирует исходящее соединение, посылая последовательность IP-пакетов, состоящих из заголовка и полезной информации. Заголовок содержит информацию о маршруте и другие атрибуты пакета. Правила брандмауэра часто составляются с учетом информации о маршруте и обычно содержат IP-адреса источника и места назначения (уровень 3) и протокола пакета (уровень 4). При перемещениях по Web IP-адрес назначения принадлежит Web-серверу, а протокол и порт назначения (по умолчанию) - TCP 80. IP-адрес источника представляет собой адрес компьютера, с которого пользователь выходит в Web, а порт источника - обычно динамически назначаемое число, превышающее 1024. Полезная информация не зависит от заголовка и генерируется приложением пользователя; в данном случае это запрос Web-серверу на предоставление Web-страницы.

Брандмауэр анализирует исходящий трафик и разрешает его в соответствии с правилами брандмауэра. Многие компании разрешают весь исходящий трафик из своей сети. Такой подход упрощает настройку и развертывание, но из-за отсутствия контроля данных, покидающих сеть, снижается безопасность. Например, «троянский конь» может заразить компьютер в сети предприятия и посылать информацию с этого компьютера другому компьютеру в Internet. Имеет смысл составить списки управления доступом для блокирования такой исходящей информации.

В отличие от принятого во многих брандмауэрах подхода к исходящему трафику, большинство из них настроено на блокирование входящего трафика. Как правило, брандмауэры разрешают входящий трафик только в двух случаях. Первый - трафик, поступающий в ответ на исходящий запрос, посланный ранее пользователем. Например, если указать в браузере адрес Web-страницы, то брандмауэр пропускает в сеть программный код HTML и другие компоненты Web-страницы. Второй случай - размещение в Internet внутренней службы, такой как почтовый сервер, Web- или FTP-узел. Размещение такой службы обычно называется трансляцией порта или публикацией сервера. Реализация трансляции порта у разных поставщиков брандмауэров различна, но в основе лежит единый принцип. Администратор определяет службу, такую как TCP-порт 80 для Web-сервера и внутренний сервер для размещения службы. Если пакеты поступают в брандмауэр через внешний интерфейс, соответствующий данной службе, то механизм трансляции портов пересылает их на конкретный компьютер сети, скрытый за брандмауэром. Трансляция порта используется в сочетании со службой NAT, описанной ниже.

Основы NAT

Благодаря NAT многочисленные компьютеры компании могут совместно занимать небольшое пространство общедоступных IP-адресов. DHCP-сервер компании может выделять IP-адрес из одного из блоков частных, Internet-немаршрутизируемых IP-адресов, определенных в документе Request for Comments (RFC) № 1918. Несколько компаний также могут совместно использовать одно пространство частных IP-адресов. Примеры частных IP-подсетей - 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Маршрутизаторы Internet блокируют любые пакеты, направляемые в один из частных адресов. NAT - функция брандмауэра, с помощью которой компании, в которых используются частные IP-адреса, устанавливают связь с другими компьютерами в Internet. Брандмауэру известно, как транслировать входящий и исходящий трафик для частных внутренних IP-адресов, чтобы каждый компьютер имел доступ в Internet.

На рис. 1 показана базовая схема NAT-соединения между клиентом и Web-сервером. На этапе 1 трафик, направляемый в Internet с компьютера корпоративной сети, поступает на внутренний интерфейс брандмауэра. Брандмауэр получает пакет и делает запись в таблице отслеживания соединений, которая управляет преобразованием адресов. Затем брандмауэр подменяет частный адрес источника пакета собственным внешним общедоступным IP-адресом и посылает пакет по месту назначения в Internet (этап 2). Компьютер назначения получает пакет и передает ответ в брандмауэр (этап 3). Получив этот пакет, брандмауэр отыскивает отправителя исходного пакета в таблице отслеживания соединений, заменяет IP-адрес назначения на соответствующий частный IP-адрес и передает пакет на исходный компьютер (этап 4). Поскольку брандмауэр посылает пакеты от имени всех внутренних компьютеров, он изменяет исходный сетевой порт, и данная информация хранится в таблице отслеживания соединений брандмауэра. Это необходимо, чтобы исходящие сокеты оставались уникальными.

Важно понимать принципы работы NAT, так как NAT изменяет IP-адрес и сетевые порты пакетов трафика. Такое понимание помогает в диагностике неисправностей. Например, становится понятным, почему один трафик может иметь разные IP-адреса и сетевые порты на внешнем и внутреннем интерфейсах брандмауэра.

Сначала фундамент, потом структура

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

Во второй части статьи будет рассмотрен инструментарий для обнаружения приложений в сети путем анализа задействованных сетевых портов. Чтобы отыскать приложения, открывающие порты на прослушивание и доступные по сети, компьютер опрашивается через сеть (сканирование портов) и локально (хост-сканирование). Кроме того, просматривая журналы брандмауэра, можно исследовать сетевой трафик, который пересекает границу сети, и заглянуть в различные сетевые порты, используемые приложениями Windows и UNIX.

Порт в компьютерных сетях является конечной точкой связи в ОС. Данный термин также применяется и для аппаратных устройств, однако в программном обеспечении он обозначает логическую конструкцию, идентифицирующую конкретный вид услуг или процесс. Порт всегда связан с IP адресом хоста или типом протокола связи. Он завершает назначение адреса сеанса связи. Порт идентифицируется для каждого протокола и адреса при помощи 16-битного числа, которое также известно, как номер порта. Часто конкретные номера портов применяются для определения конкретных услуг. Из нескольких тысяч перечисленных 1024 известных номеров защищены в соответствии со специальным соглашением. Они определяют конкретные типы услуг на хосте. Протоколы, которые в основном используют порты, применяются для управления процессами. В качестве примера можно привести протокол управления передачей TCP или User Datagram Protocol из комплекта Internet протоколов.

Значение

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

Детали

Протоколы передачи данных UDP иTCP используются для того, чтобы указать в своих заголовках сегментов номер порта назначения и источник. Номер порта – это 16-разрядное число без знака. Оно может находится в пределах от 0 до 65535. TCP порты тем не менее не могут использовать номер 0. Для UDP порт источника не обязателен. Равное нулю значение означает его отсутствие. Данный процесс связывает входные или выходные каналы посредством транспортного протокола, номера порта и адреса IP через интернет сокет. Данный процесс также известен как связывание. Он дает возможность приема и передачи информации через сеть. Сетевое ПО операционной системы используется для передачи исходящих данных всех портов приложений в сеть. Также оно осуществляет переадресацию прибывающих сетевых пакетов путем сопоставления номера и IP адреса. К определенному IP адресу и комбинации портов, используя один и тот же транспортный протокол, можно привязать только один процесс. Сбои в работе приложений, которые также называют конфликтами, возникают в тех случаях, когда сразу несколько программ пытаются связаться с одними и теми же номерами портов на том же IP адресе, используя один и тот же протокол.

Как они применяются

Приложения, которые реализуют общие службы, довольно часто используют специально зарезервированный и известный список портов UDP и TCP для приема запросов на обслуживание клиентов. Данный процесс также известен под названием прослушивание. Он включает в себя получение запроса с хорошо известного порта и установление диалога между клиентом и сервером один к другому при использовании одного и того же номера локального порта. Другие клиенты могут продолжать подключаться. Это возможно, поскольку соединение TCP идентифицируется как цепочка, которая состоит из локального и удаленного портов и адресов. Стандартные порты UDP и TCP могут быть определены по соглашению под контролем IANA или Internet Assigned Numbers Authority. Как правило, ядро сетевых сервисов, прежде всего это World Wide Web, использует небольшие номера портов, меньше 1024. Во многих ОС для приложений для привязки к ним требуются специальные привилегии. По этой причине они часто считаются критическими для работы сетей IP. Конечный клиент соединения с другой стороны, как правило, использует большее их количество, выделенных для краткосрочного использования. По этой причине и существуют так называемые эфемерные порты.

Структура

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

Примеры использования

Основной пример, в котором активно применяются порты UDP иTCP, это почтовая система Интернет. Сервер используется для работы с электронной почтой. В целом он нуждается в двух услугах. Первый сервис применяется для транспортировки по электронной почте и с других серверов. Достигается это при помощи Simple Mail Transfer Protocol (SMTP). Приложение службы SMTP, как правило, прослушивает порт TCP номер 25 для того, чтобы обрабатывать входящие запросы. Другая услуга представляет собой POP или IMAP. Они необходимы для клиентских приложений в электронной почте на машинах пользователей для того, чтобы получать с сервера сообщения электронной почты. Прослушиваются службами POP номера с порта TCP 110. Все указанные выше службы могут запускаться на одном и том же хост-компьютере. Номер порта, когда это происходит, отличает сервис, запрашиваемый удаленным устройством. Если номер порта прослушивания сервера определен корректно, данный параметр для клиента определяется из динамического диапазона. Клиенты и сервер по отдельности в некоторых случаях используют определенные порты TCP, которые назначены в IANA. В качестве наглядного примера можно привести DHCP. Здесь клиентом в любом случае используется UDP 68, а сервером UDP 67.

Использование в URL-адресах

Иногда номера портов хорошо видны в интернете или на других унифицированных указателях информационных ресурсов, вроде URL. HTTP по умолчанию использует порт TCP 80, а HTTPS – порт 443. Также существуют и другие вариации. Так, например, адрес URL http://www.example.com:8080/pathуказывает на то, что веб-браузер вместо сервера HTTP подключается к 8080.

Список портов UDP и TCP

Как уже было отмечено ранее, IANA или InternetA ssigned Numbers Authority, несет ответственность за глобальную координацию DNS-Root, адресации IP и других ресурсов интернет протокола. Эти процедуры включают в себя регистрацию часто используемых портов для известных интернет-сервисов. Все номера портов разделены между собой на три диапазона: хорошо известные, зарегистрированные и частные или динамические. Известными называют порты, имеющие номера от 0 до 1023. Их также называют системными. Требования, которые предъявляются к новым значения в данном диапазоне, являются более строгими, чем для других регистраций.

Примеры

К примерам портов, находящихся в списке известных, можно отнести:

  • TCP 443 порт – HTTPS;
  • 21 – File Transfer Protocol;
  • 22- Secure Shell;
  • 25 – простой протокол передачи почты STMP;
  • 53 – система доменных имен DNS;
  • 119 – протокол передачи сетевых новостей или NNTP;
  • 80 – протокол передачи гипертекста HTTP;
  • 143 – Internet Message Access Protocol;
  • 123 – протокол сетевого времени NTP;
  • 161- простой протокол управления сетью SNMP.

Зарегистрированные порты обязательно имеют номера от 1024 до 49151. Internet Assigned Numbers Authority поддерживает официальный перечень всех известных и зарегистрированных диапазонов. Частотные или динамические порты находятся в диапазоне от 29152 до 65535. Одним из вариантов использования данного диапазона являются временные порты.

История создания

Концепция номеров портов была разработана ранними создателями ARPANET. Она разрабатывалась в условиях неформального сотрудничества между авторами программного обеспечения и системными администраторами. В то время еще не использовался термин «номер порта». Номерной ряд удаленного хоста представлял собой 40-битное число. Первые 32 бита напоминали сегодняшний адрес IPv4. Наиболее значимыми при этом являлась первые 8 бит. Менее значимая часть числа (это биты с 33 по 40) обозначали объект под названием AEN. Он представлял собой прототип современного номера порта. Впервые создание каталога номеров сокета было предложено 26 марта 1972 года. Администраторов сети тогда призвали описать каждый постоянный номер на предмет сетевых услуг и его функций. Данный каталог впоследствии был опубликован в RFC 433 зимой 1972 года. В него вошел список хостов, их номера портов и соответствующая функция, используемая в каждом узле в сети. Впервые официальные значения номеров портов были задокументированы в мае 1972 года. Тогда же была предложена и специальная административная функция для ведения данного реестра. В первый список портов TCP вошло 256 значений AEN.Они были разделены на следующие диапазоны:

— от 0 до 63 – стандартные функции всей сети;

— от 64 до 127 – хост-специфичные функции;

— от 128 до 239 – функции, зарезервированные для будущего использования;

— от 240 до 255 – любая экспериментальная функция.

Термином AEN в начале существования ARPANET также называли имя сокета, которое применялось с первоначальным протоколом соединения и компонентом программы для управления сетью или NCP. В данном случае NCP представлял собой предшественника современных интернет-протоколов, которые используют порты TCP/IP.

Всем привет сегодня расскажу чем отличается протокол TCP от UDP. Протоколы транспортного уровня, следующие в иерархии за IP, используются для передачи данных между прикладными процессами, реализующимися в сетевых узлах. Пакет данных, поступивший от одного компьютера другому через Интернет, должен быть передан процессу-обработчику, и именно по конкретному назначению. Транспортный уровень принимает на себя ответственность за это. На этом уровне два основных протокола – TCP и UDP.

Что означают TCP и UDP

TCP – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью.

UDP – транспортный протокол, передающий сообщения-датаграммы без необходимости установки соединения в IP-сети.

Напоминаю, что оба протокола работают на транспортном уровне модели OSI или TCP/IP, и понимание того чем они отличаются очень важно.

Разница между протоколами TCP и UDP

Разница между протоколами TCP и UDP – в так называемой “гарантии доставки”. TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение. Также протокол TCP считается надежным, тогда как UDP получил даже именование “протокол ненадежных датаграмм. TCP исключает потери данных, дублирование и перемешивание пакетов, задержки. UDP все это допускает, и соединение для работы ему не требуется. Процессы, которым данные передаются по UDP, должны обходиться полученным, даже и с потерями. TCP контролирует загруженность соединения, UDP не контролирует ничего, кроме целостности полученных датаграмм.

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

Давайте рассмотрим основные отличия tcp от udp.

  1. TCP гарантирует доставку пакетов данных в неизменных виде, последовательности и без потерь, UDP ничего не гарантирует.
  2. TCP нумерует пакеты при передаче, а UDP нет
  3. TCP работает в дуплексном режиме, в одном пакете можно отправлять информацию и подтверждать получение предыдущего пакета.
  4. TCP требует заранее установленного соединения, UDP соединения не требует, у него это просто поток данных.
  5. UDP обеспечивает более высокую скорость передачи данных.
  6. TCP надежнее и осуществляет контроль над процессом обмена данными.
  7. UDP предпочтительнее для программ, воспроизводящих потоковое видео, видеофонии и телефонии, сетевых игр.
  8. UPD не содержит функций восстановления данных

Примерами UDP приложений, например можно привести, передачу DNS зон, в Active Directory, там не требуется надежность. Очень часто такие вопросы любят спрашивать на собеседованиях, так, что очень важно знать tcp и udp отличия.

Заголовки TCP и UDP

Давайте рассмотрим как выглядят заголовки двух транспортных протоколов, так как и тут отличия кардинальные.

Заголовок UDP

  • 16 битный порт источника > Указание порта источника для UDP необязательно. Если это поле используется, получатель может отправить ответ этому порту.
  • 16 битный порт назначения > Номер порта назначения
  • 16 битная длина UDP > Длина сообщения, включая заголовок и данные.
  • 16 битная контрольная сумма > Контрольная сумма заголовка и данных для проверки

Заголовок TCP

  • 16 битный порт источника > Номер порта источника
  • 16 битный порт назначения > Номер порта назначения
  • 32 битный последовательный номер > Последовательный номер генерируется источником и используется назначением, чтобы переупорядочить пакеты для создания исходного сообщения и отправить подтверждение источнику.
  • 32 битный номер подтверждения > Если установлен бит АСК поля "Управление", в данном поле содержит следующий ожидаемый последовательный номер.
  • 4 бита длина заголовка > Информация о начале пакета данных.
  • резерв > Резервируются для будущего использования.
  • 16 битная контрольная сумма > Контрольная сумма заголовка и данных; по ней определяется, был ли искажен пакет.
  • 16 битный указатель срочности > В этом поле целевое устройство получает информацию о срочности данных.
  • Параметры > Необязательные значения, которые указываются при необходимости.

Размер окна позволяет экономить трафик, рассмотрим когда его значение равно 1, тут на каждый отправленный ответ, отправитель ждет подтверждения, не совсем рационально.

При размере окна 3, отправитель отправляет уже по 3 кадра, и ждет от 4, который подразумевает, что все три кадра у него есть, +1.

Надеюсь у вас теперь есть представления об отличиях tcp udp протоколов.

Похожие статьи
 
Порт Протокол Описание
1 20 FTP Data File Transfer Protocol - протокол передачи файлов. Порт для данных.
2 21 FTP Control File Transfer Protocol - протокол передачи файлов. Порт для команд.
3 22 SSH Secure SHell - «безопасная оболочка». Протокол удаленного управления операционной системой.
4 23 telnet TErminaL NETwork. Протокол реализации текстового интерфейса по сети.
5 25 SMTP Simple Mail Transfer Protocol - простой протокол передачи почты.
6 42 WINS Windows Internet Name Service. Служба сопоставления NetBIOS-имён компьютеров с IP-адресами узлов.
7 43 WHOIS «Who is». Протокол получения регистрационных данных о владельцах доменных имён и IP адресах.
8 53 DNS Domain Name System - система доменных имён.
9 67 DHCP Dynamic Host Configuration Protocol - протокол динамической настройки узла. Получение динамических IP.
10 69 TFTP Trivial File Transfer Protocol - простой протокол передачи файлов.
11 80 HTTP/Web HyperText Transfer Protocol - протокол передачи гипертекста.
12 110 POP3 Post Office Protocol Version 3 - протокол получения электронной почты, версия 3.
13 115 SFTP SSH File Transfer Protocol. Протокол защищенной передачи данных.
14 123 NTP Network Time Protocol. Протокол синхронизации внутренних часов компьютера.
15 137 NetBIOS Network Basic Input/Output System. Протокол обеспечения сетевых операций ввода/вывода. Служба имен.
16 138 NetBIOS Network Basic Input/Output System. Протокол обеспечения сетевых операций ввода/вывода. Служба соединения.
17 139 NetBIOS Network Basic Input/Output System. Протокол обеспечения сетевых операций ввода/вывода. Служба сессий.
18 143 IMAP Internet Message Access Protocol. Протокол прикладного уровня для доступа к электронной почте.
19 161 SNMP Simple Network Management Protocol - простой протокол сетевого управления. Управление устройствами.
20 179 BGP Border Gateway Protocol, протокол граничного шлюза. Протокол динамической маршрутизации.
21 443 HTTPS HyperText Transfer Protocol Secure) - протокол HTTP, поддерживающий шифрование.
22 445 SMB Server Message Block. Протокол удалённого доступа к файлам, принтерам и сетевым ресурсам.
23 514 Syslog System Log. Протокол отправки и регистрации сообщений о происходящих системных событиях.
24 515 LPD Line Printer Daemon. Протокол удаленной печати на принтере.
25 993 IMAP SSL Протокол IMAP, поддерживающий SSL шифрование.
26 995 POP3 SSL Протокол POP3 поддерживающий SSL шифрование.
27 1080 SOCKS SOCKet Secure. Протокол получения защищенного анонимного доступа.
28 1194 OpenVPN Открытая реализация технологии Виртуальной Частной Сети (VPN).
29 1433 MSSQL Microsoft SQL Server - система управления базами данных. Порт доступа к базе.
30 1702 L2TP (IPsec) Протокол поддержки виртуальных частных сетей. А также набор протоколов обеспечения защиты данных.
31 1723 PPTP Туннельный протокол защищённого соединения с сервером типа точка-точка.
32 3128 Proxy В данный момент порт часто используется прокси-серверами.
33 3268 LDAP Lightweight Directory Access Protocol - облегчённый протокол доступа к каталогам (службе каталогов).
34 3306 MySQL Доступ к MySQL базам данных.
35 3389 RDP Remote Desktop Protocol - протокол удалённого рабочего стола для Windows.
36 5432 PostgreSQL Доступ к PostgreSQL базам данных.
37 5060 SIP Протокол установления сеанса и передачи мультимедиа содержимого.
38 5900 VNC Virtual Network Computing - система удалённого доступа к рабочему столу компьютера.
39 5938 TeamViewer TeamViewer - система обеспечения удалённого контроля компьютера и обмена данными.
40 8080 HTTP/Web Альтернативный порт для HTTP протокола. Иногда используется прокси-серверами.
41 10000 NDMP Популярный порт: Webmin, SIP-голос, VPN IPSec over TCP.
42 20000 DNP