Klasy adresów IP
Klasa AÂ
Do identyfikacji sieci wykorzystany jest wyłącznie pierwszy oktet, pozostałe trzy stanowią adres hosta. Najstarszy bit pierwszego bajta adresu jest zawsze równy zeru, poza tym liczby 0 i 127 są zarezerwowane, dlatego ostatecznie dostępnych jest 126 adresów sieci tej klasy. Klasa ta została przeznaczona dla wyjątkowo dużych sieci, ponieważ trzy ostatnie bajty adresu pozwalają na przypisanie ich ponad 16 milionom hostów.
Klasa BÂ
Pierwsze dwa oktety opisują adres sieci tej klasy, pozostałe określają adres hosta. Najstarsze dwa bity pierwszego bajta adresu to 10, dlatego może on zawierać 63 kombinacji (od 128 do 191), drugi może być dowolny dając tym samym do dyspozycji ponad 16 tysięcy adresów tych sieci. W każdej z sieci można przypisać podobną liczbę hostów (ponad 65 tysięcy), z tego powodu klasa ta została przeznaczona dla potrzeb sieci średnich i dużych.
Klasa CÂ
Trzy pierwsze bajty opisują adres sieci, przy czym pierwszy z nich zawsze zaczyna się kombinacją dwójkową 110. Pierwszy bajt pozwala na przypisanie 31 kombinacji (od 192 do 223), kolejne dwa mogą być przypisane dowolnie, dając ostatecznie ponad 2 milionów adresów sieci. Ostatni oktet przeznaczony jest do określenia adresu hosta w sieci. Maksymalnie może być ich 254 (bez 0 oraz 255), dlatego ta przestrzeń adresowa została przeznaczona dla małych sieci.
Klasa DÂ
Pierwsze cztery bity adresu tej klasy wynoszą 1110, stąd dostępne jest 16 kombinacji (od 224 do 239) dla pierwszego oktetu. Ta przestrzeń adresowa została utworzona w celu umożliwienia rozsyłania grupowego przy użyciu adresów IP. Adres rozsyłania grupowego jest unikatowym adresem sieciowym, który kieruje pakiety o tym adresie docelowym do zdefiniowanej wcześniej grupy adresów IP. Dzięki temu pojedynczy komputer może przesyłać jeden strumień danych równocześnie do wielu odbiorców.
Klasa EÂ
Adresy tej klasy zostały zarezerwowane przez Internet Engineering Task Force (IETF) do potrzeb badawczych i nie są dostępne do publicznego użytku. Pierwsze cztery bity każdego adresu tej klasy mają zawsze wartość 1, dlatego istnieje tylko 15 możliwości (od 240 do 255) przypisania pierwszego bajta.
Uwaga! Należące do klasy A adresy sieciowe 127.0.0.1-127.255.255.254 są zarezerwowane na potrzeby testowania pętli zwrotnej. Urządzenia sieciowe korzystają z nich (zazwyczaj z 127.0.0.1), aby wysłać pakiet do samych siebie.
Adres IP
[edytuj]
Z Wikipedii
Adres IP – liczba nadawana interfejsowi sieciowemu, grupie interfejsów (broadcast, multicast), bądź całej sieci komputerowej opartej na protokole IP, służąca identyfikacji elementów warstwy trzeciej modelu OSI – w obrębie sieci oraz poza nią (tzw. adres publiczny).
Adres IP nie jest "numerem rejestracyjnym" komputera – nie identyfikuje jednoznacznie fizycznego urządzenia – może się dowolnie często zmieniać (np. przy każdym wejściu do sieci Internet) jak również kilka urządzeń może dzielić jeden publiczny adres IP. Ustalenie prawdziwego adresu IP użytkownika, do którego następowała transmisja w danym czasie jest możliwe dla systemu/sieci odpornej na przypadki tzw. IP spoofingu (por. man in the middle, zapora sieciowa, ettercap) – na podstawie historycznych zapisów systemowych.
W najpopularniejszej wersji czwartej (IPv4) jest zapisywany zwykle w podziale na oktety w systemie dziesiętnym (oddzielane kropkami) lub rzadziej szesnastkowym bądź dwójkowym (oddzielane dwukropkami bądź spacjami).
W przeciwieństwie do adresu sprzętowego (MAC; warstwa druga modelu OSI) adres IP nie musi identyfikować jednoznacznie urządzenia ani w czasie, ani fizycznie (szczególnie, jeśli nie należy on do zakresu publicznego – jest adresem podlegającym translacji, bądź jest przydzielany dynamicznie). Protokół komunikacyjny IP pracuje w trzeciej warstwie modelu (warstwie sieciowej) niezależnie od rodzaju nośnika warstwy pierwszej. Jest trasowalny (routowalny), a więc umożliwia trasowanie, które odbywa się właśnie w warstwie trzeciej. Aby zapewnić pomyślność komunikacji w tym protokole konieczne jest przyporządkowanie adresów IP interfejsom sieciowym urządzeń.
Z warstwą łącza danych, drugą warstwą rzeczonego modelu, komunikuje się zwykle za pomocą protokołów ARP i RARP. Pierwszy z nich informuje warstwę trzecią o adresie sprzętowym urządzenia, drugi umożliwia wskazanie adresu IP urządzenia przy znajomości adresu sprzętowego.
Protokół IP gwarantuje jedynie odnalezienie interfejsu lub grupy interfejsów sieciowych w pewnej sieci, jednak nie zapewnia poprawności transmisji danych. Współpracę z czwartą we wspomnianym modelu OSI warstwą transportową, która służy właśnie temu celowi, umożliwia m.in. protokół TCP w niej działający. Z tego powodu powstał stos protokołów TCP/IP będący kombinacją m.in. tych dwóch protokołów.
Adresy IP stosuje się nie tylko w Internecie, ale również w sieciach lokalnych korzystających z TCP/IP. W pierwszym przypadku przypisywany jest on przez dostawcę internetu, w drugim o poprawne jego przypisanie dba zwykle jej administrator.
W celu zapewnienia jednoznaczności rozpoznawania się poszczególnych uczestników komunikacji stosuje się system odwzorowania unikatowej nazwy symbolicznej do adresów IP (protokół DNS), dzięki czemu użytkownicy Internetu nie muszą ich pamiętać i aktualizować. Np. adresowi 208.80.152.2 odpowiada obecnie interfejs sieciowy urządzenia/urządzeń (por. redundancja) obsługujących serwis Wikipedii. Aby korzystać z encyklopedii: wystarczy zapamiętanie łatwiejszej nazwy wikipedia.org, która tłumaczona jest na adres IP serwera przez serwery DNS (warstwy: piąta, szósta i siódma modelu OSI nazywane odpowiednio: sesji, prezentacji i aplikacji).
Podstawowym założeniem modelu TCP/IP jest podział całego zagadnienia komunikacji sieciowej na szereg współpracujących ze sobą warstw (ang. layers). Każda z nich może być tworzona przez programistów zupełnie niezależnie, jeżeli narzucimy pewne protokoły według których wymieniają się one informacjami. Założenia modelu TCP/IP są pod względem organizacji warstw zbliżone do modelu OSI. Jednak ilość warstw jest mniejsza i bardziej odzwierciedla prawdziwą strukturę Internetu. Model TCP/IP składa się z czterech warstw.
Warstwa procesowa czy warstwa aplikacji (ang. process layer) to najwyższy poziom, w którym pracują użyteczne dla człowieka aplikacje takie jak, np. serwer WWW czy przeglądarka internetowa. Obejmuje ona zestaw gotowych protokołów, które aplikacje wykorzystują do przesyłania różnego typu informacji w sieci.
Warstwa transportowa (ang. host-to-host layer) zapewnia pewność przesyłania danych oraz kieruje właściwe informacje do odpowiednich aplikacji. Opiera się to na wykorzystaniu portów określonych dla każdego połączenia. W jednym komputerze może istnieć wiele aplikacji wymieniających dane z tym samym komputerem w sieci i nie nastąpi wymieszanie się przesyłanych przez nie danych. To właśnie ta warstwa nawiązuje i zrywa połączenia między komputerami oraz zapewnia pewność transmisji.
Warstwa sieciowa lub warstwa protokołu internetowego (ang. internet protocol layer) to sedno działania Internetu. W tej warstwie przetwarzane są datagramy posiadające adresy IP. Ustalana jest odpowiednia droga do docelowego komputera w sieci. Niektóre urządzenia sieciowe posiadają tę warstwę jako najwyższą. Są to routery, które zajmują się kierowaniem ruchu w Internecie, bo znają topologię sieci. Proces odnajdywania przez routery właściwej drogi określa się jako trasowanie.
Warstwa dostępu do sieci lub warstwa fizyczna (ang. network access layer) jest najniższą warstwą i to ona zajmuje się przekazywaniem danych przez fizyczne połączenia między urządzeniami sieciowymi. Najczęściej są to karty sieciowe lub modemy. Dodatkowo warstwa ta jest czasami wyposażona w protokoły do dynamicznego określania adresów IP.
W warstwie transportowej może istnieć wiele protokołów, które współegzystują w jednej sieci. Ich algorytmy powinny być optymalizowane, aby zapewnić:
niezawodny transfer danych
dużą przepustowość
mały czas reakcji.
Niezawodny transfer danych oznacza zapewnienie, że jeżeli tylko istnieje taka możliwość, każdy komunikat dotrze do odbiorcy. Duża przepustowość określa ilość informacji jaką można przesłać w zadanych czasie. Czas reakcji (ping) musi być jak najmniejszy, co jest niezbędne, aby ograniczyć opóźnienie w komunikacji. W praktyce nie da się pogodzić wszystkich trzech wymogów względem warstwy transportowej. Zwykle poprawa jednego z nich dokonuje się kosztem pozostałych. Aby rozwiązać ten problem w sieciach komputerowych zaprojektowano szereg protokołów warstw transportowych. Projektant tworzący aplikację musi w takiej sytuacji wybrać, który protokół najlepiej sprawdzi się w jego oprogramowaniu oraz sieci.
Niektóre zastosowania, takie jak poczta elektroniczna, przesyłanie wiadomości błyskawicznych, transfer plików, terminale sieciowe, pobieranie stron internetowych i transakcje finansowe wymagają niezawodnego przesyłania danych, czyli bez utraty danych. Utrata danych pliku lub danych transakcji finansowej może mieć przecież fatalne konsekwencje (w drugim przypadku dla banku lub klienta!). Zastosowania tolerujące utratę danych, wśród których najbardziej wyróżniają się media strumieniowe, mogą pozwolić sobie na przepadniecie określonej ilości danych. W przypadku zastosowań multimedialnych utrata danych może spowodować niewielkie zakłócenia podczas odtwarzania danych obrazu lub dźwięku, które nie wpłyną znacząco na jakość. Wpływ utraty danych na jakość pracy aplikacji i rzeczywista liczba pakietów danych, które mogą przepaść, w dużym stopniu zależy od aplikacji i zastosowanego schematu kodowania.
Aby efektywnie działać, niektóre aplikacje muszą być w stanie transmitować dane z określoną szybkością. Jeśli na przykład aplikacja telefonii internetowej koduje głos z szybkością 32 kb/s, z taką samą szybkością musi mieć możliwość przesyłania danych w sieci i dostarczania ich do aplikacji odbiorczej. Jeśli wymagana przepustowość nie jest dostępna, aplikacja zależna od przepustowości będzie zmuszona do kodowania z inną szybkością (i uzyskania przepustowości wystarczającej do kontynuowania procesu) lub powinna przerwać operację, ponieważ np. połowa żądanej przepustowości to zdecydowanie za mało dla tego typu aplikacji. Wiele aktualnie istniejących aplikacji multimedialnych jest zależnych od przepustowości. Jednak aplikacje multimedialne, które powstaną w przyszłości, w celu kodowania z szybkością dostosowaną do aktualnie dostępnej przepustowości mogą stosować adaptacyjne metody kodowania. Aplikacje zależne od przepustowości wymagają określonej przepustowości, natomiast aplikacje elastyczne są w stanie skorzystać z takiej przepustowości, jaka w danej chwili będzie dostępna. Przykładami takich aplikacji są programy pocztowe, służące do przesyłania plików i stron internetowych. Oczywiście im większa przepustowość, tym lepiej.
Ostatnim z wymagań dotyczących aplikacji jest czas. Aby efektywnie funkcjonować, interaktywne zastosowania czasu rzeczywistego, takie jak telefonia internetowa, wirtualne środowiska, telekonferencje i gry dla wielu osób (MMO), żądają dostarczania danych w czasie o niewielkim zakresie tolerancji. Przykładowo, wiele z tych zastosowań wymaga, aby opóźnienia międzywęzłowe miały wartość kilkuset milisekund lub mniejszą. Duże opóźnienia w przypadku telefonii internetowej powodują zwykle nienaturalne przerwy w rozmowie. Znaczne opóźnienie między wykonaną czynnością i uzyskaną odpowiedzią (na przykład od innego gracza znajdującego się na drugim końcu połączenia) występujące w przypadku gier dla wielu osób lub w interaktywnym środowisku wirtualnym sprawiają, że aplikacja wydaje się działać nie do końca w czasie rzeczywistym.
Protokoły te mają następujące cechy charakterystyczne:
dobrą odtwarzalność po awarii
możliwość dodawania nowych sieci bez przerywania pracy istniejących
wysoki współczynnik korekcji błędów
niezależność od platformy
mały stopień obciążenia danych własnymi strukturami
dużą wydajność
Protokoły TCP i IP łącznie zarządzają przepływem większości danych przez sieć. IP odpowiada za przesyłanie dowolnych danych z punktu do punktu i zawiera w sobie na przykład TCP lub UDP. Zadaniem TCP jest:
uzgadnianie tożsamości (handshake)
zarządzanie pakietami (mogą docierać do adresata w innej kolejności, niż były wysłane)
sterowanie przepływem
wykrywanie i obsługę błędów
Para TCP+IP jest stosowana do tzw. transmisji połączeniowej, gdzie zagwarantowany jest przepływ danych dowolnej długości w obydwie strony, lub zwrotne poinformowanie nadawcy o nieusuwalnym błędzie.
Para protokołów UDP+IP jest najczęściej używanym standardem do tzw. transmisji bezpołączeniowej, czyli przesyłania w jedną stronę, bez potwierdzania odbioru, niewielkich paczek danych zwanych datagramami.
Każdy protokół sieciowy można przyporządkować do określonej warstwy modelu TCP/IP. Pewną szczególną cechą rodziny protokołów TCP/IP używanej w internecie jest podział protokołów z warstwy aplikacyjnej i połączeniowej. Niektóre protokoły z warstwy aplikacji wykorzystują tylko pewne protokoły z warstwy transportowej.
Protokoły DNS, NTP wykorzystują tylko protokół UDP z warstwy transportowej. Protokoły FTP, SMTP, POP3, SSH, IRC posługują się tylko TCP. Natomiast SMB używa obu protokołów.
Protokół SSL ma szczególną rolę. Może zostać umieszczony pomiędzy każdym połączeniowym protokołem warstwy aplikacji, a TCP. Dzięki jego wykorzystaniu dane przesyłane przez aplikacje mogą zostać zaszyfrowane.
Niektóre protokoły z warstwy aplikacji, jak np. SMB nie działają zwykle w Internecie. Są wykorzystane w sieciach lokalnych do udostępniania usług, jak np. zdalne drukarki czy dyski.
W systemie Linux oraz innych klonach Uniksa dokładną listę protokołów transportowych można znaleźć w pliku:
/etc/protocols
a listę protokołów z warstwy aplikacji w pliku
/etc/services
W systemach z rodziny Windows NT, odpowiednie pliki znajdujÄ… siÄ™ w katalogu
%ROOTDIR%\system32\drivers\etc
gdzie %ROOTDIR to katalog z systemem, domyślnie:
c:\windows\system32\drivers\etc
Podstawowym założeniem modelu TCP/IP jest podział całego zagadnienia komunikacji sieciowej na szereg współpracujących ze sobą warstw (ang. layers). Każda z nich może być tworzona przez programistów zupełnie niezależnie, jeżeli narzucimy pewne protokoły według których wymieniają się one informacjami. Założenia modelu TCP/IP są pod względem organizacji warstw zbliżone do modelu OSI. Jednak ilość warstw jest mniejsza i bardziej odzwierciedla prawdziwą strukturę Internetu. Model TCP/IP składa się z czterech warstw.
Warstwa procesowa czy warstwa aplikacji (ang. process layer) to najwyższy poziom, w którym pracują użyteczne dla człowieka aplikacje takie jak, np. serwer WWW czy przeglądarka internetowa. Obejmuje ona zestaw gotowych protokołów, które aplikacje wykorzystują do przesyłania różnego typu informacji w sieci.
Warstwa transportowa (ang. host-to-host layer) zapewnia pewność przesyłania danych oraz kieruje właściwe informacje do odpowiednich aplikacji. Opiera się to na wykorzystaniu portów określonych dla każdego połączenia. W jednym komputerze może istnieć wiele aplikacji wymieniających dane z tym samym komputerem w sieci i nie nastąpi wymieszanie się przesyłanych przez nie danych. To właśnie ta warstwa nawiązuje i zrywa połączenia między komputerami oraz zapewnia pewność transmisji.
Warstwa sieciowa lub warstwa protokołu internetowego (ang. internet protocol layer) to sedno działania Internetu. W tej warstwie przetwarzane są datagramy posiadające adresy IP. Ustalana jest odpowiednia droga do docelowego komputera w sieci. Niektóre urządzenia sieciowe posiadają tę warstwę jako najwyższą. Są to routery, które zajmują się kierowaniem ruchu w Internecie, bo znają topologię sieci. Proces odnajdywania przez routery właściwej drogi określa się jako trasowanie.
Warstwa dostępu do sieci lub warstwa fizyczna (ang. network access layer) jest najniższą warstwą i to ona zajmuje się przekazywaniem danych przez fizyczne połączenia między urządzeniami sieciowymi. Najczęściej są to karty sieciowe lub modemy. Dodatkowo warstwa ta jest czasami wyposażona w protokoły do dynamicznego określania adresów IP.
W warstwie transportowej może istnieć wiele protokołów, które współegzystują w jednej sieci. Ich algorytmy powinny być optymalizowane, aby zapewnić:
niezawodny transfer danych
dużą przepustowość
mały czas reakcji.
Niezawodny transfer danych oznacza zapewnienie, że jeżeli tylko istnieje taka możliwość, każdy komunikat dotrze do odbiorcy. Duża przepustowość określa ilość informacji jaką można przesłać w zadanych czasie. Czas reakcji (ping) musi być jak najmniejszy, co jest niezbędne, aby ograniczyć opóźnienie w komunikacji. W praktyce nie da się pogodzić wszystkich trzech wymogów względem warstwy transportowej. Zwykle poprawa jednego z nich dokonuje się kosztem pozostałych. Aby rozwiązać ten problem w sieciach komputerowych zaprojektowano szereg protokołów warstw transportowych. Projektant tworzący aplikację musi w takiej sytuacji wybrać, który protokół najlepiej sprawdzi się w jego oprogramowaniu oraz sieci.
Niektóre zastosowania, takie jak poczta elektroniczna, przesyłanie wiadomości błyskawicznych, transfer plików, terminale sieciowe, pobieranie stron internetowych i transakcje finansowe wymagają niezawodnego przesyłania danych, czyli bez utraty danych. Utrata danych pliku lub danych transakcji finansowej może mieć przecież fatalne konsekwencje (w drugim przypadku dla banku lub klienta!). Zastosowania tolerujące utratę danych, wśród których najbardziej wyróżniają się media strumieniowe, mogą pozwolić sobie na przepadniecie określonej ilości danych. W przypadku zastosowań multimedialnych utrata danych może spowodować niewielkie zakłócenia podczas odtwarzania danych obrazu lub dźwięku, które nie wpłyną znacząco na jakość. Wpływ utraty danych na jakość pracy aplikacji i rzeczywista liczba pakietów danych, które mogą przepaść, w dużym stopniu zależy od aplikacji i zastosowanego schematu kodowania.
Aby efektywnie działać, niektóre aplikacje muszą być w stanie transmitować dane z określoną szybkością. Jeśli na przykład aplikacja telefonii internetowej koduje głos z szybkością 32 kb/s, z taką samą szybkością musi mieć możliwość przesyłania danych w sieci i dostarczania ich do aplikacji odbiorczej. Jeśli wymagana przepustowość nie jest dostępna, aplikacja zależna od przepustowości będzie zmuszona do kodowania z inną szybkością (i uzyskania przepustowości wystarczającej do kontynuowania procesu) lub powinna przerwać operację, ponieważ np. połowa żądanej przepustowości to zdecydowanie za mało dla tego typu aplikacji. Wiele aktualnie istniejących aplikacji multimedialnych jest zależnych od przepustowości. Jednak aplikacje multimedialne, które powstaną w przyszłości, w celu kodowania z szybkością dostosowaną do aktualnie dostępnej przepustowości mogą stosować adaptacyjne metody kodowania. Aplikacje zależne od przepustowości wymagają określonej przepustowości, natomiast aplikacje elastyczne są w stanie skorzystać z takiej przepustowości, jaka w danej chwili będzie dostępna. Przykładami takich aplikacji są programy pocztowe, służące do przesyłania plików i stron internetowych. Oczywiście im większa przepustowość, tym lepiej.
Ostatnim z wymagań dotyczących aplikacji jest czas. Aby efektywnie funkcjonować, interaktywne zastosowania czasu rzeczywistego, takie jak telefonia internetowa, wirtualne środowiska, telekonferencje i gry dla wielu osób (MMO), żądają dostarczania danych w czasie o niewielkim zakresie tolerancji. Przykładowo, wiele z tych zastosowań wymaga, aby opóźnienia międzywęzłowe miały wartość kilkuset milisekund lub mniejszą. Duże opóźnienia w przypadku telefonii internetowej powodują zwykle nienaturalne przerwy w rozmowie. Znaczne opóźnienie między wykonaną czynnością i uzyskaną odpowiedzią (na przykład od innego gracza znajdującego się na drugim końcu połączenia) występujące w przypadku gier dla wielu osób lub w interaktywnym środowisku wirtualnym sprawiają, że aplikacja wydaje się działać nie do końca w czasie rzeczywistym.
Protokoły te mają następujące cechy charakterystyczne:
dobrą odtwarzalność po awarii
możliwość dodawania nowych sieci bez przerywania pracy istniejących
wysoki współczynnik korekcji błędów
niezależność od platformy
mały stopień obciążenia danych własnymi strukturami
dużą wydajność
Protokoły TCP i IP łącznie zarządzają przepływem większości danych przez sieć. IP odpowiada za przesyłanie dowolnych danych z punktu do punktu i zawiera w sobie na przykład TCP lub UDP. Zadaniem TCP jest:
uzgadnianie tożsamości (handshake)
zarządzanie pakietami (mogą docierać do adresata w innej kolejności, niż były wysłane)
sterowanie przepływem
wykrywanie i obsługę błędów
Para TCP+IP jest stosowana do tzw. transmisji połączeniowej, gdzie zagwarantowany jest przepływ danych dowolnej długości w obydwie strony, lub zwrotne poinformowanie nadawcy o nieusuwalnym błędzie.
Para protokołów UDP+IP jest najczęściej używanym standardem do tzw. transmisji bezpołączeniowej, czyli przesyłania w jedną stronę, bez potwierdzania odbioru, niewielkich paczek danych zwanych datagramami.
Każdy protokół sieciowy można przyporządkować do określonej warstwy modelu TCP/IP. Pewną szczególną cechą rodziny protokołów TCP/IP używanej w internecie jest podział protokołów z warstwy aplikacyjnej i połączeniowej. Niektóre protokoły z warstwy aplikacji wykorzystują tylko pewne protokoły z warstwy transportowej.
Protokoły DNS, NTP wykorzystują tylko protokół UDP z warstwy transportowej. Protokoły FTP, SMTP, POP3, SSH, IRC posługują się tylko TCP. Natomiast SMB używa obu protokołów.
Protokół SSL ma szczególną rolę. Może zostać umieszczony pomiędzy każdym połączeniowym protokołem warstwy aplikacji, a TCP. Dzięki jego wykorzystaniu dane przesyłane przez aplikacje mogą zostać zaszyfrowane.
Niektóre protokoły z warstwy aplikacji, jak np. SMB nie działają zwykle w Internecie. Są wykorzystane w sieciach lokalnych do udostępniania usług, jak np. zdalne drukarki czy dyski.
W systemie Linux oraz innych klonach Uniksa dokładną listę protokołów transportowych można znaleźć w pliku:
/etc/protocols
a listę protokołów z warstwy aplikacji w pliku
/etc/services
W systemach z rodziny Windows NT, odpowiednie pliki znajdujÄ… siÄ™ w katalogu
%ROOTDIR%\system32\drivers\etc
gdzie %ROOTDIR to katalog z systemem, domyślnie:
c:\windows\system32\drivers\etc