Protokoły sieciowe


Protokół Ethernet

Ethernet - technika, w której zawarte są standardy wykorzystywane w budowie głównie lokalnych sieci komputerowych. Obejmuje ona specyfikację przewodów oraz przesyłanych nimi sygnałów. Ethernet opisuje również format ramek i protokoły z dwóch najniższych warstw Modelu OSI. Jego specyfikacja została podana w standardzie IEEE 802.

Ethernet jest najpopularniejszym standardem w sieciach lokalnych. Inne wykorzystywane specyfikacje to Token Ring, FDDI czy ARCNET.

Ethernet został opracowany przez Roberta Metcalfe'a w Xerox PARC czyli ośrodku badawczym firmy Xerox i opublikowany w roku 1976. Bazuje na idei węzłów podłączonych do wspólnego medium i wysyłających i odbierających za jego pomocą specjalne komunikaty (ramki). Wszystkie węzły posiadają niepowtarzalny adres MAC.

Klasyczne sieci Ethernet mają cztery cechy wspólne. Są to:
  • parametry czasowe,
  • format ramki,
  • proces transmisji
  • podstawowe reguły obowiązujące przy ich projektowaniu.
Standardem jest izolacja o wytrzymałości minimum 250 V~ między kablem a komputerem (niektóre firmy, np. 3Com, stosowały lepszą, co skutkowało dużo większą trwałością ich kart sieciowych)


Ramka sieci Ethernet

Istnieją 4 standardy ramek:
  • Ethernet wersja 1 - już nieużywana,
  • Ethernet wersja 2 (Ethernet II) - zwana też ramką DIX od firm DEC, Intel i Xerox, które opracowały wspólnie ten typ ramki i opublikowały w 1978. Jest ona w tej chwili najczęściej stosowana,
  • IEEE 802.x LLC,
  • IEEE 802.g LLC,
Ramki różnią się pomiędzy sobą długościami nagłówków, maksymalną długością ramki (MTU) i innymi szczegółami. Różne typy ramek mogą jednocześnie korzystać z tej samej sieci.

Budowa ramki Ethernet wersja 1:

  • Preambuła - składająca się z 7 bajtów złożonych z naprzemiennych jedynek i zer: 10101010101010101010101010101010101010101010101010101010
  • SFD - (ang. start frame delimiter), czyli znacznik początkowy ramki w postaci sekwencji 8 bitów (1 bajt): 10101011
  • adres MAC odbiorcy (6 bajtów)
  • adres MAC nadawcy (6 bajtów)
  • typ (2 bajty) - jeżeli wartość jest równa lub większa od 1536 (w zapisie szesnastkowym 0x0600), to określa typ protokołu który jest używany, jeżeli mniejsza to oznacza długość danych w ramce
  • dane (46 - 1500 bajtów) - jeżeli dane mniejsze niż 46 bajtów, to uzupełniane są zerami
  • suma kontrolna (4 bajty) CRC

Protokół MAC

Protokół kontroli dostępu do nośnika MAC (Medium Access Control) określa zasady, według których ramka będzie transmitowana łączem. W przypadku łączy punkt-punkt, które z jednej strony mają pojedynczego nadawcę, natomiast z drugiej jednego odbiorcę, protokół MAC jest prosty lub się go nie stosuje. Nadawca może wysyłać ramkę każdorazowo, gdy łącze znajduje się w stanie bezczynności. Bardziej interesująca jest sytuacja, w której wiele węzłów współużytkuje pojedyncze łącze rozgłaszania. Jest to tak zwany problem wielodostępności. W tym przypadku protokół MAC zajmuje się koordynowaniem transmitowania ramek przez wiele węzłów.


Protokół IP

Protokół internetowy, IP (od ang. Internet Protocol) - protokół komunikacyjny warstwy sieciowej modelu OSI (warstwy internetu w modelu TCP/IP). Protokół internetowy to zbiór ścisłych reguł i kroków postępowania, które są automatycznie wykonywane przez urządzenia w celu nawiązania łączności i wymiany danych. Używany powszechnie w Internecie i lokalnych sieciach komputerowych[1].

Dane w sieciach IP są wysyłane w formie bloków określanych mianem pakietów. W przypadku protokołu IP, przed rozpoczęciem transmisji nie jest zestawiana wirtualna sesja komunikacyjna pomiędzy dwoma hostami, które nie komunikowały się ze sobą wcześniej[1].

