Odpowiedzi:
Gniazdo UNIX jest mechanizm komunikacji między procesami, które umożliwia dwukierunkową wymianę danych pomiędzy procesami uruchomionych na tej samej maszynie.
Gniazda IP (szczególnie gniazda TCP / IP) są mechanizmem umożliwiającym komunikację między procesami w sieci. W niektórych przypadkach możesz używać gniazd TCP / IP do komunikowania się z procesami uruchomionymi na tym samym komputerze (za pomocą interfejsu sprzężenia zwrotnego).
Gniazda domenowe UNIX wiedzą, że wykonują się w tym samym systemie, więc mogą uniknąć niektórych kontroli i operacji (takich jak routing); dzięki czemu są szybsze i lżejsze niż gniazda IP. Jeśli więc planujesz komunikować się z procesami na tym samym hoście, jest to lepsza opcja niż gniazda IP.
Edycja: Zgodnie z komentarzem Nilsa Toedtmanna : Gniazda domeny UNIX podlegają uprawnieniom systemu plików, zaś gniazdami TCP można sterować tylko na poziomie filtru pakietów.
Możesz wyświetlić listę własnych lokalnych gniazd unixowych komputera za pomocą następującego polecenia:
netstat -a -p --unix
Baw się dobrze!
netstat
działa jednak w systemie Windows.
Jaka jest różnica między gniazdem Unix a gniazdem TCP / IP?
Gniazdo TCP / IP służy do komunikacji między sieciami TCP / IP. Podłączone gniazdo TCP jest identyfikowane przez połączenie lokalnego adresu IP, portu lokalnego, zdalnego adresu IP i portu zdalnego. Nasłuchujące gniazdo TCP jest identyfikowane przez port lokalny i ewentualnie lokalny adres IP. AIUI przynajmniej na gniazdach TCP / IP systemu Linux zawsze powoduje generowanie i dekodowanie pakietów TCP / IP, nawet jeśli klient i serwer znajdują się na tej samej maszynie.
Z drugiej strony gniazdo domeny unix (czasami skracane do gniazda unix) działa na jednej maszynie. Gniazda nasłuchowe znajdują się w hierarchii systemu plików, a dostęp do nich można kontrolować za pomocą uprawnień systemu plików.
Ponadto proces akceptujący połączenie w gnieździe uniksowym może określić identyfikator użytkownika łączącego się procesu. Dzięki temu można uniknąć konieczności uwierzytelnienia. Zamiast generować hasło do serwera bazy danych i umieszczać jego kopię w kodzie aplikacji internetowej, możesz po prostu powiedzieć serwerowi bazy danych, że użytkownik uruchamiający aplikację internetową ma dostęp do odpowiedniego konta użytkownika w bazie danych.
Gniazdami TCP obsługuje także Unix?
Oczywiście
Gniazda TCP są częścią specyfikacji protokołu TCP
Specyfikacje protokołu internetowego zwykle dotyczą tylko tego, co dzieje się na kablu, specyfikacja TCP zawiera definicję Socket, ale ta definicja nie jest taka sama, jak sposób, w jaki termin jest używany przez „API gniazd”.
„Interfejs API gniazd”, jaki znamy, został wprowadzony przez BSD, ale później został skopiowany w dowolnym miejscu i jest zawarty jako część standardu POSIX. Podstawowe rzeczy dla gniazd TCP i UDP wydają się być takie same na różnych platformach, ale bardziej zaawansowane rzeczy i rzeczy, które współdziałają z innymi częściami systemu operacyjnego są różne, na przykład w systemach uniksowych gniazdo jest identyfikowane przez uchwyt pliku i może odczytywane / zapisywane przez interfejsy API plików, nie dotyczy to Windows.
Niektóre rozszerzenia API gniazd zostały udokumentowane w rfcs, ale te RFC mają jedynie charakter informacyjny.
czy jakikolwiek protokół może korzystać z gniazd IP?
Gdy aplikacja jawnie tworzy gniazdo za pomocą funkcji „gniazdo” (gniazda są również tworzone przez funkcję accept), przekazuje trzy parametry: „domena”, „typ” i „protokół”. Pomiędzy nimi te trzy parametry można wykorzystać do wyboru wielu różnych typów gniazd.