Konfiguracja sprzętu i oprogramowania

Protokoły sieciowe. Wprowadzenie do technologii klient-serwer sieciowy

Wydaliśmy nową książkę „Marketing treści w w sieciach społecznościowych: Jak dostać się do głów subskrybentów i zakochać się w swojej marce.”

Usługa internetowa (usługa) - program, który organizuje interakcję między witrynami. Informacje z jednego portalu są przekazywane do drugiego.

Na przykład jest linia lotnicza. Ma odpowiednio dużo lotów, dużo biletów. Przesyła informacje za pośrednictwem usługi sieciowej do witryny agregatora podróży. Użytkownik, który odwiedzi agregator, będzie mógł tam kupić bilety na tę linię lotniczą.

Innym przykładem usług internetowych jest witryna śledząca pogodę, która zawiera informacje o warunkach pogodowych w danym mieście lub kraju jako całości. Ta informacja często używane również przez osoby trzecie.

Informacje w Internecie są zróżnicowane. Strony internetowe są zarządzane przez różne systemy. stosowane są różne protokoły transmisji i szyfrowania. Usługi internetowe ułatwiają wymianę informacji między różnymi witrynami.

Architektura i protokoły usług internetowych

Możesz zdefiniować 3 instancje, które współdziałają ze sobą: katalog, wykonawca i klient. Po utworzeniu usługi kontrahent rejestruje ją w katalogu i tam klient znajduje usługę.

Mechanizm wymiany danych jest tworzony w opisie Opisu Usług Internetowych. Jest to specyfikacja obejmująca formaty transportowe, typy treści, protokoły transportowe wykorzystywane w wymianie informacji pomiędzy klientem a usługodawcą.

Obecnie do implementacji różnych usług internetowych najczęściej wykorzystuje się kilka technologii:

  1. TCP/IP to protokół, który rozumie prawie każdy sprzęt sieciowy, z komputerów mainframe do urządzenia przenośne i PDA.
  2. HTML to uniwersalny język znaczników używany do wyświetlania treści na urządzeniach konsumenckich.
  3. XML to uniwersalne narzędzie do przetwarzania wszelkiego rodzaju danych. Na jego podstawie mogą działać inne protokoły wymiany informacji: SOAP i WSDL.
  4. UDDI to uniwersalne źródło rozpoznawania, integracji i opisu. Działa z reguły w sieciach prywatnych i nie znalazł jeszcze wystarczającej dystrybucji.

Wszechstronność prezentowanych technologii jest podstawą zrozumienia usług internetowych. Pracują dla standardowe technologie niezależne od dostawców aplikacji i innych zasobów sieciowych. Może być używany w dowolnym system operacyjny, serwery aplikacji, języki programowania itp.

Zalety

  • kreacja niezbędne warunki do interakcji komponentów oprogramowania niezależnie od platformy.
  • Usługi sieciowe są oparte na otwartych protokołach standardowych. Dzięki wprowadzeniu XML zapewniona jest prostota tworzenia i konfiguracji serwisów internetowych.
  • Zastosowanie protokołu HTTP gwarantuje interoperacyjność między systemami poprzez dostęp do sieci.

Wady

  • Niska wydajność i duże natężenie ruchu w porównaniu z systemami RMI, CORBA, DCOM, ze względu na użycie wiadomości XML w kontekście tekstu.
  • Poziom bezpieczeństwa. Wszystkie nowoczesne usługi sieciowe muszą implementować kodowanie i wymagają autoryzacji użytkownika. To, czy HTTPS wystarczy tutaj, czy potrzebne są bardziej niezawodne protokoły, takie jak szyfrowanie XML, SAML itp., Jest kwestią rozwoju.

Zadania usług internetowych

Usługi sieciowe mogą być używane w wielu obszarach.

Transakcje B2B

Procesy są integrowane natychmiast, bez udziału ludzi. Na przykład uzupełnienie katalogu sklepu internetowego o nowe produkty. Zostają przywiezione do magazynu, a magazynier rejestruje przybycie w bazie danych. Informacje są automatycznie przekazywane do sklepu internetowego. A kupujący zamiast zaznaczać „Brak w magazynie” na karcie produktu, widzi jego ilość.

Integracja usług korporacyjnych

Jeśli firma korzysta z programów korporacyjnych, serwis internetowy pomoże w nawiązaniu współpracy.

Stworzenie systemu klient-serwer

Usługi służą do dostosowywania sposobu działania klienta i serwera. Zapewnia to następujące korzyści:

  • nie możesz sprzedawać samego oprogramowania, ale płacić za dostęp do serwisu internetowego;
  • łatwiejsze rozwiązywanie problemów przy użyciu oprogramowania firm trzecich;
  • łatwiej zorganizować dostęp do treści i materiałów na serwerze.

Serwis internetowy to aplikacja, która to ułatwia ustawienie techniczne interakcje zasobów.