Protokół IP jest protokołem zawodnym - nie gwarantuje, że pakiety dotrą do adresata, nie zostaną pofragmentowane, czy też zdublowane, a ponadto mogą dotrzeć do odbiorcy w innej kolejności niż zostały nadane. Niezawodność transmisji danych jest zapewniana przez protokoły warstw wyższych (np. protokół sterowania transmisją), znajdujących się w hierarchii powyżej warstwy sieciowej


Protokół IPv4

IPv4 (ang. Internet Protocol version 4) - czwarta wersja protokołu komunikacyjnego IP przeznaczonego dla Internetu. Identyfikacja hostów w IPv4 opiera się na adresach IP. Dane przesyłane są w postaci standardowych datagramów. Wykorzystanie IPv4 jest możliwe niezależnie od technologii łączącej urządzenia sieciowe - sieć telefoniczna, kablowa, radiowa, itp. IPv4 znajduje się obecnie w powszechnym użyciu. Dostępna jest również nowsza wersja - IPv6. Opis czwartej wersji protokołu IP znajduje się w RFC 791 . W modelu TCP/IP protokół IPv4 znajduje się w warstwie Internetu, której odpowiada warstwa sieci w modelu OSI.


Adresy i maski IPv4

W IPv4, czyli obecnym standardzie adresowania internetu, adres IP to liczba 32-bitowa (od 0 do 4294967295), zapisywana w porządku big endian. Liczba ta jest zazwyczaj zapisywana jako 4 oddzielne jej bajty, zwane oktetami, ponieważ w postaci binarnej mają one osiem bitów. Te osiem bitów daje 256 kombinacji, więc każdy oktet przedstawia liczbę od 0 do 255.

Najpopularniejszy sposób zapisu adresów IP, to przedstawianie ich jako 4 dziesiętnych liczb od 0 do 255 oddzielonych kropkami. W rzeczywistości komputery traktują adres jako liczbę 32-bitową. Taki zapis jest mało czytelny, wobec czego stosuje się podział adresu IP na cztery oktety:

11001111 10001110 10000011 11101100

po czym każdą grupę 8-bitów przekształcamy do postaci dziesiętnej:

207 142 131 236

Z adresowaniem IP wiąże się pojęcie maski sieciowej. Wyobraźmy sobie sieć złożoną z 3 komputerów o adresach:

Komputer 1: 192.168.1.1 Komputer 2: 192.168.1.2 Komputer 3: 192.168.1.3

Początek adresu dla wszystkich z nich jest ten sam, a końcówka się zmienia. Aby ściśle zdefiniować adresy przynależne do danej sieci wymyślono pojęcie maski podsieci. Umówiono się, że określona liczba pierwszych bitów adresu IP ma być taka sama, a pozostałe bity w sieci mogą się różnić. W ten sposób powstaje proste kryterium, pozwalające komputerom na określenie swojego położenia na podstawie adresu. Maskę sieci zapisuje się podobnie jak adres IP. Dla przykładu :

255.255.255.0

co binarnie daje:

11111111 11111111 11111111 00000000

Jeżeli komputery oprócz komunikacji w swojej sieci lokalnej mają łączyć się z internetem, to maska sieciowa staje się bardzo ważna. Gdy urządzenie sieciowe stwierdzi, że adres docelowy, z którym chce wymieniać dane nie pasuje do maski, to próbuje się z nim łączyć przez bramę sieciową. Porównywanie opiera się na zerowaniu w adresie bitów równych zeru w masce (logiczny AND bitów maski i adresu IP).


Rozdzielanie adresów (Historyczne)


Klasa Pierwszy oktet dwójkowo Pierwszy adres IP Ostatni adres IP Liczba sieci Maksymalna liczba adresów w sieci
A 0xxxxxxx 0.0.0.0 127.255.255.255128 (7 bitów) 16 777 216 (24bity)
B 10xxxxxx 128.0.0.0 191.255.255.25516 384 (14 bitów) 65 536 (16bitów)
C 110xxxxx 192.0.0.0 223.255.255.255 2 097 152 (21 bitów) 256 (8 bitów)
D 1110xxxx 224.0.0.0 239.255.255.255 nie zdefiniowano nie zdefiniowano
E 1111xxxx 240.0.0.0 240.0.0.0 255.255.255.255 nie zdefiniowano nie zdefiniowano


Od roku 1997 podział na klasy sieci jest nieaktualny i nieużywany. Obecnie adresy IPv4 są przydzielane bez zwracania uwagi na klasy sieci - według założeń CSDIR Classless Routing - RFC 4632 (CIDR Classless Inter-Domain Routing) i RFC 1918 . Podział nie jest już też używany przez urządzenia, role klas przejęły maski. Obecnie cały internet funkcjonuje na routingu bezklasowym (CSDIR). Poniższy podział na klasy (A,B,C,D) jest historyczny:

