Насколько я понимаю, это то, что происходит, когда клиент делает запрос на соединение:
- Сервер будет привязан к определенному номеру порта. Номер порта всегда привязан к процессу прослушивания. Поскольку только сервер прослушивает входящие соединения, нам не нужно связываться на стороне клиента
- Сервер продолжит прослушивание этого номера порта.
- Клиент отправит
connect()
запрос. - Сервер примет запрос, используя
accept()
. Как только сервер принимает запрос клиента, ядро выделяет случайный номер порта для сервера для дальнейшегоsend()
иreceive()
, поскольку один и тот же номер порта на сервере не может использоваться для отправки и прослушивания, а предыдущий порт все еще прослушивание новых связей
Учитывая все это, как сервер узнает, на какой порт получает клиент? Я знаю, что клиент будет отправлять сегменты TCP с портом источника и портом назначения, поэтому сервер будет использовать порт источника этого сегмента в качестве порта назначения, но какую функцию вызывает сервер, чтобы узнать об этом порте? Это accept()
?