Gdy klient łączy się z serwerem przy użyciu protokołu TCP, dla strumienia TCP tworzone jest nowe gniazdo. Czy połączenie pozostaje na tym samym porcie, z którym nawiązano połączenie lub czy zostało zmienione na inny port?Czy port zmienia się, gdy połączenie TCP jest akceptowane przez serwer?
Odpowiedz
Nowe gniazdo to koncepcja na poziomie aplikacji, ponieważ każde nawiązane połączenie wymaga unikalnego deskryptora pliku (również odrębnego od deskryptora pliku nasłuchującego), który jest mapowany do sesji TCP, ale nie jest taki sam jak. Sama sesja jest identyfikowana przez połączenie adresu źródłowego i docelowego oraz portu. Port źródłowy (klient) jest zwykle wybierany losowo, a port docelowy (serwer) jest portem nasłuchującym. Nie przydzielono dodatkowego portu.
Gniazdo skojarzone z nowym deskryptorem zwrócone przez accept
na serwerze będzie używać tego samego portu po stronie serwera połączenia, co oryginalne gniazdo (przy założeniu "normalnych" definicji, w których klient inicjuje połączenie). Nowe gniazdo będzie miało inny numer portu klienta (port zdalny z punktu widzenia serwera).
Sesja jest identyfikowana przez kombinację źródłowego i docelowego adresu IP i portu oraz protokołu. Dlatego jest to 5-tka, która jednoznacznie identyfikuje połączenie, a nie 4-tkę. – treecoder
@treecoder Jaki protokół poziomu? Poziom transportu? Lub poziom aplikacji? Na przykład. '' lub ''? –
smwikipedia
poziom aplikacji – KawaiKx