Порты TCP и UDP можно рассматривать как средства адресации уровня 4. Порты являются идентификаторами, точно так же, как и адреса, но они, в отличие от адресов, обозначают не хост, а приложение на этом хосте. Например, если при просмотре ресурсов Web на компьютере открыто несколько окон браузера, последний без труда определяет, какая Web-страница должна быть открыта в том или ином окне. Причем даже если в двух разных окнах браузера открыта одна и та же Web-страница, то при щелчке на кнопке поиска Search на одной из этих страниц не проходит путаница, и ответ на запрос появляется в том окне, где был выполнен щелчок. Дело в том, что для обозначения отдельных экземпляров программы браузера, применяемых для работы с разными окнами, используются различные номера портов.
Чтобы продолжить эту аналогию, рассмотрим жилой дом. Предположим, что в доме живет 500 человек, но используется только один почтовый адрес. Предположим также, что отправители не пишут на конвертах имена получателей, а только адреса, поскольку предполагают, что каждый конкретный получатель имеет собственный почтовый адрес. Как может действовать человек, живущий в этом доме вместе с 499 другими людьми, чтобы получить свою почту? Да, он должен не только просмотреть все конверты, но и открыть каждое письмо и прочитать его, чтобы узнать, не предназначено ли оно ему!
|
|
|
Именно так действовал бы компьютер без портов. На компьютере пришлось бы открывать все сообщения, предназначенные для 500 разных приложений, но поступающих по одному и тому же адресу, и читать часть каждого сообщения для определения того, предназначено ли оно, например, для программы Outlook, Ping или Internet Explorer. А благодаря использованию портов на компьютере выполняются такие же действия, как при правильной организации доставки почты в аналогии с жилым домом. В доме должны быть установлены отдельные почтовые ящики с одинаковым адресом, но разными номерами квартир, а на компьютере приложениям назначаются разные порты, которые имеют одинаковый адрес, но различные номера. Таким образом, если на компьютере работает Web-сервер и сервер Telnet, то на нем порт 23 назначается как входящий порт для сообщений Telnet, а порт 80 – как входящий порт для запросов HTTP. Поэтому при поступлении каких-либо данных через порт 80 предполагается, что эти данные предназначены для Web-сервера.
Для работы по протоколам TCP и UDP предназначено до 65536 портов (с номерами от 0 до 65535). Порты с номерами от 0 до 1023 называются стандартными. Распределением этих номеров управляет организация IANA, и их нельзя изменять по своему усмотрению. Каждый конкретный порт в этом диапазоне по умолчанию используется одним из распространенных сетевых приложений. Краткий список наиболее широко применяемых портов приведен в табл. 4.4.
|
|
|
Таблица 4.4. Некоторые наиболее широко применяемые порты TCP
| Номер порта TCP | Наименование приложения |
| Данные FTP | |
| Управление FTP | |
| Telnet | |
| SMTP | |
| DNS | |
| Сервер BOOTP | |
| Клиент BOOTP | |
| Finger | |
| HTTP | |
| POP3 | |
| NNTP (Network News Transfer Protocol – сетевой протокол передачи новостей) | |
| NBNS (NetBIOS Name Service – служба имен NetBIOS) | |
| IMAP (Internet Message Access Protocol – протокол доступа к сообщениям Internet) | |
| SNMP | |
| Прерывание SNMP | |
| IRC (Internet Relay Chat – протокол перенаправления текстовых сообщений в Internet) | |
| HTTPS (Hyper Text Transmission protocol, Secure- протокол защищенной передачи гипертекста) |
Порты с номерами от 1024 до 49151 называются зарегистрированными. Эти порты также обычно применяются для серверных сетевых приложений, но не так строго определены, как стандартные порты. А любой порт с номером больше 49151 рассматривается как динамический и может использоваться приложениями по мере необходимости.
Номера портов используются с обеих сторон соединения. Например, предположим, что пользователь работает с одним и тем же Web-сервером, открыв два отдельных окна браузера. При отправке пользователем запроса через одно из этих окон (допустим, окно браузера №1) в заголовке TCP заполняется поле порта отправителя и поле порта получателя. В поле порта получателя, скорее всего, будет введено значение 80 (поскольку получателем является Web-сервер), а в поле порта – случайное число, которое превышает 49151 (пусть это будет 54200). Браузер контролирует это значение и запоминает, что оно используется именно для этого конкретного взаимодействия через окно браузера №1.
Если же теперь будет отправлен запрос через окно браузера №2, в заголовок TCP будет помещено другое обозначение порта отправителя (например 62900). После получения ответа в нем будет указан номер порта отправителя 80 (поскольку пакет поступил с Web-сервера), а номер порта получателя устанавливается равным 54200. Таким образом, браузер может определить, что полученное сообщение должно быть выведено в окно браузера №1, а не №2.






