background image

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.

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:

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.

background image

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ądzeniaPorty

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.

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.

background image

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 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.

background image

 

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.

 

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

background image

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:

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 

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. ;) 


Document Outline