В двух предыдущих статьях я вкратце рассказал о IP-протоколе и DNS. Теперь пришло время узнать о портах. До этого мы рассматривали интернет как способ различных машин обмениваться данными через сеть. Но это очень грубое сравнение. На самом деле обмениваются данными не компьютеры, а программы и процессы выполняемые на них. И таких процессов может быть много. Для того, чтобы сервер понял, к какому именно процессу мы хотим обратиться одного IP-адреса будет мало. Для этого существуют уникальные идентификаторы - порты.
Порт — это число от 0 до 65535. Номер порта ни на что не влияет, важно лишь то чтобы он был свободен. Впрочем, если ваша программа при запуске обнаружит, что указанный вами порт занят (то есть его уже слушает какая-то другая программа на вашем компьютере), то она вам сразу пожалуется сама.
Допустим вы запустили Программу 1 на Машине 1 (например, это веб-браузер на вашем компьютере), она находит свободный порт 43321 и забирает его себе. Она использует его для запроса к Машине 2, на которой на 80 порту слушает другая программа (Программа 4, например веб-сервер, который при запуске забрал себе 80 порт и готов принимать на нем данные). В таком случае Программа 1 отправляет данные по адресу 10.10.10.10:80 (IP-адрес:порт) , а Программа 4 со второй машины ответит ей на 123.12.12.12:43321.
Обратите внимание, что вы можете обратиться ко 2-ой машине и так - example.com:80, ведь система доменных имен - это лишь алиасы (псевдонимы).
Вероятно вы заметили что в реальной жизни, когда мы хотим перейти на какой-нибудь сайт, мы не вбиваем в адресную строку номер порта. Дело в том, что по умолчанию в мире веба принято, что веб-сервера(программы которые слушают запросы пользователей и возвращают содержимое сайтов) расположены либо на 80 порту(обычное http-соединение), либо на 443 (защищенное https-соединение). Браузеры знают об этом договоре и сами дописывают порт в адрес.
В этой статье появились новые аббревиатуры - HTTP и HTTPS. О них я расскажу в скором времени.