24 października 2012

Internet od środka: jak przebiega komunikacja w sieci?



Zapraszam na drugą część cyklu o podstawach komunikacji w sieci. Dziś tematyka może trochę bardziej zaawansowana, ale na pewno nie mniej ciekawa.

Po wcześniejszym wstępie, dziś opiszemy jak wygląda komunikacja między komputerami w Internecie.



Model OSI / ISO

Diagram przedstawia warstwy modelu OSI / ISO. Dane przygotowane na jednym komputerze muszą przedostać się przez kilka warstw sieci, aby drugi komputer mógł je z powodzeniem odczytać i wykorzystać. Każda warstwa jest odpowiedzialna za specyficzne działania, w ramach których często wykorzystywane są odpowiednie protokoły sieciowe. Model OSI / ISO został na potrzeby komunikacji w Internecie uproszczony i jest często przedstawiany w postaci modelu TCP/IP, który wygląda tak:

Diagram TCP / IP

Warstwa aplikacji z pewnością najbardziej zainteresuje przeciętnego użytkownika, bo to tutaj działają wszelkie programy. Jeżeli więc korzystasz z przeglądarki internetowej, poczty elektronicznej, wymiany plików przez FTP, to masz do czynienia z warstwą aplikacji w modelu TCP/IP. Z tą warstwą związane są protokoły takie, jak: HTTP, DNS, SMTP, FTP.

W warstwie transportowej, jak sama nazwa wskazuje, działają mechanizmy odpowiedzialne za dostarczenie danych. Tutaj pole do popisu mają protokoły TCP i UDP.

Warstwa Internetu. Tu przede wszystkim działa protokół IP (Internet Protocol) używany do lokalizacji hostów na podstawie ich adresów.

Warstwa dostępu do sieci. Najniższy poziom komunikacji, czyli poziom fizyczny - wykorzystywany przez karty sieciowe, kabelki, modemy i im podobne urządzenia.

 

Porty

Obok protokołów, które za chwile ogólnie opiszemy używając przykładu, możemy rozróżnić porty. Porty istnieją niezależnie od protokołów i pozwalają zweryfikować usługę sieciową działającą w ramach danego protokołu.

Traktuj porty jako coś abstrakcyjnego - nie jest to kabelek wetknięty w odpowiednie gniazdo z numerem portu, ale logiczny byt, który porządkuje komunikację w ramach danego protokołu. Dlaczego? Zestawienie adresu hosta, protokołu oraz portu pozwala jednoznacznie zaadresować do niego odpowiedni pakiet danych.

Na przykład twoja przeglądarka, po wpisaniu w jej adresie http://jakasstrona.pl "wie", że ma spróbować wysłać żądanie w protokole HTTP do hosta ukrytego pod nazwą domenową jakasstrona.pl, nasłuchującego na porcie 80. Gdybyś wpisał adres http://jakasstrona.pl:12856 wysłałbyś żądanie na port 12856, jednak zapewne trafiłoby ono w próżnię, bo żadna aplikacja nie oczekuje na komunikację przez HTTP na tym serwerze i porcie - czyli, mówiąc bardziej fachowo, nie istnieje tam żaden endpoint.

Wykorzystanie portów i protokołów
Przykład wykorzystania portów i protokołów. Serwer udostępnia usługę WWW na porcie 80 i usługę pocztową na porcie 25.
Port może przyjąć wartość od 0 do 65535. Porty z zasady są przypisane do konkretnych usług - i tak mamy porty przypisane domyślnie do protokołów:

  • 80 - HTTP
  • 443 - HTTPS
  • 53 - DNS
  • 20, 21 - FTP
  • 143 - IMAP
  • 110 - POP3
  • 25 - SMTP

 

Przykład

Przeanalizujmy uproszczony przykład przesłania informacji z jednego komputera do drugiego. Niech będzie to wspominany już wcześniej request z przeglądarki.

1. Użytkownik zaczyna od warstwy aplikacji.

Uruchamia przeglądarkę i wpisuje adres internetowy www.przykładowyadres.pl. Po wciśnięciu ENTER przeglądarka generuje request HTTP z prośbą o zwrócenie strony WWW przez docelowy serwer.