Klient po połączeniu się z usługą na określonym porcie uzyskuje dostęp do usługi za pomocą ustalonego protokołu. Protokół to z góry opracowana procedura wymiany informacji między podmiotem chcącym skorzystać z usługi a podmiotem świadczącym usługę. „Stroną”, która potrzebuje usługi może być osoba, ale najczęściej tak jest program komputerowy, Na przykład, Przeglądarka internetowa... Protokoły są często tekstowym opisem procedury wymiany informacji między klientem a serwerem.

UNIX

Prawdopodobnie najprostszy protokół dla służby dziennej. Jeśli łączysz się z portem 13 komputera, który obsługuje serwer dzienny, serwer ten odpowie z bieżącą datą i godziną, a następnie rozłączy połączenie. Protokół wygląda tak: „Jeżeli klient nawiąże połączenie z serwerem dziennym, wysyłane są do niego dane o dacie i godzinie, po czym połączenie zostaje rozłączone”. Większość maszyn UNIX obsługuje ten serwer. Możesz się z nim skontaktować za pomocą aplikacji Telnet. W systemie UNIX sesja będzie wyglądać tak:

  • % telnet web67.ntx.net 13
  • Łączenie z web67.ntx.net.
  • Znak anulowania „^]”.
  • Niedziela 25 Październik 08:34:06 1998

Okna

Na komputerze z systemem Windows można uzyskać dostęp do tego serwera, wpisując „telnet web67.ntx.net 13” w oknie MSDOS.

W tym przykładzie web67.ntx.net to serwer UNIX, a 13 to numer portu dla usługi dziennej. Aplikacja Telnet łączy się z portem 13 (telnet zwykle łączy się z portem 23, ale można określić dowolny inny port do połączenia), następnie serwer wysyła dane o dacie i godzinie, a następnie zrywa połączenie. Większość wersji usługi Telnet umożliwia określenie numeru portu i tej funkcji można używać niezależnie od tego, która wersja usługi Telnet jest zainstalowana na komputerze.

Większość protokołów jest bardziej złożona niż protokół dzienny i jest zdefiniowana w publicznie dostępnym zapytaniu o komentarz (RFC) (patrz sunsite.auc.dk/RFC/, aby zapoznać się z dobrym archiwum wszystkich dokumentów RFC). Każdy Serwer internetowy w Internecie jest zgodny z wymaganiami protokołu HTTP opracowanymi w The Original HTTP w 1991 roku. Najważniejsza forma protokołu akceptowana przez serwer HTTP zawiera tylko jedno polecenie: GET. Jeśli nawiążesz połączenie z serwerem pracującym po protokole HTTP i wyślesz żądanie „GET nazwa pliku”, serwer odpowie wysyłając żądanie treści do źródła określony plik a następnie rozłącz połączenie. Typowa sesja wygląda tak:

  • % strony telnetowej 80
  • Próba połączenia z 78.110.59.235...
  • Połączenie z pcwork.ru.
  • Znak anulowania „^]”.
  • Połączenie zostało przerwane przez zewnętrzny komputer hosta.

W początkowej wersji protokołu HTTP trzeba było wysłać tylko prawidłową nazwę pliku, na przykład [/] lub później protokół został zmieniony, aby móc przetwarzać pełne adresy URL. Dzięki temu firmy zajmujące się domenami wirtualnymi w środowisku, w którym wiele domen jest hostowanych na jednej maszynie, mogą używać jednego adresu IP dla wszystkich takich domen.

Podsumować

