Porty źródłowe i docelowe są umieszczane wewnątrz segmentu. Segment jest następnie enkaspulowany do pakietu IP. Pakiet IP zawiera adres IP źródła oraz adres IP miejsca docelowego. Kombinacja docelowego i źródłowego adresu IP oraz docelowego i źródłowego numeru portu jest nazywana gniazdem. Gniazdo używane jest do identyfikacji serwera i usług żądanych przez klienta. Każdego dnia tysiące hostów komunikują się z tysiącami serwerów poprzez miliony odrębnie identyfikowanych sesji. Komunikacje te są identyfikowane za pomocą gniazd.

Kombinacja numeru portu warstwy transportu i adresu IP warstwy sieci, jednoznacznie identyfikuje poszczególny proces aplikacji, pracującej na konkretnym hoście. Taka kombinacja zwana jest (wspominanym już) gniazdem. Para gniazd, składająca się ze źródłowych i docelowych adresów IP i numerów portów, identyfikuje jednoznacznie konkretną konwersację pomiędzy dwoma hostami.

Przykładowe gniazdo u klienta, reprezentujące port 1099 może mieć postać: 192.168.1.5:1099

Natomiast gniazdo docelowo na serwerze może wyglądać tak: 192.168.1.7:80

Razem, obydwa tworzą parę gniazd: 192.168.1.5:1099, 192.168.1.7:80

Dzięki utworzeniu gniazd zostają określone punkty końcowe połączenia, tak więc dane mogą poruszać się od aplikacji na jednym hoście do aplikacji na drugim. Gniazda umożliwiają rozróżnianie wielu procesów pracujących u klienta oraz rozróżnianie wielu połączeń z procesami serwera.

Port źródłowy w nagłówku segmentu lub datagramu jest wybierany losowo. Ten port staje się niejako zwrotnym adresem dla aplikacji klienckiej. Warstwa transportowa śledzi na bieżąco ten port i aplikację, która go zainicjowała, więc kiedy do hosta dotrze odpowiedź, zostanie ona przekazana do właściwej aplikacji. Numer portu aplikacji klienckiej będzie użyty jako numer portu docelowego w odpowiedzi nadchodzącej od serwera.