Co to jest gniazdo internetowe?

Gniazdo internetowe to termin używany do identyfikacji punktu połączenia, którego może używać dowolny program komputerowy do przesyłania danych przez Internet. Nie są konstrukcją fizyczną, taką jak gniazdko elektryczne, ale są koncepcją oprogramowania komputerowego. Przy takim gnieździe wszelkie niezbędne dane mogą podróżować tam iz powrotem z programu działającego na jednym komputerze do programu działającego na innym; w wielu przypadkach jest to do iz klienta i serwera. Termin ten jest również używany w odniesieniu do interfejsu programowania aplikacji (API), którego programiści komputerowi mogą używać do tworzenia takich aplikacji obsługujących sieć, które mogą wysyłać i odbierać dane przez Internet.

Gniazda działają w wyższych warstwach stosu protokołu internetowego (IP), znanych jako warstwa transportowa, w której dane są przesyłane z aplikacji do sieci za pośrednictwem systemu operacyjnego. Gdy aplikacja na komputerze chce wysyłać i odbierać dane z połączenia sieciowego, prosi system operacyjny o otwarcie gniazda internetowego. Gniazdo składa się z informacji o protokołach, takich jak protokół datagramów użytkownika (UDP) lub protokół kontroli transmisji (TCP), a także adresy wysyłania i odbierania obu komputerów oraz numer portu IP dla połączenia. Możliwe jest również utworzenie gniazda internetowego, które omija system operacyjny i wysyła nieprzetworzone pakiety bez wcześniejszego zezwolenia systemowi operacyjnemu komputera na zajmowanie się dodatkowymi informacjami o gnieździe.

Jak zwykle na serwerze internetowym, oprogramowanie serwera uruchamia się i otwiera gniazdo nasłuchowe. Gdy serwer odbiera żądanie danych, tworzy unikalne gniazdo dla żądającego klienta, którego następnie używa do przesyłania żądanych danych. Tego typu połączenia są również nazywane sesją, ponieważ gniazdo jest zamykane przez serwer po zakończeniu pracy klienta. W ten sposób serwer może utworzyć dowolną liczbę jednoczesnych gniazd z innymi klientami, każdy z własnym unikalnym identyfikatorem, i dostarczać dane, które są unikalne dla każdego klienta.

W związku z tym istnieją trzy ogólne typy gniazd internetowych. Jednym z takich typów jest gniazdo datagramowe. Są to szybkie połączenia przez gniazdo, które nie wymagają dodatkowej komunikacji w celu ustanowienia dedykowanego połączenia przed wysłaniem pakietów danych. Z tego powodu są często określane jako gniazda bezpołączeniowe i używają UDP jako protokołu transportowego. Są one czymś w rodzaju metody typu „uruchom i zapomnij”, ponieważ nie wymagają sprawdzania sekwencji pakietów ani korygowania błędów.

Jednak gniazda zorientowane na połączenie, zwane gniazdami strumieniowymi, przechodzą przez kilka dodatkowych kroków w celu ustanowienia łącza komunikacyjnego między klientem a serwerem. Wykorzystują one do transportu protokół TCP lub inny protokół znany jako protokół transmisji sterowania strumieniem (SCTP). Ten rodzaj gniazda internetowego jest bardziej niezawodny i ma środki do radzenia sobie z błędami, takimi jak brakujące pakiety.

Inny unikalny typ gniazda internetowego jest używany głównie do routingu w sieciach komputerowych. Ten typ gniazda pomija warstwę transportową stosu IP, zamiast tego przekazuje pakiet z sieci bezpośrednio do aplikacji z nienaruszonymi informacjami o gnieździe. Takie surowe gniazda pozwalają na znacznie szybsze dostarczanie pakietów do aplikacji, ponieważ system operacyjny komputera nie może najpierw poradzić sobie z pakietami. Internetowy protokół komunikatów kontrolnych (ICMP) używa takich surowych gniazd, gdy jeden komputer chce po prostu „pingować” inny.