2. www.przykładowyadres.pl to adres domenowy.

Host użytkownika używa protokołu DNS (Domain Name System), aby przetłumaczyć ten adres z postaci przyjaznej dla użytkownika, do postaci adresu IP pozwalającego zidentyfikować serwer zdalny w sieci. W tym celu komunikuje się z serwerami DNS rozlokowanymi w Internecie i otrzymuje od nich informację zwrotną o adresie IP, np.: 111.112.113.114 (przykład).

3. Host, mając już wiedzę o adresie, protokole z warstwy aplikacyjnej i porcie docelowym, procesuje pakiet danych dalej i przechodzi do warstwy transportowej. Pakiet zawiera już nagłówek HTTP.

Nagłówek HTTP

Nagłówek protokołu możesz traktować jako zbiór danych, opisujących właściwości pakietu potrzebne do przetworzenia przez dany protokół.

Pakiet to po prostu nazwa (używana na potrzeby protokołów sieciowych) fragmentu danych, które chcemy przesłać z jednego hosta do drugiego używając połączeń sieciowych.

4. Teraz do gry wchodzi protokół TCP.

Za transport danych między dwoma komputerami odpowiedzialne są przede wszystkim dwa protokoły - TCP (Transmission Control Protocol) oraz UDP (User Datagram Protocol). Częściej stosuje się ten pierwszy, gdyż zapewnia dostarczenie danych w całości, bez błędów i duplikatów. Minusem jest większe obciążenie sieci, gdyż w porównaniu do UDP potrzebuje przesłania większej ilości danych potwierdzających poprawność. TCP - niezawodność, UDP - szybkość.

Można powiedzieć, że TCP niejako nadzoruje działania protokołu IP i zapewnia jego niezawodność. IP transmituje dane w formie pakietów mających określoną maksymalną wielkość. Aby przesłać dużą porcję danych, należy podzielić ją na wiele pakietów i wysyłać pojedynczo protokołem IP.

Pakiety takie mogą się w sieci zagubić, zdeformować czy przyjść w nieodpowiedniej kolejności do odbiorcy, co uniemożliwiłoby odczytanie zawartych w nich informacji (byłyby bezużytecznym ciągiem zer i jedynek). Protokół TCP kontroluje pakiety tak, aby żadna z wymienionych okoliczności nie zakłóciła transmisji. TCP jest odpowiedzialny za rozbicie danych, wysłanie za pomocą protokołu IP, a potem poskładanie ich w całość u odbiorcy i dostarczenie aplikacji.

Nagłówek TCP

5. Pakiet, opakowany już w nagłówki HTTP i TCP wędruje do kolejnej warstwy - Internetu. Tutaj przejmuje go protokół IP.

IP jest odpowiedzialny za zaadresowanie naszego pakietu (adres IP zdobyliśmy dzięki DNS) i zlokalizowanie hosta docelowego. Host docelowy może być zlokalizowany w zupełnie odrębnej sieci po drugiej stronie globu. Urządzenia sieciowe zwane ruterami przechowują informacje o drogach, którymi może dotrzeć pakiet do adresata (czyli po prostu połączeniach między różnymi komputerami, wiodących w końcu do docelowego hosta). Protokół IP ma za zadanie jednoznacznie zlokalizować docelowego hosta i wyznaczyć optymalną trasę dla pakietów.

Nagłówek IP

6. Po opakowaniu pakietu w nagłówek IP, pakiet dociera do warstwy najniższej - dostępu do sieci.

Tutaj działają mechanizmy odpowiedzialne za fizyczne wysłanie pakietu w postaci impulsów elektrycznych z naszego hosta. Pakiet jest dodatkowo opakowywany w tak zwaną ramkę.

W tej warstwie działa także protokół ARP (Address Resolution Protocol). Wspomniane wcześniej ramki powinny być zaadresowane adresem MAC. Jest to unikalny adres każdego komputera, który posiada interfejs sieciowy, na przykład kartę sieciową Ethernet. Taka karta ma fabrycznie przyporządkowany, unikalny adres fizyczny MAC.


