gniazda umożliwiają komunikację między dwoma różnymi procesami na tych samych lub różnych maszynach. Aby być bardziej precyzyjnym, jest to sposób na rozmawianie z innymi komputerami przy użyciu standardowych deskryptorów plików Unix. W Uniksie każda akcja We / Wy jest wykonywana przez zapis lub odczyt deskryptora pliku. Deskryptor pliku to po prostu liczba całkowita powiązana z otwartym plikiem i może to być połączenie sieciowe, plik tekstowy, terminal lub coś innego.
dla programisty Gniazdo wygląda i zachowuje się jak deskryptor pliku niskiego poziomu. Dzieje się tak dlatego, że polecenia takie jak read() I write() działają z gniazdami tak samo jak z plikami i potokami.
gniazda zostały po raz pierwszy wprowadzone w 2.1 BSD, a następnie udoskonalone do ich obecnej postaci z 4.2 BSD. Funkcja sockets jest teraz dostępna w większości aktualnych wydań systemu UNIX.
gdzie jest używany Socket?
Gniazdo Unix jest używane w ramach aplikacji klient-serwer. Serwer to proces, który wykonuje pewne funkcje na żądanie klienta. Większość protokołów na poziomie aplikacji, takich jak FTP, SMTP i POP3, Wykorzystuje gniazda do nawiązywania połączenia między Klientem a serwerem, a następnie do wymiany danych.
typy gniazd
użytkownicy mają do dyspozycji cztery typy gniazd. Pierwsze dwa są najczęściej używane, a ostatnie dwa są rzadko używane.
zakłada się, że procesy komunikują się tylko między gniazdami tego samego typu, ale nie ma ograniczeń, które uniemożliwiałyby komunikację między gniazdami różnych typów.
-
gniazda strumieniowe-dostawa w środowisku sieciowym jest gwarantowana. Jeśli wyślesz przez gniazdo strumieniowe trzy pozycje „A, B, C”, dotrą one w tej samej kolejności − „A, B, C”. Gniazda te używają protokołu TCP (Transmission Control Protocol) do transmisji danych. Jeśli dostawa jest niemożliwa, nadawca otrzymuje wskaźnik błędu. Zapisy danych nie mają żadnych granic.
-
gniazda Datagramowe − dostawa w środowisku sieciowym nie jest gwarantowana. Są bezpołączeniowe, ponieważ nie musisz mieć otwartego połączenia jak w gniazdach strumieniowych-budujesz pakiet z informacjami o miejscu docelowym i wysyłasz go. Używają UDP (User Datagram Protocol).
-
surowe gniazda-zapewniają użytkownikom dostęp do podstawowych protokołów komunikacyjnych, które obsługują abstrakcje gniazd. Gniazda te są zwykle zorientowane na datagramy, chociaż ich dokładna charakterystyka zależy od interfejsu dostarczanego przez protokół. Gniazda surowe nie są przeznaczone dla ogólnego użytkownika; zostały one dostarczone głównie dla osób zainteresowanych opracowaniem nowych protokołów komunikacyjnych lub uzyskaniem dostępu do niektórych bardziej tajemniczych udogodnień istniejącego protokołu.
-
sekwencjonowane gniazda pakietów − są one podobne do gniazd strumieniowych, z tym wyjątkiem, że granice rekordów są zachowane. Interfejs ten jest dostarczany tylko jako część abstrakcji gniazd systemów sieciowych (NS) i jest bardzo ważny w większości poważnych aplikacji NS. Gniazda Sequenced-packet pozwalają użytkownikowi manipulować nagłówkami Sequence Packet Protocol (SPP) lub Internet Datagram Protocol (IDP) na pakiecie lub grupie pakietów, albo przez zapisanie nagłówka prototypu wraz z danymi, które mają być wysłane, albo przez określenie domyślnego nagłówka, który ma być używany ze wszystkimi wychodzącymi danymi, i pozwala użytkownikowi odbierać nagłówki na przychodzących pakietach.
co dalej?
kilka następnych rozdziałów ma na celu wzmocnienie podstaw i przygotowanie podstawy przed napisaniem programów serwerowych i klienckich za pomocą socket. Jeśli chcesz bezpośrednio skoczyć, aby zobaczyć, jak napisać program klienta i serwera, możesz to zrobić, ale nie jest to zalecane. Zdecydowanie zaleca się, aby przejść krok po kroku i wypełnić te kilka początkowych rozdziałów, aby stworzyć swoją bazę przed przejściem do programowania.