Gniazdo – definicja i właściwości
Gniazdo (ang. socket) to abstrakcyjny punkt końcowy połączenia, umożliwiający dwukierunkową wymianę danych w komunikacji sieciowej oraz międzyprocesowej. Kluczowymi właściwościami gniazda są:
- typ gniazda, który identyfikuje protokół wymiany danych,
- lokalny adres (np. adres IP, IPX, Ethernet),
- opcjonalny lokalny numer portu, identyfikujący proces wymieniający dane.
Dodatkowe atrybuty gniazda
Podczas komunikacji gniazdo może mieć również dwa dodatkowe atrybuty:
- adres zdalny (np. adres IP, IPX, Ethernet),
- opcjonalny numer portu zdalnego procesu.
Adres IP wskazuje węzeł w sieci, numer portu identyfikuje proces, a typ gniazda określa metodę wymiany danych.
Przydzielanie numerów portów
Lokalny numer portu może być przydzielony automatycznie (efemeryczny numer portu) lub przypisany ręcznie przez twórcę aplikacji. W przypadku braku przypisania, system operacyjny automatycznie przydzieli numer efemeryczny.
Półasocjacja i asocjacja
Właściwości gniazda, takie jak lokalny adres i numer portu, oraz zdalne atrybuty, tworzą pojęcie półasocjacji (ang. half-association), co oznacza, że brakuje części informacji do pełnej komunikacji. Pełna asocjacja (ang. association) obejmuje wszystkie elementy identyfikujące procesy w sieci.
Implementacja w systemach Unix
W systemach Unix gniazda są obsługiwane w jądrze, a operacje na nich realizowane są przez funkcje systemowe, podobnie jak w przypadku plików. Termin „gniazdo” jest zapożyczony z terminologii elektrycznej, gdzie oznacza miejsce podłączenia urządzeń.