Quando un client si connette a un server tramite TCP, viene creato un nuovo socket per il flusso TCP. La connessione rimane sulla stessa porta della connessione o viene modificata in un'altra porta?La porta cambia quando una connessione TCP viene accettata da un server?
risposta
Il nuovo socket è un concetto a livello di applicazione introdotto perché ogni connessione stabilita ha bisogno di un descrittore di file univoco (distinto anche dal descrittore del file di ascolto), che mappa, ma non è uguale a, una sessione TCP. La sessione stessa viene identificata dalla combinazione di indirizzo di origine e di destinazione e porta. La porta di origine (client) viene in genere scelta a caso, mentre la porta di destinazione (server) è la porta di ascolto. Nessuna porta aggiuntiva è assegnata.
Il socket associato al nuovo descrittore restituito da accept
sul server utilizzerà la stessa porta sul lato server della connessione come socket originale (presupponendo definizioni "normali" in cui il client avvia la connessione). Il nuovo socket avrà un numero di porta client diverso (la porta remota dal punto di vista del server).
La sessione è identificata dalla combinazione di IP e porta di origine e di destinazione, E il protocollo. Quindi è una tupla da 5 che identifica in modo univoco la connessione, non la 4-tupla. – treecoder
@treecoder Quale protocollo di livello? Livello di trasporto? O livello di applicazione? Per esempio. '' o ''? –
smwikipedia
livello applicazione – KawaiKx