Po przeczytaniu tego artykułu wiele się nauczyłeś. W szczególności wiesz teraz, że po wpisaniu adresu URL w przeglądarce dzieje się co następuje:

  1. podziel adres URL na trzy części:
  • Protokół („http”)
  • Nazwa serwera („witryna”) – ostatnio pojawiła się pozytywna tendencja do skracania pierwszych trzech liter www
  • Nazwa pliku („web server.htm”)
  • Przeglądarka kontaktuje się z serwerem nazw, aby przetłumaczyć nazwę serwera na adres IP, który jest używany przez tę przeglądarkę do łączenia się z odpowiednią maszyną serwera.
  • Po otrzymaniu adresu IP określona przeglądarka nawiązuje połączenie z serwerem WEB z tym adresem IP na porcie 80.
  • Zgodnie z protokołem HTTP przeglądarka wysyła żądanie GET do tego serwera w celu odebrania pliku (należy pamiętać, że pliki cookie mogą być wysyłane z przeglądarki do serwera wraz z żądaniem GET - więcej informacji znajdziesz w artykule o działaniu plików cookie).
  • Serwer wysyła tekst HTMLżądana strona internetowa do przeglądarki. (Cookies mogą być również przesyłane z serwera do przeglądarki w nagłówku strony).
  • Przeglądarka odczytuje znaczniki HTML i wyświetla odpowiednią stronę na ekranie monitora.
  • Dodatek: Bezpieczeństwo

    Z tego opisu możemy wywnioskować, że serwer WEB może być dość prostym programem. Pobiera nazwę pliku wysłaną za pomocą polecenia GET, znajduje plik, którego szuka, i wysyła go do przeglądarki. Nawet mając cały kod kontroli portów i komunikacji portu, możesz łatwo stworzyć program w C, który działa jako prosty serwer WWW w mniej niż 500 wierszach. kod programu... Oczywiście w pełni funkcjonalny korporacyjny WEB serwer jest bardziej złożony, ale podstawowe zasady jego działania są nadal bardzo proste.

    Większość serwerów dodaje pewien poziom bezpieczeństwa do swojego przepływu pracy. W tym celu wykorzystywane są na przykład strony chronione hasłem. Przy próbie otwarcia takiej strony przez przeglądarkę wyświetla się okno dialogowe z prośbą o podanie nazwy użytkownika i hasła. Serwer zapewnia właścicielowi strony WWW możliwość korzystania z listy nazw i haseł osób, które mają dostęp do tej strony; w takim przypadku serwer umożliwia przeglądanie strony tylko tym, którzy posiadają odpowiednie hasło. Zaawansowane serwery mają dodatkowe funkcje zabezpieczenia, pozwalające na szyfrowanie informacji wymienianych między serwerem a przeglądarką, co umożliwia przesyłanie poufnych informacji przez Internet, np. numerów kart kredytowych.

    To praktycznie wszystkie funkcje, jakie może wykonać serwer wysyłając standardowe, statyczne strony WWW. Strony internetowe nazywane są statycznymi, które nie zmieniają się, dopóki deweloper ich nie zmodyfikuje.

    Dodatek: Strony dynamiczne

    A co z dynamicznymi stronami WWW? Na przykład:

    • Dozwolone jest pozostawianie wiadomości w formie HTML w dowolnej księdze gości, a przy następnym jej wyświetleniu nowo wprowadzone informacje są zapisywane na tej stronie.
    • W makiecie whois Network Solutions w odpowiedzi na wpisanie nazwy domeny odbierana jest strona WWW, której wygląd zależy od wprowadzonej nazwy.
    • W dowolnej wyszukiwarce w formularz HTML wprowadzony słowa kluczowe, po czym maszyna tworzy stronę wyświetlającą wyniki wyszukiwania tych słów.

    We wszystkich tych przypadkach serwer WWW nie tylko szuka żądany plik... Przetwarza otrzymane informacje i tworzy Strona internetowa, w sposób odpowiadający otrzymanemu żądaniu. W prawie wszystkich przypadkach, aby rozwiązać ten problem, serwer WEB wykorzystuje tzw. procedurę CGI.

    Każda maszyna serwerowa umożliwia dostęp do usług z Internetu za pomocą numerowanych portów, po jednym dla każdej usługi na serwerze. Na przykład, jeśli maszyna serwerowa ma serwer WEB i serwer FTP, zwykle dostęp do serwera WEB odbywa się przez port 80, a do serwer FTP- przez port 21. Klienci łączą się z usługą wybierając odpowiedni adres i łącząc się z odpowiednim portem.

    Każda popularna usługa ma odpowiedni konkretny numer Port. Poniżej znajdują się najczęściej używane numery portów:

    • echo 7
    • w ciągu dnia 13
    • qotd 17 (Cytat dnia)
    • ftp 21
    • telnet 23
    • SMTP 25 (e-mail)
    • czas 37
    • serwer nazw 53 (serwer nazw)
    • pseudonim 43 (Kto jest kim)
    • suseł 70
    • palec 79
    • WWW 80

    Ograniczenia

    Jeśli serwer pozwala na połączenie z portem z Internetu, a port ten nie jest zabezpieczony, możesz połączyć się z nim z dowolnego miejsca w Internecie i skorzystać z odpowiedniej usługi. Należy zauważyć, że nie ma żadnych ograniczeń, które nakazywałyby na przykład serwerowi WEB łączyć się przez port 80. Podczas uruchamiania własnej maszyny i instalowania na niej oprogramowania serwera WEB można, jeśli chcesz, określić, że Serwer WEB działa na przykład na porcie 918 lub na dowolnym innym niezajętym porcie. Następnie, jeśli urządzenie ma nazwę xxx.yyy.com, możesz połączyć się z tym serwerem przez Internet, korzystając z adresu URL xxx.yyy.com:918. Część „:918” wyraźnie wskazuje numer portu i musi zostać dodana przez każdego, kto chce skontaktować się z tym serwerem. Jeśli nie określono portu, przeglądarka domyślnie próbuje połączyć się z ogólnie akceptowanym portem 80.

    HTTP. Opiera się na interakcji” klient-serwer”, czyli zakłada się, że:
    1. Konsument- klient po zainicjowaniu połączenia z dostawcą serwera wysyła do niego żądanie;
    2. Dostawca- serwer Po otrzymaniu żądania wykonuje niezbędne czynności i zwraca klientowi odpowiedź z wynikiem.

      W takim przypadku istnieją dwa możliwe sposoby organizacji pracy komputera klienckiego:

      • Cienki klient to komputer kliencki, który przekazuje wszystkie zadania związane z przetwarzaniem informacji na serwer. Przykład cienki klient może służyć jako komputer z przeglądarką służącą do pracy z aplikacjami internetowymi.
      • Gruby klient wręcz przeciwnie, przetwarza informacje niezależnie od serwera, wykorzystując ten ostatni głównie do przechowywania danych.

    Zanim przejdziemy do konkretnych technologii internetowych typu klient/serwer, przyjrzyjmy się podstawom i strukturze bazowego protokołu HTTP.

    Protokół HTTP

    HTTP (HyperText Transfer Protocol - RFC 1945, RFC 2616) to protokół warstwy aplikacji do przesyłania hipertekstu.

    Centralny dla HTTP jest ratunek wskazany przez adres URL w żądaniu klienta. Zazwyczaj tymi zasobami są pliki przechowywane na serwerze. Cechą protokołu HTTP jest możliwość określenia w żądaniu i odpowiedzi sposobu reprezentacji tego samego zasobu różnymi parametrami: format, kodowanie, język itp. Dzieje się tak dzięki możliwości określenia sposobu kodowania wiadomości że klient i serwer mogą wymieniać dane binarne, chociaż początkowo był to protokół przeznaczony do przesyłania informacji symbolicznych. Na pierwszy rzut oka może się to wydawać marnowaniem zasobów. Rzeczywiście, dane w postaci symbolicznej zajmują więcej pamięci, komunikaty dodatkowo obciążają kanały komunikacyjne, ale ten format ma wiele zalet. Komunikaty przesyłane przez sieć są czytelne, a po przeanalizowaniu otrzymanych danych, Administrator systemu może łatwo znaleźć błąd i go naprawić. W razie potrzeby rolę jednej z współpracujących aplikacji może pełnić osoba, ręcznie wprowadzając wiadomości w wymaganym formacie.

    W przeciwieństwie do wielu innych protokołów HTTP jest protokołem bez pamięci. Oznacza to, że protokół nie przechowuje informacji o poprzednich żądaniach klientów i odpowiedziach serwera. Komponenty korzystające z protokołu HTTP mogą niezależnie utrzymywać informacje o stanie związane z najnowszymi żądaniami i odpowiedziami. Na przykład klient Aplikacja internetowa osoba żądająca może śledzić opóźnienia odpowiedzi, a serwer sieciowy może przechowywać adresy IP i nagłówki żądań ostatnich klientów.

    Wszystko oprogramowanie do pracy z protokołem HTTP dzieli się na trzy główne kategorie:

    • Serwery- dostawcy usług przechowywania i przetwarzania informacji (przetwarzania żądań).
    • Klienci- odbiorcy końcowi usług serwerowych (wysyłanie żądań).
    • Serwery proxy wspomaganie pracy służb transportowych.

    Głównymi klientami są przeglądarki, na przykład: Internet Odkrywca, Opera, Mozilla Firefox, Netscape Nawigator i inne. Najpopularniejszymi wdrożeniami serwerów WWW są: Internet Informacja Usługi (IIS), Apache, lighttpd, nginx. Najbardziej znane implementacje serwerów proxy to Squid, UserGate, Multiproxy, Naviscope.

    „Klasyczny” schemat sesji HTTP wygląda tak.

    1. Nawiązanie połączenia TCP.
    2. Żądanie klienta.
    3. Odpowiedź serwera.
    4. Zerwane połączenie TCP.

    W ten sposób klient wysyła żądanie do serwera, otrzymuje od niego odpowiedź, po czym interakcja zostaje zakończona. Zazwyczaj żądanie klienta jest żądaniem wysłania dokumentu HTML lub innego zasobu, a odpowiedź serwera zawiera kod tego zasobu.

    Żądanie HTTP wysyłane przez klienta do serwera zawiera następujące składniki.

    • Pasek stanu (czasami do jego oznaczenia są również używane terminy pasek stanu lub ciąg zapytania).
    • Pola nagłówka.
    • Pusta linia.
    • Treść żądania.

    Pasek stanu razem z pola nagłówka czasami nazywany także nagłówek żądania.


    Ryż. 2.1.

    Pasek stanu ma następujący format:

    request_method url_pecypca nttp_protocol_version

    Przyjrzyjmy się składnikom paska stanu, skupiając się na metodach zapytań.

    metoda, określony na pasku stanu, określa sposób wpływania na zasób, którego adres URL jest podany w tym samym wierszu. Metoda może przyjmować wartości GET, POST, HEAD, PUT, DELETE itp. Pomimo mnogości metod, tylko dwie z nich są naprawdę ważne dla programisty WWW: GET i POST.

    • DOSTWAĆ. Zgodnie z formalną definicją metoda GET ma na celu pobranie zasobu o określonym adresie URL. Po otrzymaniu żądania GET serwer musi odczytać określony zasób i dołączyć identyfikator zasobu w odpowiedzi do klienta. Zasób, którego adres URL jest przekazywany w ramach żądania, nie musi być stroną HTML, plikiem obrazu ani innymi danymi. Adres URL zasobu może wskazywać na kod wykonywalny programu, który po spełnieniu określonych warunków musi zostać uruchomiony na serwerze. W tym przypadku to nie kod programu jest zwracany do klienta, ale dane generowane podczas jego wykonywania. Chociaż metoda GET jest z definicji przeznaczona do pobierania informacji, może być również wykorzystywana do innych celów. Metoda GET jest całkiem odpowiednia do przesyłania małych porcji danych na serwer.
    • POCZTA. Zgodnie z tą samą formalną definicją, głównym celem metody POST jest przesyłanie danych na serwer. Jednak podobnie jak metoda GET, metoda POST może być używana na różne sposoby i jest często używana do pobierania informacji z serwera. Podobnie jak w przypadku metody GET, adres URL podany na pasku stanu wskazuje na określony zasób. Metodę POST można również wykorzystać do rozpoczęcia procesu.
    • Metody HEAD i PUT są modyfikacjami metod GET i POST.

    Wersja protokołu Protokół HTTP jest zwykle określany w następującym formacie:

    HTTP / wersja.modyfikacja

    Pola nagłówka podążanie za paskiem statusu umożliwia doprecyzowanie zapytania, tj. wyślij dodatkowe informacje na serwer. Pole nagłówka ma następujący format:

    Nazwa pola: Wartość

    Przeznaczenie pola określa jego nazwa, która jest oddzielona od wartości dwukropkiem.

    Nazwy niektórych z najczęstszych pól nagłówka w żądaniu klienta i ich przeznaczenie przedstawiono w tabeli 2.1.

    Tabela 2.1. Pola nagłówka żądania HTTP.
    Pola nagłówka HTTP -wniosek Oznaczający
    Gospodarz Nazwa domeny lub adres IP hosta, do którego klient uzyskuje dostęp
    Polecający Adres URL dokumentu, który prowadzi do zasobu wskazanego na pasku stanu
    Z Adres E-mail użytkownik pracujący z klientem
    Zaakceptować Typy MIME danych przetwarzanych przez klienta. To pole może mieć wiele wartości, oddzielonych od siebie przecinkami. Często pole nagłówka Accept służy do poinformowania serwera, jakie typy pliki graficzne obsługa klienta
    Akceptuj-język Zestaw dwuznakowych identyfikatorów oddzielonych przecinkami, które oznaczają języki obsługiwane przez klienta
    Akceptuj-Charset Lista obsługiwanych zestawów znaków
    Typ zawartości Dane typu MIME zawarte w treści żądania (jeśli żądanie nie składa się z jednego nagłówka)
    Długość treści Liczba znaków zawartych w treści żądania (jeśli żądanie nie składa się z jednego nagłówka)
    Zakres Przedstawić, jeśli klient nie zażąda całego dokumentu, a jedynie jego część
    Połączenie Służy do zarządzania połączeniem TCP. Jeżeli pole zawiera Close, oznacza to, że po przetworzeniu żądania serwer powinien zamknąć połączenie. Wartość Keep-Alive sugeruje, aby nie zamykać połączenia TCP, aby można go było używać do kolejnych żądań
    Agent użytkownika Informacja klientów

    W wielu przypadkach podczas pracy w sieci WWW brakuje treści żądania. Po uruchomieniu skryptów CGI dane przekazane do nich w żądaniu można umieścić w treści żądania.

    Umożliwia otrzymywanie różnych zasobów, takich jak dokumenty HTML. Protokół HTTP jest sercem komunikacji internetowej. HTTP to protokół komunikacyjny klient-serwer, co oznacza, że ​​żądania do serwera inicjuje sam odbiorca, najczęściej przeglądarka internetowa. Wynikowy dokument końcowy będzie (może) składać się z różnych dokumentów podrzędnych, które są częścią dokumentu końcowego: na przykład z oddzielnie otrzymanego tekstu, opisu struktury dokumentu, obrazów, plików wideo, skryptów i wielu innych.

    Klienci i serwery komunikują się poprzez wymianę pojedynczych wiadomości (nie strumieni danych). Wiadomości wysyłane przez klienta, zazwyczaj webbrewera, nazywane są upraszanie a wiadomości wysyłane przez serwer są nazywane odpowiedzi.

    Chociaż protokół HTTP został opracowany na początku lat 90., ze względu na jego rozszerzalność, ewoluował przez lata. HTTP jest protokołem warstwy aplikacji, który najczęściej wykorzystuje możliwości innego protokołu - TCP (lub TLS - bezpieczny TCP) - do wysyłania swoich wiadomości, jednak każdy inny niezawodny protokół transportowy może teoretycznie być używany do dostarczania takich wiadomości. Ze względu na swoją rozszerzalność służy nie tylko do odbierania przez klienta dokumentów hipertekstowych, obrazów i filmów, ale także do przesyłania treści na serwery, np. za pomocą formularzy HTML. HTTP może być również używany do pobierania tylko części dokumentu w celu aktualizacji strony internetowej na żądanie (na przykład za pośrednictwem żądania AJAX).

    Składniki systemów opartych na HTTP

    HTTP jest protokołem klient-serwer, co oznacza, że ​​żądania są wysyłane przez jedną stronę - uczestnika wymiany (agenta użytkownika) (lub zamiast tego proxy). Najczęściej uczestnikiem jest przeglądarka internetowa, ale może to być każdy, na przykład robot, który przemierza sieć, aby uzupełniać i aktualizować dane indeksowania stron internetowych dla wyszukiwarek.

    Każde zapytanie (ang. wniosek) jest wysyłane do serwera, który je przetwarza i zwraca odpowiedź (ang. odpowiedź). Pomiędzy tymi żądaniami i odpowiedziami jest zwykle wielu pośredników zwanych proxy, którzy wykonują różne operacje i działają na przykład jako bramy lub pamięć podręczna.

    Zwykle istnieje wiele innych urządzeń pośredniczących między przeglądarką a serwerem, które odgrywają pewną rolę w przetwarzaniu żądania: routery, modemy i tak dalej. Z uwagi na fakt, że Sieć jest zbudowana w oparciu o system poziomów (warstw) interakcji, pośrednicy ci są „ukryci” na poziomie sieci i transportu. W tym systemie warstw HTTP zajmuje najwyższą warstwę, która jest nazywana warstwą „aplikacji” (lub „warstwą aplikacji”). Znajomość warstw sieciowych, takich jak reprezentatywna, sesyjna, transportowa, sieciowa, łącze i fizyczna, ma kluczowy do zrozumienia działania sieci i diagnostyki możliwe problemy ale nie są wymagane do opisania i zrozumienia protokołu HTTP.

    Klient: uczestnik giełdy

    Członek giełdy (agent użytkownika) to dowolne narzędzie lub urządzenie działające w imieniu użytkownika. To zadanie jest wykonywane głównie przez przeglądarkę internetową; w niektórych przypadkach uczestnikami są programy używane przez inżynierów i programistów internetowych do debugowania ich aplikacji.

    Przeglądarka zawsze to podmiot, który zgłasza żądanie. Serwer zwykle tego nie robi, chociaż przez lata istnienia sieci wymyślono sposoby, które pozwalają na realizację żądań z serwera.

    Aby wyświetlić stronę internetową, przeglądarka wysyła wstępne żądanie pobrania dokumentu HTML tej strony. Następnie przeglądarka sprawdza ten dokument i żąda dodatkowe pliki wymagane do wyświetlenia zawartości strony internetowej (skrypty wykonywalne, informacje o układzie strony - Tabele CSS style, dodatkowe zasoby w postaci obrazów i plików wideo), które są bezpośrednio częścią oryginalnego dokumentu, ale znajdują się w innym miejscu w Internecie. Następnie przeglądarka łączy wszystkie te zasoby, aby wyświetlić je użytkownikowi w postaci jednego dokumentu – strony internetowej. Skrypty wykonywane przez samą przeglądarkę mogą otrzymywać dodatkowe zasoby przez sieć w kolejnych etapach przetwarzania strony internetowej, a przeglądarka odpowiednio aktualizuje wyświetlanie tej strony dla użytkownika.

    Strona internetowa jest dokumentem hipertekstowym. Oznacza to, że niektóre części wyświetlanego tekstu są linkami, które można aktywować (zwykle poprzez kliknięcie przycisku myszy) w celu otrzymania i odpowiedniego wyświetlenia nowej strony internetowej (klikając w link). Pozwala to użytkownikowi na „nawigację” po stronach sieci (Internet). Przeglądarka konwertuje te hiperłącza na żądania HTTP, a następnie wyświetla otrzymane odpowiedzi HTTP w formie zrozumiałej dla użytkownika.

    serwer internetowy

    Po drugiej stronie kanału komunikacyjnego znajduje się serwer obsługujący (inż. podawać) użytkownika, dostarczając mu na żądanie dokumenty. Z punktu widzenia użytkownika końcowego serwer jest zawsze pewnym maszyna wirtualna, który w całości lub częściowo generuje dokument, choć w rzeczywistości może to być grupa serwerów, pomiędzy którymi obciążenie jest równoważone, czyli żądania różnych użytkowników są redystrybuowane, lub może być złożone oprogramowanie odpytywanie innych komputerów (takich jak serwery pamięci podręcznej, serwery baz danych, serwery aplikacji e-commerce i inne).

    Serwer niekoniecznie znajduje się na tym samym komputerze i vice versa - kilka serwerów może być zlokalizowanych (hostowanych) na tej samej maszynie. Zgodnie z protokołem HTTP / 1.1 i nagłówkiem hosta mogą nawet dzielić ten sam adres IP.

    Pełnomocnik

    Między przeglądarką internetową a serwerem są duża liczba węzły sieciowe przesyłające wiadomości HTTP. Ze względu na warstwową strukturę większość z nich działa również w sieci transportowej lub poziomy fizyczne, stając się przezroczysta w warstwie HTTP i potencjalnie obniżając wydajność. Te operacje na poziomie aplikacji są nazywane pełnomocnik ... Mogą, ale nie muszą być przejrzyste (modyfikacja żądań nie będzie przez nie przechodzić) i mogą pełnić wiele funkcji:

    • buforowanie (pamięć podręczna może być publiczna lub prywatna, jak pamięć podręczna przeglądarki)
    • filtrowanie (jak skanowanie antywirusa, kontrola rodzicielska, …)
    • równoważenie obciążenia (zezwalaj wielu serwerom na obsługę różnych żądań)
    • uwierzytelnianie (kontrola dostępu do różnych zasobów)
    • logowanie (zezwolenie na przechowywanie historii operacji)

    Podstawowe aspekty HTTP

    HTTP jest prosty

    Nawet przy większej złożoności wprowadzonej w HTTP/2 przez hermetyzację wiadomości HTTP w ramkach, HTTP jest ogólnie prosty i przyjazny dla człowieka. Wiadomości HTTP mogą być odczytywane i rozumiane przez ludzi, co ułatwia testowanie programistom i zmniejsza złożoność dla nowych użytkowników.

    HTTP — rozszerzalny

    Wprowadzone w HTTP / 1.0 nagłówki HTTP sprawiły, że ten protokół jest łatwy do rozszerzenia i eksperymentowania. Nową funkcjonalność można nawet wprowadzić poprzez prostą umowę między klientem a serwerem dotyczącą semantyki nowego nagłówka.

    HTTP jest bezstanowy, ale ma sesję

    HTTP jest bezstanowy: nie ma komunikacji między dwoma żądaniami, które są wykonywane sekwencyjnie przez to samo połączenie. To natychmiast oznacza możliwość wystąpienia problemów dla użytkownika próbującego konsekwentnie wejść w interakcję z określoną stroną, na przykład podczas korzystania z koszyka w sklep internetowy... Ale chociaż rdzeń HTTP jest bezstanowy, pliki cookie umożliwiają korzystanie z sesji stanowych. Korzystając z rozszerzalności nagłówków, pliki cookie są dodawane do przepływu pracy, umożliwiając sesji współdzielenie kontekstu lub stanu przy każdym żądaniu HTTP.

    HTTP i połączenia

    Połączenia międzysieciowe są kontrolowane przez transport i dlatego zasadniczo wykraczają poza granice protokołu HTTP. Chociaż HTTP nie wymaga, aby bazowy protokół transportowy był oparty na połączeniu, wymaga tylko niezawodność lub brak utraconych wiadomości (tzn. przynajmniej reprezentacja błędu). Spośród dwóch najpopularniejszych protokołów transportowych w Internecie, TCP jest niezawodny, ale UDP nie. HTTP opiera się następnie na opartym na połączeniu standardzie TCP, chociaż połączenie nie zawsze jest wymagane.

    HTTP/1.0 otwierał połączenie TCP dla każdej wymiany żądania/odpowiedzi, co ma dwie ważne wady: otwarcie połączenia wymaga wielokrotnej wymiany wiadomości, a zatem jest powolne, chociaż staje się bardziej wydajne przy wysyłaniu wielu wiadomości lub przy regularnym wysyłaniu wiadomości: ciepły połączenia są bardziej wydajne niż przeziębienie.

    Aby złagodzić te niedociągnięcia, HTTP / 1.1 wprowadził potokowanie (które okazało się trudne do zaimplementowania) i trwałe połączenia: podstawowe połączenie TCP można częściowo kontrolować za pomocą nagłówka Connection. Protokół HTTP / 2 wykonał kolejny krok, dodając muxing wiadomości do prostego połączenia, aby zapewnić ciepłe i bardziej wydajne połączenie.

    Trwają eksperymenty mające na celu opracowanie lepszego protokołu transportowego, bardziej odpowiedniego dla HTTP. Na przykład Google eksperymentuje z QUIC, który jest oparty na UDP, aby zapewnić bardziej niezawodny i wydajny protokół transportowy.

    Co można kontrolować przez HTTP

    Naturalna rozszerzalność protokołu HTTP z czasem pozwoliła na większą kontrolę i funkcjonalność sieci. Pamięć podręczna i metody uwierzytelniania były wczesnymi funkcjami w historii HTTP. Natomiast możliwość złagodzenia pierwotnych ograniczeń została dodana w latach 2010-tych.

    Wymienione poniżej funkcje ogólne zarządzany przez HTTP.


    • Serwer może instruować serwery proxy i klientów, co należy buforować i jak długo. Klient może poinstruować pośredniczące serwery proxy pamięci podręcznej, aby ignorowały przechowywane dokumenty.
    • Relaksujące ograniczenia źródła
      Aby zapobiec spyware i innym włamaniom naruszającym prywatność, przeglądarka internetowa wymusza ścisłą separację między stronami internetowymi. Tylko strony z to samo źródło może uzyskać dostęp do informacji na stronie internetowej. Chociaż takie ograniczenie jest obciążeniem dla serwera, nagłówki HTTP mogą osłabiać silną separację po stronie serwera, pozwalając, aby dokument był częścią informacji z różnych domen (ze względów bezpieczeństwa).
    • Uwierzytelnianie
      Niektóre strony są dostępne tylko dla specjalnych użytkowników. Uwierzytelnianie podstawowe może być zapewnione przez HTTP, albo poprzez użycie nagłówka WWW-Authenticate i tym podobnych, albo poprzez utworzenie specjalnej sesji z wykorzystaniem plików cookie.
    • Proxy i tunelowanie
      Serwery i/lub klienci często znajdują się w intranecie i ukrywają przed innymi swoje prawdziwe adresy IP. Żądania HTTP przechodzą przez serwer proxy, aby przekroczyć tę barierę sieciową. Nie wszystkie serwery proxy są serwerami proxy HTTP. Na przykład protokół SOCKS działa na niższym poziomie. Inne, takie jak ftp, mogą być obsługiwane przez te serwery proxy.
    • Sesje
      Korzystanie z cookie HTTP umożliwia powiązanie żądania ze stanem na serwerze. Tworzy to sesję, chociaż rdzeń HTTP jest protokołem bezstanowym. Jest to przydatne nie tylko w przypadku koszyków na zakupy online, ale także w przypadku każdej witryny, która pozwala użytkownikowi dostosować wynik.

    Strumień HTTP

    Gdy klient chce wejść w interakcję z serwerem będącym serwerem końcowym lub pośredniczącym proxy, wykonuje następujące kroki:

    1. Otwieranie połączenia TCP: Połączenie TCP zostanie użyte do wysłania żądania lub żądań i otrzymania odpowiedzi. Klient może otworzyć nowe połączenie, ponownie użyć istniejącego lub otworzyć wiele połączeń TCP z serwerem.
    2. Wyślij wiadomość HTTP: wiadomość HTTP (do HTTP / 2) - czytelna dla człowieka. Od HTTP/2, proste wiadomości zamknięte w ramkach, co uniemożliwia ich bezpośrednie odczytanie, ale zasadniczo pozostają takie same. GET / HTTP / 1.1 Host: strona Akceptuj-język: fr
    3. Odczytuje odpowiedź z serwera: HTTP / 1.1 200 OK Data: sobota, 09 października 2010 14:28:02 GMT Serwer: Apache Ostatnia modyfikacja: wt, 01 grudnia 2009 20:18:22 GMT ETag: "51142bc1-7449- 479b075b2891b" Zakresy akceptacji: bajty Content-Length: 29769 Content-Type: text / html
    4. Zamyka lub ponownie wykorzystuje połączenie dla dalszych żądań.

    Jeśli potok HTTP jest włączony, można wysłać wiele żądań bez oczekiwania na pierwszą pełną odpowiedź. Potok HTTP trudno jest zintegrować z istniejącymi sieciami, w których stare oprogramowanie współistnieje z nowoczesnymi wersjami. Potok HTTP został zastąpiony w HTTP / 2 bardziej niezawodnymi multipleksowanymi żądaniami w ramce.

    Wiadomości HTTP

    Komunikaty HTTP/1.1 i wcześniejsze HTTP są czytelne dla człowieka. W wersji HTTP/2 wiadomości te są osadzone w nowej strukturze binarnej, ramce, umożliwiającej optymalizacje, takie jak kompresja nagłówków i multipleksowanie. Nawet jeśli część oryginalnej wiadomości HTTP jest wysyłana w tej wersji HTTP, semantyka każdej wiadomości nie zmienia się, a klient odtwarza (wirtualnie) oryginalne żądanie HTTP. Przydaje się również do zrozumienia komunikatów HTTP/2 w formacie HTTP/1.1.

    Istnieją dwa rodzaje wiadomości HTTP, żądań i odpowiedzi, każdy w innym formacie.

    Zapytania

    Przykłady żądań HTTP:

    • metoda HTTP, zwykle czasownik typu GET,
    • Nagłówki (opcjonalnie) zawierające dodatkowe informacje o serwerze.
    • Lub treść w przypadku niektórych metod, takich jak POST, zawierająca przesłany zasób.

    Odpowiedzi

    Przykłady odpowiedzi:

    • Wersja protokołu HTTP.
    • Kod stanu HTTP wskazujący powodzenie żądania lub przyczynę niepowodzenia.
    • Komunikat o statusie - krótki opis kodu statusu.
    • Nagłówki HTTP, podobne do nagłówków żądań.
    • Opcjonalnie: treść zawierająca zasób do przesłania.

    Wniosek

    HTTP to łatwy w użyciu rozszerzalny protokół. Struktura klient-serwer, wraz z możliwością łatwego dodawania nagłówków, pozwala na poruszanie się HTTP wraz z rozszerzającymi się możliwościami sieci WWW.

    Chociaż HTTP / 2 dodaje trochę złożoności, osadzając wiadomości HTTP w ramkach w celu poprawy wydajności, podstawowa struktura wiadomości pozostaje z HTTP / 1.0. Przepływ sesji pozostaje prosty, umożliwiając eksplorację i debugowanie za pomocą prostego

    Podobał Ci się artykuł? Podziel się z przyjaciółmi!
    czy było to pomocne?
    tak
    Nie
    Dziekuję za odpowiedź!
    Coś poszło nie tak i Twój głos nie został policzony.
    Dziękuję Ci. Twoja wiadomość została wysłana
    Znalazłeś błąd w tekście?
    Zaznacz to, kliknij Ctrl + Enter i wszystko naprawimy!