Gniazdo (ang. socket) – pojęcie abstrakcyjne reprezentujące dwukierunkowy punkt końcowy połączenia. Dwukierunkowość oznacza możliwość wysyłania i odbierania danych. Wykorzystywane jest przez aplikacje do komunikowania się przez sieć w ramach komunikacji międzyprocesowej.

Gniazdo posiada trzy główne właściwości: typ gniazda identyfikujący protokół wymiany danych lokalny adres (np. adres IP, IPX, czy Ethernet) opcjonalny lokalny numer portu identyfikujący proces, który wymienia dane przez gniazdo (jeśli typ gniazda pozwala używać portów)

Gniazdo może posiadać (na czas trwania komunikacji) dwa dodatkowe atrybuty: adres zdalny (np. adres IP, IPX, czy Ethernet) opcjonalny numer portu identyfikujący zdalny proces (jeśli typ gniazda pozwala używać portów)

Adres IP wyznacza węzeł w sieci, numer portu określa proces w węźle, a typ gniazda determinuje sposób wymiany danych.

Jeśli gniazdo używa numerów portów, to lokalny numer portu może zostać przydzielony automatycznie i nosi wtedy nazwę efemerycznego numeru portu (ang. ephemeral port number). Lokalny numer portu może też zostać wymuszony przez wykonanie przypisania (ang. bind) gniazdu numeru pożądanego przez twórcę aplikacji.