Si je comprends bien, c'est ce qui se passe lorsqu'un client fait une demande de connexion:
- Le serveur sera lié à un numéro de port particulier. Le numéro de port est toujours lié à un processus d'écoute. Étant donné que seul le serveur écoute les connexions entrantes, nous n'avons pas besoin de lier du côté client
- Le serveur continuera à écouter ce numéro de port.
- Le client enverra une
connect()
demande. - Le serveur acceptera la demande en utilisant
accept()
. Dès que le serveur accepte la demande du client, le noyau alloue un numéro de port aléatoire pour le serveur pour plus loinsend()
etreceive()
, puisque le même numéro de port sur le serveur ne peut pas être utilisé pour l'envoi et l'écoute, et le port précédent est toujours écouter de nouvelles connexions
Compte tenu de tout cela, comment le serveur peut-il savoir sur quel port le client reçoit? Je sais que le client enverra des segments TCP avec un port source et un port de destination, donc le serveur utilisera le port source de ce segment comme port de destination, mais quelle fonction le serveur appelle-t-il pour connaître ce port? C'est ça accept()
?