Номер порта — это просто согласованный числовой идентификатор данной сетевой службы. Так как компьютеры в Сети могут предоставлять разнообразные услуги, для указания конкретной службы на данном компьютере используются номера портов. Чтобы два компьютера могли общаться через Сеть, при инициации сетевых соединений оба они должны связать сокеты с одним и тем же именем компьютера и номером порта. Как мы увидим далее, за протоколами Интернета, такими как электронная почта и HTTP, зарезервированы стандартные номера портов, благодаря чему клиенты могут запрашивать услугу независимо от того, какой компьютер предоставляет ее. Порт с номером 80, например, на любом компьютере веб-сервера обычно используется для обслуживания запросов на получение веб-страниц.
Комбинация из имени компьютера и номера порта однозначно идентифицирует каждую сетевую службу. Например, компьютер провайдера услуг Интернета может предоставлять клиентам различные услуги — веб-страницы, Telnet, передачу файлов по FTP, электронную почту и так далее. Каждой службе на компьютере присвоен уникальный номер порта, на который может посылаться запрос. Для получения веб-страниц с веб-сервера программы должны указывать IP-адрес или доменное имя веб-сервера и номер порта, на котором сервер ждет запросы веб-страниц.
Если все это далеко от вас, попробуйте представить себе ситуацию на бытовом языке. Например, чтобы поговорить по телефону с кем-то внутри компании, обычно требуется набрать номер телефона компании и дополнительный номер того сотрудника, который вам нужен. Если вы не знаете номера компании, то можете поискать его в телефонном справочнике по названию компании. В Сети все происходит почти так же — имена компьютеров идентифицируют наборы служб (как компанию), номера портов идентифицируют отдельные службы на конкретном компьютере (как добавочный номер), а доменные имена отображаются в IP— адреса серверами доменных имен (как телефонные книги).
Когда программы используют сокеты для организации взаимодействий с другим компьютером (или с другими процессами на том же компьютере) особыми способами, в них не должны использоваться порты с номерами, зарезервированными для стандартных протоколов, — числами в диапазоне от 0 до 1023, но чтобы понять, почему это так, нужно сначала разобраться с протоколами.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011