Skip to main content

Programowanie gniazd dla sieci komputerowych - podsumowanie

Magistrala CAN, podłączanie i kodowanie sterowników VAG (Kwiecień 2025)

Magistrala CAN, podłączanie i kodowanie sterowników VAG (Kwiecień 2025)
Anonim

Gniazdo to jedna z najbardziej podstawowych technologii programowania sieci komputerowych. Gniazda umożliwiają komunikację aplikacji sieciowych przy użyciu standardowych mechanizmów wbudowanych w sprzęt sieciowy i systemy operacyjne.

Chociaż może to brzmieć jak kolejna cecha rozwoju oprogramowania internetowego, technologia gniazd istniała na długo przed siecią. Wiele z dzisiejszych najpopularniejszych aplikacji sieciowych bazuje na gniazdach.

Jakie gniazda mogą zrobić dla Twojej sieci

Gniazdo reprezentuje pojedyncze połączenie między dokładnie dwoma programami (tzw punkt-do-punktu połączenie). Więcej niż dwa programy mogą komunikować się z klientem / serwerem lub systemami rozproszonymi za pomocą wielu gniazd. Na przykład wiele przeglądarek internetowych może jednocześnie komunikować się z jednym serwerem sieci Web za pośrednictwem grupy gniazd wykonanych na serwerze.

Oprogramowanie oparte na gnieździe zwykle działa na dwóch oddzielnych komputerach w sieci, ale gniazda mogą również służyć do lokalnej komunikacji ( międzyproces ) na pojedynczym komputerze. Gniazda są dwukierunkowy , co oznacza, że ​​każda strona połączenia może zarówno wysyłać, jak i odbierać dane. Czasami jedna aplikacja inicjująca komunikację jest nazywana "klientem", a druga aplikacja "serwerem", ale ta terminologia prowadzi do zamieszania w sieciach peer-to-peer i generalnie należy jej unikać.

Socket API i biblioteki

W Internecie istnieje kilka bibliotek implementujących standardowe interfejsy programowania aplikacji (API). Pierwszy pakiet głównego nurtu - Berkeley Socket Library jest wciąż szeroko wykorzystywany w systemach UNIX. Innym bardzo popularnym API jest biblioteka Windows Sockets (WinSock) dla systemów operacyjnych Microsoft. W porównaniu do innych technologii komputerowych, interfejsy API gniazd są dość dojrzałe: WinSock jest w użyciu od 1993 roku, a gniazda Berkeley od 1982 roku.

Interfejsy API gniazd są stosunkowo małe i proste. Wiele funkcji jest podobnych do używanych w procedurach wejścia / wyjścia plików, takich jak czytać(), pisać(), i blisko(). Rzeczywiste wywołania funkcji zależą od wybranego języka programowania i biblioteki gniazd.

Rodzaje interfejsów gniazd

Interfejsy gniazd można podzielić na trzy kategorie:

  • Strumień Gniazda, najpowszechniejszy typ, wymagają, aby dwie łączące się strony najpierw nawiązały połączenie z gniazdem, po którym wszelkie dane przekazywane przez to połączenie będą gwarantowane, że dotrą w tej samej kolejności, w jakiej zostały wysłane - tak zwany model programowania zorientowanego na połączenie .
  • Datagram Gniazda oferują semantykę "bez połączenia". W przypadku datagramów połączenia są niejawne, a nie jawne, jak w przypadku strumieni. Każda ze stron po prostu wysyła datagramy w razie potrzeby i czeka, aż druga odpowie; komunikaty mogą zostać utracone w trakcie transmisji lub odebrane w wyniku nieprawidłowego działania, ale to aplikacja jest odpowiedzialna, a nie gniazdka, aby poradzić sobie z tymi problemami. Wdrożenie gniazd datagramów może dać niektórym aplikacjom zwiększenie wydajności i dodatkową elastyczność w porównaniu do korzystania z gniazd strumieniowych, uzasadniając ich stosowanie w niektórych sytuacjach.
  • Trzeci typ gniazda - surowy socket - omija wbudowaną bibliotekę obsługę standardowych protokołów takich jak TCP i UDP. Surowe gniazda są używane do tworzenia niestandardowych protokołów niskiego poziomu.

Obsługa gniazd w protokołach sieciowych

Nowoczesne gniazda sieciowe są zwykle używane w połączeniu z protokołami internetowymi - IP, TCP i UDP. Biblioteki implementujące gniazda protokołu internetowego używają protokołu TCP dla strumieni, UDP dla datagramów i samego IP dla gniazd surowych.

Aby komunikować się przez Internet, biblioteki gniazd IP używają adresu IP do identyfikacji określonych komputerów. Wiele części Internetu współpracuje z usługami nazewnictwa, dzięki czemu użytkownicy i programiści gniazd mogą pracować z komputerami według nazwy ( na przykład , "thiscomputer.wireless.about.com") zamiast adresu ( na przykład 208,185, 127,40). Gniazda strumieniowe i datagramowe również wykorzystują numery portów IP do rozróżniania wielu aplikacji od siebie nawzajem. Na przykład przeglądarki internetowe w Internecie wiedzą, że używają portu 80 jako domyślnego do komunikacji z serwerami sieciowymi.