Co to jest gniazdo internetowe?
Gniazdo internetowe jest terminem używanym do określenia punktu połączenia, z którego dowolny program komputerowy może korzystać do przesyłania danych przez Internet. Nie są konstrukcją fizyczną, jak elektryczne gniazdko ścienne, ale są koncepcją oprogramowania komputerowego. Przy takim gnieździe wszelkie niezbędne dane mogą przemieszczać się do przodu i do tyłu z programu działającego na jednym komputerze do programu działającego na innym; w wielu przypadkach dotyczy to klienta i serwera. Termin ten jest także 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 górnych warstwach stosu protokołu internetowego (IP), znanego jako warstwa transportowa, w której dane są przekazywane 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 jest skonfigurowane z informacji o protokole, takich jak protokół datagramu użytkownika (UDP) lub protokół kontroli transmisji (TCP), a także adresy wysyłające i odbierające zarówno komputerów, jak i 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 uprzedniego umożliwienia systemowi operacyjnemu komputera obsługi dodatkowych informacji o gniazdach.
Jak zwykle używane na serwerze internetowym, oprogramowanie serwera uruchamia się i otwiera gniazdo nasłuchiwania. Gdy serwer odbiera żądanie danych, tworzy następnie unikalne gniazdo dla żądającego klienta, którego następnie używa do przesyłania żądanych danych. Tego rodzaju połączenia są również określane jako sesja, ponieważ gniazdo jest zamykane przez serwer po zakończeniu klienta. W ten sposób serwer może utworzyć dowolną liczbę jednoczesnych gniazd z innymi klientami, każdy z własnym unikalnym identyfikatorem, i dostarczyć dane, które są unikalne dla każdego klienta.
Jako takie istnieją trzy ogólne typy gniazd internetowych. Jednym z takich typów jest gniazdo datagramowe. Są to szybkie połączenia gniazdowe, które nie wymagają dodatkowej komunikacji w celu ustanowienia dedykowanego połączenia przed wysłaniem pakietów danych. Z tego powodu są one często nazywane gniazdami bezpołączeniowymi i używają UDP jako protokołu transportowego. Są czymś w rodzaju metody „zapomnij i odpal”, ponieważ nie ma sprawdzania sekwencji pakietów ani korekcji błędów.
Jednak gniazda zorientowane na połączenie, zwane gniazdem strumieniowym, wykonują kilka dodatkowych kroków, aby ustanowić połączenie komunikacyjne między klientem a serwerem. Wykorzystują one do transportu TCP lub inny protokół znany jako protokół transmisji strumieniowej (SCTP). Ten typ gniazda internetowego jest bardziej niezawodny i ma sposoby radzenia sobie z błędami, takimi jak brakujące pakiety.
Jeden inny unikalny typ gniazda internetowego służy przede wszystkim do routingu w sieci komputerowej. Ten typ gniazda pomija warstwę transportową stosu IP, zamiast tego przekazuje pakiet z sieci bezpośrednio do aplikacji z niezmienionymi informacjami o gnieździe. Takie nieprzetworzone gniazda pozwalają na znacznie szybsze dostarczanie pakietów do aplikacji, ponieważ system operacyjny komputera nie może najpierw dostać się do pakietów. Internetowy protokół komunikatu kontrolnego (ICMP) wykorzystuje takie surowe gniazda, gdy jeden komputer po prostu chce „pingować” drugiego.