Les connexions TCP sont-elles déplacées vers un autre port après leur ouverture?

Si un serveur de socket TCP écoute les connexions entrantes sur le port 28081, accepte une connexion et commence à recevoir des données. Le port dans lequel les données arrivent est-il toujours 28081 ou le port est-il modifié?

Par exemple, à quel port les données entrantes arrivent-elles dans le pseudo-code ci-dessous? Est-il toujours 28081 ou le système d’exploitation atsortingbue-t-il un nouveau port?:

bind listen (on port 28081) while 1 fd = accept fork if child process incoming data 

Une connexion TCP est identifiée de manière unique par deux tuples (une pour chaque extrémité) (IP address, TCP port) ). Donc, par définition, on ne peut pas déplacer un port ou l’adresse IP d’une connexion mais en ouvrir un autre.

Si le serveur se connecte au port 28081, toutes les connexions acceptées auront ce port côté serveur (même si elles auront probablement des numéros de port variables côté client).

Par exemple, si deux processus du même ordinateur client vont se connecter au même serveur, l’ IP address et TCP port côté serveur seront les mêmes pour les deux connexions. Du côté client, toutefois, ils auront deux numéros de port différents, ce qui permettra au système d’exploitation d’identifier de manière unique le processus et le descripteur de fichier auxquels les paquets TCP reçus doivent être affectés.

Oui, il rest sur ce port, même si certains protocoles (FTP) peuvent ouvrir une seconde connexion sur un autre port. Ne considérez pas un port comme un chemin physique ou une prise, comme un port USB auquel un seul élément peut être branché. Mais considérez-le plutôt comme un identifiant du service demandé.

Cependant, la nouvelle connexion de socket est souvent transmise à un autre thread qui gère les lectures / écritures pour cette connexion spécifique.

Plusieurs clients peuvent se connecter à un port, car la connexion est identifiée à la fois par l’adresse IP et le port du serveur et du client. Ainsi, accepter la connexion d’un client n’empêche pas les autres de se connecter. Vous pouvez même vous connecter une autre fois à partir du même client (en utilisant un autre port client).