Jeżeli chcesz poznać twój unikalny adres MAC, otwórz linię poleceń i wpisz:

ipconfig /all

Zobaczysz wynik podobny do tego:

Karta bezprzewodowej sieci LAN Połączenie sieci bezprzewodowej:

   Sufiks DNS konkretnego połączenia : xxx.xx.pl
   Opis. . . . . . . . . . . . . . . : Broadcom 802.11n Network Adapter
   Adres fizyczny. . . . . . . . . . : XX-XX-XX-XX-XX-XX
   DHCP włączone . . . . . . . . . . : Tak
   Autokonfiguracja włączona . . . . : Tak



Adres fizyczny to twój MAC adres.

ARP pozwala poznać adres MAC hosta docelowego, co jest konieczne przy adresowaniu wysyłanej ramki.

Reasumując - jak wyglądają dane przesyłane podczas wprowadzania adresu strony internetowej? W bardzo uproszczonym schemacie możemy je przedstawić tak:


Request

7. Request naszej przeglądarki, żądający wyświetlenia strony www.przykładowyadres.pl jest zamieniany na ciąg zer i jedynek w postaci elektrycznej i wysyłany, z wykorzystaniem na przykład przewodowej karty sieciowej Ethernet lub jednego ze standardów połączeń bezprzewodowych Wi-Fi. Nasze żądanie idzie w świat i dzięki protokołowi IP przebywa drogę do hosta docelowego.

8. Ramka dociera do najniższej warstwy hosta docelowego - warstwy dostępu do sieci. 

Weryfikowany jest adres MAC podany w ramce i jeżeli jest on taki sam, jak adres MAC hosta docelowego, zwartość ramki jest przetwarzana w wyższych warstwach. A to oznacza, że zdejmujemy ramkę i idziemy wyżej, bo informacje w niej zawarte spełniły już swoje zadanie.

9. W warstwie Internetu host za pomocą adresu IP rozpoznaje, że dane są kierowane do niego.

10. W warstwie transportowej protokół TCP zapewnia, że wszystkie pakiety IP składające się na pojedynczy transport danych dotarły do celu.

W razie potrzeby wysyła prośbę o ponowne nadesłanie brakującego pakietu. Zapewnia, że pakiety zostały scalone w odpowiedniej kolejności. W ten sposób, po usunięciu nagłówka TCP, mamy na hoście docelowym czysty request HTTP GET. Request jest kierowany na docelowy port 80.

11. Serwer WWW (specjalna aplikacja udostępniająca usługi WWW), nasłuchujący na porcie 80, przyjmuje request HTTP GET, procesuje go i odpowiada nam responsem w postaci strony WWW. Response pokonuje analogiczną drogę, ale w drugą stronę.

W ten sposób bardzo ogólnie opisaliśmy komunikację w sieci Internet od środka. ;)

5 komentarzy:

  1. bardzo fajny wpis, dobrze wyjaśnione

    OdpowiedzUsuń
  2. Bardzo dobrze wszystko wyjaśniasz.

    OdpowiedzUsuń
  3. Witam;Super wyjaśnione,jestem początkującym w internecie.Ten opis wiele wyjaśnia jak to działa.Można zrozumieć i wiele nauczyć się.Pozdrawiam Tomasz.

    OdpowiedzUsuń
  4. Bardzo fajnie napisane. Jestem pod wrażeniem i pozdrawiam.

    OdpowiedzUsuń
  5. Peplink dystrybutor odgrywa kluczową rolę w dostarczaniu na polski rynek wysokiej klasy rozwiązań sieciowych. Firma ta, dzięki swojemu bogatemu doświadczeniu i specjalistycznej wiedzy, jest w stanie zaoferować klientom nie tylko sprzęt, ale także kompleksowe doradztwo w zakresie optymalizacji i bezpieczeństwa sieci. Dzięki produktom Peplink, przedsiębiorstwa mogą skutecznie zarządzać swoją infrastrukturą sieciową, zwiększając efektywność pracy oraz ochronę przed zagrożeniami cyfrowymi.

    OdpowiedzUsuń