Gniazda i porty TCP

TCP implementuje połączenia pomiędzy hostami przy użyciu gniazd i portów. Gniazdo to węzeł końcowy komunikacji sieciowej i może ono być aktywne, albo pasywne. Gniazdo aktywne łączy się ze zdalnym gniazdem aktywnym poprzez otwarte łącze do transmisji danych. Kiedy połączenie zostanie zerwane, niszczy to gniazdo aktywne w obu węzłach końcowych. Gniazdo pasywne nie zostaje podłączone, lecz zamiast tego czeka na połączenie przychodzące, które da początek nowemu gniazdu aktywnemu.
Gniazdo związane jest z portem relacją typu wielu do jednego. Każdy z portów może mieć pojedyncze gniazdo pasywne, oczekujące na połączenia przychodzące oraz kilka gniazd aktywnych, z których każde pokrywa się z połączeniem otwartym w porcie. Gniazdo jest węzłem końcowym w komunikacji sieciowej (podobnym do uchwytu pliku) i tworzy się je poprzez określenie adresu IP jego hosta, typu usługi (TCP lub UDP), oraz wykorzystywanego numeru portu.
Wszystkie połączenia TCP są jednoznacznie identyfikowane za pomocą dwóch gniazd — to jest dwóch par adresów IP i portów TCP (jedna dla hosta wysyłającego i jedna dla hosta odbierającego). Programy TCP wykorzystują zarezerwowane, albo dobrze znane, numery portów. Każdy program po stronie serwera, który wykorzystuje porty TCP, nasłuchuje komunikatów przychodzących pod dobrze znany numer portu. Wszystkie numery portów serwerów TCP o wartościach mniejszych niż 1024 (oraz niektóre wyższe numery) są zarezerwowane i zarejestrowane przez organizację przydzielania numerów internetowych (IANA).
Tabela 7.1 podaje dobrze znane porty serwera TCP, wykorzystywane przez standardowe programy oparte na TCP. Nie jest to lista wyłączna, ale zawiera najczęściej używane porty.