Простите меня, если этот вопрос не имеет смысла! Есть ли теоретический предел количества сокетов, которые можно использовать одновременно? Насколько я понимаю, сокеты привязаны к портам, и порты могут иметь значение до 65535, является ли это теоретическим ограничивающим фактором для количества сокетов?
Простите меня, если этот вопрос не имеет смысла! Есть ли теоретический предел количества сокетов, которые можно использовать одновременно?
Нет.
Насколько я понимаю, сокеты привязаны к портам, и порты могут иметь значение до 65535, является ли это теоретическим ограничивающим фактором для количества сокетов?
Нет. По многим причинам:
1) розетка жестяная банка быть привязанным к порту, но это не обязательно. Если ты просто позвонишь socket
, вы получите розетку. Он не привязан ни к какому порту.
2) Сокет может быть связан с протоколом, который вообще не использует порты. Например, сокеты потоков домена UNIX вообще не используют порты.
3) Для TCP и UDP каждый локальный IP-адрес получает свой собственный уникальный набор из 65 536 портов.
4) TCP не требует, чтобы локальный IP-адрес или порт были уникальными. Например, HTTP-сервер с IP-адресом 1.2.3.4 и локальным портом 80 может принимать соединения с самых разных удаленных IP-адресов и портов. Все они могут иметь одинаковый локальный IP-адрес и порт, и это не проблема, поскольку удаленные IP-адреса и / или удаленные порты различны. TCP использует все четыре вещи, чтобы различать соединения.
Вы можете проверить ссылку, предоставленную @ Chopper3 для более подробного объяснения, но краткий ответ будет нет.
ПОДРОБНОСТИ
На одном IP-адресе может быть до 65535 портов TCP + 65535 портов UDP. Это ограничено полями Source и Destination в заголовках TCP и UDP, длина которых составляет 16 бит. Это применимо как для IPv4, так и для IPv6.
СООБРАЖЕНИЯ
Учтите, что это теоретическая цифра. Существуют хорошо известные порты, и в реальной работающей системе могут быть службы, которые уже используют некоторые порты, поэтому количество доступных портов будет меньше.
Помните, что сокет всегда привязан к IP и номеру порта. Поэтому, если вам нужно больше портов, вы всегда можете выделить больше IP-адресов для своего хоста. Каждый IP-адрес удвоит количество доступных портов. Этого легко добиться: