Задать вопрос

Почему нельзя расширить количество сетевых портов?

Высоконагруженные системы упираются в ограничение количества портов. Используют балансировшики, разводят сервисы по нескольким серверам/адресам. IPv6 призван решить эту проблему поддерживая назначение серверу множества ip-адресов.
А почему нельзя было просто расширить 16-и битное поле в заголовке IP до 32 бит (или больше).
Крупным компаниям не пришлось бы владеть кучей ip-шников для обеспечения доступности. 4294967296 - портов хватило бы за глаза. Это точно лучше чем 10-20-30 адресов с 65535 портами.
Да и в IPv6 тоже ограничились 16 битами для номера порта.
Это имеет какие-то серьёзные предпосылки?
  • Вопрос задан
  • 2306 просмотров
Подписаться 3 Сложный 6 комментариев
Пригласить эксперта
Ответы на вопрос 7
Вы не представляете масштаб legacy ...
Ответ написан
Комментировать
@Amigo83
IT-шник
Так на сервисе то порт для подключения он один - например 80-й, а к клиенту как раз динамический... А балансировка нагрузки что бы железо справлялось, и отказоустойчивость была...
Ответ написан
@throughtheether
human after all
Высоконагруженные системы упираются в ограничение количества портов.
Это вы про TCP порты? Не могли бы вы развить эту мысль? Я вас не вполне понимаю.

IPv6 призван решить эту проблему поддерживая назначение серверу множества ip-адресов.
А в случае IPv4, по-вашему, так сделать нельзя, то есть назначить серверу множество адресов?

На мой взгляд, основную проблему в стеке TCP/IP представляет отсутствие внятного сеансового уровня (session layer в терминах ISO OSI). Поэтому каждый сервис/уровень по-своему категоризирует трафик по сессиям, например TCP по кортежу адресов и портов источника и назначения, HTTP по cookie и так далее. В IPv6 действительно есть релевантное этой проблеме нововведение в виде поля flow label, интересно, какие появятся варианты его практического применения.

Ну и нельзя забывать о том, что сеть - это инфраструктура, а менять инфраструктуру, особенно развитую, долго и трудно.
Ответ написан
martin74ua
@martin74ua Куратор тега Компьютерные сети
Linux administrator
Количество портов - это ограничение всплывает ровно в одном месте - на нате. Для www сервера нужно два порта - 80 и 443. Для других сервисов тоже самое.
А вот та проблема, что клиенту невозможно адрес на соединение назначить - это реальность. Приходится клиентов на нат уводить ;) И развивать IPv6
Ответ написан
Jump
@Jump
Системный администратор со стажем.
Высоконагруженные системы упираются в ограничение количества портов
Нет!
Большинство сервисов принимают подключения на один порт, и не парятся.
Так собственно во всех высоконагруженных системах.
Один порт открыт на нем сотни тысяч подключений, остальные порты закрыты файерволом за ненадобностью.

Чтобы вам не хватило количества портов нужно сильно постараться.
У вас что там на одном физическом сервере - 30тысяч сервисов, и каждый висит на своем порту?
Это дикость.
Обычно сервисов единицы поэтому востребованы один- два порта. Ну десяток.
Ответ написан
Комментировать
ifaustrue
@ifaustrue
Пишу интересное в теллеграмм канале @cooladmin
Хорошая гипотеза, но нет. Портов у нас достаточно, у нас количество коннектов на одном процессоре обработать сложновато, скажем больше 10к коннектов, потому что мы начинаем упираться в шедуллер ОС, который просто не справляется с таким количеством потоков.
Ответ написан
Комментировать
@Redaicd
Предыдущие ораторы похоже не поняли суть вопроса. Да внешний принимающий порт один, но на нагруженных системах за этим портом как правило целая куча серверов и сервисов, так вот для них как раз часто и не хватает 65535. Решение только одно - горизонтальное масштабирование внешних портов(серверов)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы