Можно ли использовать более 65535 портов для реализации Xmpp PubSub или Comet? - PullRequest
3 голосов
/ 25 января 2010

В Comet / Reverse Ajax / PubSub базовая технология / фундаментальная - Long Polling. Так что соединение остается открытым в течение минуты или около того ..
И, согласно моим небольшим знаниям о сети и ОС, TCP / IP поддерживает только 65535 портов, поэтому мой вопрос в том, как любой сервер может одновременно поддерживать более 65535 соединений?

В приложении, которое я создаю, все пользователи собираются подключаться одновременно и хотят обновления в режиме реального времени с сервера .. как, например, обновления в реальном времени.

Ура,

Ответы [ 2 ]

6 голосов
/ 25 января 2010

Вы правы в том, что существует 65535 уникальных портов цифр , но приложение сервера TCP позволяет многим клиентам подключаться к тому же порту на сервере. Например, на веб-сервере все клиенты подключаются к порту 80. Соединения однозначно идентифицируются с помощью четырех кортежей (src-адрес, src-порт, dest-адрес, dest-порт).

Вы обязательно захотите прочитать о так называемой проблеме C10K при разработке своей реализации.

4 голосов
/ 25 января 2010

каждое соединение присваивается следующим образом:

  • исходный ip (может быть любым)
  • порт источника (может быть любым в диапазоне 1024-65535)
  • IP-адрес назначения (IP-адрес вашего сервера)
  • порт назначения (определенный порт, на котором работает ваше приложение)

поэтому количество подключений к серверу ограничено числом всех возможных ips, умноженным на 64000 (примерно) пока ни один сервер не может справиться с этим ...:)

...