Сервер использует один и тот же порт для прослушивания и принятия нового соединения, а также для связи с удаленным клиентом.
Позвольте мне привести пример (в системе Linux):
Сначала начните http server
с python:
xiongyu@ubuntu:~$ sudo python -m SimpleHTTPServer 500
Serving HTTP on 0.0.0.0 port 500 ...
Повторное использование команды nc
для подключения к http server
, здесь мы запускаем два клиента:
xiongyu@ubuntu:~$ nc 0.0.0.0 500
Используйте netstat
, чтобы увидеть состояние порта 5000:
xiongyu@ubuntu:~$ netstat -natp |grep ':500'
tcp 0 0 0.0.0.0:500 0.0.0.0:* LISTEN 54661/python
tcp 0 0 127.0.0.1:51586 127.0.0.1:500 ESTABLISHED 57078/nc
tcp 0 0 127.0.0.1:51584 127.0.0.1:500 ESTABLISHED 54542/nc
tcp 0 0 127.0.0.1:500 127.0.0.1:51586 ESTABLISHED -
tcp 0 0 127.0.0.1:500 127.0.0.1:51584 ESTABLISHED 54661/python
Как видите, http-сервер использует для клиента порт от 500 до LISTEN
, после подключения нового клиента к серверу он все еще использует порт 500 для связи с клиентом, но с новым дескриптором файла. 1019 *