W adresach klasy A, tylko pierwszy oktet wskazuje adres sieci; pozostałe trzy oktety opisują unikatowy adres węzła w sieci. Choć jest tylko 126 adresów sieci klasy A, każdy taki adres może obejmować w przybliżeniu 17 milionów węzłów. Adresy klasy A zostały przyznane organizacjom rządowym i wielkim instytucjom.

Adresy klasy B używają pierwszych dwóch oktetów do wskazania adresu sieci i ostatnich dwóch jako unikatowego węzła sieci. Z uwagi na większą długość, adresów klasy B jest więcej, ale w ramach każdego można unikatowo opisać tylko około 65 000 węzłów.

W adresach klasy C używa się pierwszych trzech oktetów jako adresu sieciowego i tylko ostatniego oktetu jako adresu węzła. Stąd istnieje wiele dostępnych adresów klasy C, ale każdy z nich może być użyty tylko do 254 węzłów.


Rozdzielanie adresów (współczesne)

Ze względu na skończoną ilość adresów oraz konieczność ich agregacji dla celów uproszczenia trasowania powstały Regionalne Rejestry Internetowe (ang. RIR) - organizacje zajmujące się przydzielaniem puli adresów dla poszczególnych dostawców Internetu (ang. ISP). Organizacją nadrzędną jest Agencja Zarządzania Numeracją Internetową (ang. IANA), która zajmuje się dystrybucją poszczególnych pól adresowych. Do organizacji regionalnych należą:
  • APNIC (ang. Asia Pacific Network Information Centre) - dla rejonu Azji i Pacyfiku,
  • ARIN (ang. American Registry for Internet Numbers) - dla rejonu Ameryki Północnej,
  • LACNIC (ang. Regional Latin-American and Caribbean IP Address Registry) - dla rejonu Ameryki Łacińskiej i wysp Karaibskich,
  • RIPE (fr. Réseaux IP Européens) - dla rejonu Europy, Bliskiego Wschodu i centralnej Azji,
  • AfriNIC - dla rejonu Afryki (Rozpoczęła działanie 22 lutego 2005, wcześniej dystrybucją zajmowały się RIPE NCC, APNIC i ARIN.
Jeżeli ISP potrzebuje więcej adresów zwraca się do właściwej organizacji regionalnej i otrzymuje kolejny zakres numerów IP. Dla przykładu ARIN przydzielił adresy od 64.78.200.0 do 64.78.207.255 firmie Verado, Inc, która przekazała pulę od 64.78.205.0 do 64.78.205.15 firmie Bomis. Bomis adres 64.78.205.6 udostępnił Wikipedii.

Powszechnie panuje pogląd, że pula dostępnych adresów jest na wyczerpaniu, jednak w oficjalnym zestawieniu zajętości adresacji IP jest jeszcze wiele bloków zarezerwowanych przez IANA ([1]).

Adresy należące do puli 127.0.0.0/8 (127.x.x.x) są przypisane do urządzenia loopback i zawsze odnoszą się do komputera lokalnego, tak zwany localhost. Adres 0.0.0.0 to adres domyślny (ang. default)


Prywatne adresy IPv4

Istnieje pula prywatnych adresów IP. Mogą być one wykorzystane tylko w sieciach lokalnych. Infrastruktura Internetu ignoruje te adresy IP. IANA (Internet Assigned Numbers Authority) zarezerwował następujące trzy bloki przestrzeni adresów IP dla prywatnych sieci:
  • 10.0.0.0 - 10.255.255.255 - dla sieci prywatnych dawniej z klasy A (maska zakresu: 255.0.0.0)
  • 172.16.0.0 - 172.31.255.255 - dla sieci prywatnych dawniej z klasy B (maska zakresu: 255.240.0.0)
  • 192.168.0.0 - 192.168.255.255 - dla sieci prywatnych dawniej z klasy C (maska zakresu: 255.255.0.0)
Adresy prywatne można wykorzystywać w routerach w sieciach lokalnych, ale nie działają one w publicznej części internetu. Jeżeli administrator sieci lokalnej przydzieli swoim komputerom adresy IP z puli prywatnej, to routery mogą rozpoznać kiedy komputery chcą się łączyć z internetem. W takiej sytuacji brama internetowa wykorzystuje translację adresów sieciowych, która pozwala na łączenie się z internetem komputerom nie posiadającym własnych publicznych adresów IP. Komputery z adresami prywatnymi nie mogą pełnić roli serwerów sieciowych w Internecie chyba, że posłużymy się techniką maskowania adresów docelowych (DNAT).

Automatyczne przydzielanie adresów IPv4 może być realizowane poprzez zastosowanie protokołów DHCP, RARP, BOOTP, PPP.

W przypadku braku serwera DHCP w sieci, adres IP przydzielany jest z puli 169.254.0.1 - 169.254.255.254 z domyślną maską 255.255.0.0 przez mechanizm APIPA.


Protokół IPv6

IPv6 (ang. Internet Protocol version 6) - protokół komunikacyjny, będący następcą protokołu IPv4, do którego opracowania przyczynił się w głównej mierze problem małej, kończącej się liczby adresów IPv4. Podstawowymi zadaniami nowej wersji protokołu jest zwiększenie przestrzeni dostępnych adresów poprzez zwiększenie długości adresu z 32-bitów do 128-bitów, uproszczenie nagłówka protokołu oraz zapewnienie jego elastyczności poprzez wprowadzenie rozszerzeń, a także wprowadzenie wsparcia dla klas usług, uwierzytelniania oraz spójności danych. Protokół jest znany także jako IP Next Generation oraz IPng. Głównymi dokumentami opisującymi protokół są RFC 2460 ? oraz RFC 4291

Powszechnie stosowany obecnie protokół IPv4 ma pojemność około 4 miliardów adresów (232). W czasach gdy powstawał protokół IP (lata siedemdziesiąte), wydawało się to wystarczające - wtedy nikt nie przewidywał takiej popularności komputerów i Internetu. Jednakże już w pierwszych latach użytkowania IP podjęto prace mające na celu zaoszczędzenie adresów - wprowadzono wtedy adresowanie bezklasowe. Na początku lat dziewięćdziesiątych było jednak już jasne, że adresy IP wkrótce ulegną wyczerpaniu, więc w 1992 rozpoczęto prace nad stworzeniem IPNG - protokołu internetowego nowej generacji, co doprowadziło do pełnej definicji nowego protokołu w roku 1996. Nowy protokół nie mógł nosić numeru wersji 5, ponieważ numer ten został już wcześniej użyty dla eksperymentalnego protokołu Internet Streaming Protocol (w zamierzeniu mającego przenosić treści audio i wideo), dlatego też użyto kolejnego numeru - 6.

Przy tworzeniu nowych technologii i protokołów projektanci często stają przed dylematem stworzenia całkiem nowej jakości, czy też utrzymywania zgodności wstecz, często kosztem pewnych ograniczeń lub wprowadzenia znacznej komplikacji. W czasach tworzenia IPv6 Internet nie był tak popularny jak teraz i szacowano, że zamiana protokołu na IPv6 będzie możliwa bez utrzymania zgodności między nowszą i starszą wersją protokołu IP, dlatego też zaprojektowano całkowicie nowy protokół, bez obciążenia balastem koniecznej zgodności z IPv4. Prace nad projektowaniem IPv6 trwały dość długo, a po ich zakończeniu wizja końca adresacji IPv4 była wciąż dość odległa w czasie, dlatego też nowy protokół nie został wdrożony produkcyjnie. W tej chwili jednak liczba komputerów w Internecie i jego zastosowania uniemożliwiają zamianę protokołu IPv4 na IPv6 i oba protokoły jednocześnie muszą być używane przez urządzenia sieciowe, które przez to mają faktycznie podłączenie do dwóch rozłącznych sieci.


Adresacja IPv6

W protokole IPv6 adres zapisany jest w 128-bitowej liczbie i może identyfikować jeden bądź wiele interfejsów. W przypadku tego protokołu adres jest bardziej przejrzysty niż adres w poprzedniej wersji protokołu. W przeciwieństwie do poprzedniej wersji protokołu, zakres adresu, czyli obszar jego widoczności, jest ograniczony przez odpowiedni prefiks.

Adres zazwyczaj zapisuje się jako osiem 16-bitowych bloków zapisanych w systemie szesnastkowym oddzielonych dwukropkiem. Dozwolone jest pomijanie początkowych zer w bloku, a także pominięcie jednego ciągu bloków składających się wyłącznie z zer. Pominięte bloki zer oznacza się podwójnym separatorem bloków (dwukropek). Dopuszczalny jest tylko jeden podwójny dwukropek "::" w adresie. Poniższe adresy są równoznaczne:
  • 2001:0db8:0000:0000:0000:0000:1428:57ab
  • 2001:0db8:0:0:0:0:1428:57ab
  • 2001:0db8:0:0::1428:57ab
  • 2001:0db8::1428:57ab
  • 2001:db8::1428:57ab

Typy rozgłoszeń IPv6

W adresacji wykorzystywanej w protokole IPv6 używane są trzy typy adresów:
  • adresy unicast - identyfikujące pojedynczy interfejs; pakiety, które są kierowane na ten typ adresu dostarczane są tylko do odbiorcy
  • adresy multicast - identyfikujące grupę interfejsów (mogą one należeć do różnych węzłów), pakiety wysyłane na ten adres dostarczane są do wszystkich członków grupy
  • adresy anycast - podobnie jak adresy multicast, identyfikują one grupę interfejsów, jednak pakiet wysyłany na ten adres dostarczany jest tylko do najbliższego węzła (węzeł ten jest wyznaczany przez protokół routingu)
W przeciwieństwie do poprzedniej wersji protokołu, IPv6 nie definiuje adresów typu broadcast. Jednym z powodów jest fakt, że pakiety wysyłane na ten adres odbierane były przez wszystkie węzły w sieci, nawet takie, które nie potrafiły danych pakietów zinterpretować.

Protokoły IP wraz z ich klasami i adresacją IP zostały szczegółowo opisane na oddzielnej stronie:

Szczegółowy opis adresacji IP



Pozostałe protokoły sieciowe

TCP i UDP

TCP oraz UDP są podobnymi protokołami, które bazują na protokole IP (z tego powodu często możesz spotkać się z określeniem TCP/IP - oznacza to protokół TCP działający przy wykorzystaniu protokołu IP). Technicznie rzecz ujmując TCP jest określone oddzielnie od IP i możliwe jest wykorzystanie innego protokołu (jako przykład w dokumentacji można znaleźć np. kombinację TCP / IPX).

Podstawową różnicą pomiędzy TCP oraz UDP jest to, że TCP gwarantuje dostarczenie pakietu lub zwrócenie błędu (innymi słowy nadawca ma pewność, że informacja została dostarczona), UDP z kolei nie zapewnia żadnego mechanizmu tego typu. Ponieważ 'powiadomienie' wymaga wysłania informacji powrotnej, protokół TCP jest wolniejszy od UDP jeśli chodzi o przesyłanie danych (formalnie - wymaga więcej interakcji, co powoduje, że ilość przesyłanych danych w sumie jest większa). Z tego powodu UDP jest używany w sytuacjach kiedy czas ma większe znaczenie niż dostarczenie wszystkich danych w niezmienionej postaci - np. streaming audio/video czy synchronizacja zegarów, a także w przypadkach kiedy niskie obciążenie sieci jest ważnym czynnikiem - np. wykrywanie komputerów i urządzeń podłączonych do tej samej sieci. TCP z kolei jest zorientowany na połączenie i dłuższą komunikację, lepiej nadaje się do zastosowań, w których spójność danych i fakt ich dostarczenia w kolejności jest znacznie ważniejszy od szybkości - ma to miejsce np. w przypadku komunikacji email, chatów, czy webserwisów.

Poza powyższymi różnicami protokoły te są do siebie podobne - definiują one porty, dzięki którym na jednym urządzeniu może niezależnie działać wiele usług. Istnieją standardowe porty dla różnych protokołów wyższego rzędu (np. 80 - HTTP, 21 - FTP, 22 - SSH, 443 - HTTPS etc), nie ma jednak ograniczeń co do ich używania (poza zabezpieczeniami systemu operacyjnego) - Twoja aplikacja może używać dowolnego z portów do komunikacji. Protokoły te posiadają własne nagłówki - określające m.in. port źródłowy i docelowy, oraz oczywiście właściwe dane. Wszystkie te informacje trafiają do sekcji danych pakietu IP.

SSL i TLS

TLS oraz SSL to protokoły związane z bezpieczeństem komunikacji i jej szyfrowaniem, które zapewniają uwierzytelnianie (obustronne - zarówno serwera jak i klienta), szyfrowanie oraz integralność danych. Ponieważ TLS jest nowszą wersją SSL oraz oba protokoły często bywają nazywane po prostu SSL, takiego skrótu będziemy używać w dalszej części tej sekcji.

SSL (akronim od angielskiego Secure Socket Layer) to zbiór technologii oraz protokołów pozwalających zabezpieczyć dowolną komunikację - choć najczęściej jest używana (i przez to utoższamiana) z protokołem HTTP (HTTPS), znajduje zastosowanie także w innych protokołach i aplikacjach (np. SSH - umożliwiającym bezpieczną komunikację pomiędzy dwoma komputerami).

Istnieje wiele innych protokołów które zostały szczegółowo opisane na oddzielnej stronie:

Szczegółowy spis protokołów modelu OSI



Powrót