Як я розумію, це відбувається, коли клієнт робить запит на з'єднання:
- Сервер буде прив’язаний до певного номера порту. Номер порту завжди пов'язаний з процесом прослуховування. Оскільки тільки сервер прослуховує вхідні з'єднання, нам не потрібно зв'язуватись на стороні клієнта
- Сервер буде постійно слухати цей номер порту.
- Клієнт надішле
connect()
запит. - Сервер прийме запит, використовуючи
accept()
. Як тільки сервер приймає клієнтський запит, ядро виділяє для сервера випадковий номер порту для подальшогоsend()
іreceive()
, оскільки той самий номер порту на сервері не може використовуватися як для надсилання, так і для прослуховування, і попередній порт все ще прослуховування нових з'єднань
Враховуючи все це, як сервер дізнається, який порт отримує клієнт? Я знаю, що клієнт надсилатиме сегменти TCP з портом джерела та портом призначення, тому сервер буде використовувати вихідний порт цього сегмента як порт призначення, але яку функцію викликає сервер, щоб дізнатися про цей порт? Це accept()
?