Итак, давайте углубимся в детали IPv4. Каждый IP-пакет имеет IP-адрес и порт источника, а также IP-адрес и порт назначения. IP-адрес предназначен для всего компьютера, поэтому IP-адреса достаточно, чтобы доставить пакет с компьютера A на компьютер B. Если на одном компьютере запущены две службы, такие как электронная почта и веб-сервер, то IP-пакеты должны достигать нужной службы. Выбор правильного сервиса осуществляется на основе портов.
Если клиент хочет подключиться к серверу, такому как веб-сервер или почтовый сервер, клиент должен знать IP-адрес сервера. В веб-браузере вы вводите DNS-имя или IP-адрес сервера. В почтовом клиенте также вы указали имя почтового сервера. Поэтому, когда клиент хочет подключиться к серверу, единственное, чего не хватает, это порт. Чтобы упростить это, существуют стандарты, которые определяют, какой порт используется / зарезервирован для какой службы. Для http например порт 80 зарезервирован. Веб-сервер только прослушивает порт 80, но игнорирует любые другие порты.
Если вы хотите, вы можете настроить веб-сервер для прослушивания любого порта, который вы хотите, это также может быть, например, порт 12345. Но тогда клиенты должны будут ввести http://ip:12345/
чтобы веб-браузер знал, через какой порт связаться с веб-сервером. Просто указание http://ip/
было бы кратким сокращением для http://ip:80/
.
Итак, как вы видели, сервер работает с четко определенным портом, он получает пакеты, отправленные по адресу destination = server-ip:server-port, и отправляет пакеты с source = server-ip:server-port. Со стороны Cient операционная система открывает новый сокет для каждого нового соединения и назначает уникальный (еще не использованный) порт для сокета. Какой порт используется, не имеет значения. Клиент - это тот, кто инициирует соединение, он отправляет пакеты с source = client-ip:client-port на сервер. Сервер может посмотреть на источник пакета и теперь знает, кто его соединяет и куда он должен отправить ответы.
Каждый четырехместный server-ip:server-port:client-ip:client-port однозначно идентифицирует соединение.
Клиенты рассматривают соединения как исходящие, серверы видят их как входящие. Межсетевые экраны могут иметь исходящие правила (отправка пакетов), и они могут иметь входящие правила (получение пакетов). Если вы хотите заблокировать http-соединения с / на ваш компьютер, единственное, что вы знаете, это порт, который использует сервер. Поэтому, когда вы хотите заблокировать веб-браузеры на вашем компьютере, вы должны определить правило запрета исходящего межсетевого экрана для destination = port 80. Если вы хотите заблокировать другие компьютеры, чтобы они не могли подключиться к веб-серверу, который вы используете на своем компьютере, вы должны определить правило запрета входящего брандмауэра для назначения = порт 80.
Еще несколько вещей, которые вы не просили:
- Не у каждой службы есть назначенный / зарезервированный IP-порт.
- Существуют также протоколы для специальных процедур обнаружения услуг.
- (16 бит) диапазон портов разделен на две части. Номера портов 1-1024 зарезервированы для процессов администратора / системы, в то время как более высокие номера портов могут использоваться любым.