Model protokołu TCP/IP – Protokół tworzący Internet - TCP/IP - również możemy opisać za pomocą siedmio-
warstwowego modelu ISO/OSI. Lepiej jednak oddaje funkcje i właściwości protokołu TCP/IP uproszczony model
cztero-warstwowy. W modelu tym najważniejsze są warstwy sieciowa i transportowa, pozostałe są połączone i tworzą
dwie warstwy zwane warstwą dostępu do sieci oraz warstwą aplikacji. Funkcje tych warstw pokrywają się z
zadaniami odpowiadających im warstw w modelu ISO/OSI.
ISO/OSI
TCP/IP
Niektóre protokoły internetu
Warstwa aplikacji
Warstwa aplikacji
Telnet
FTP
HTTP
SMTP
POP
DNS
NFS
SNMP
RIP
Warstwa prezentacji
Warstwa sesji
Warstwa transportowa Warstwa transportowa
TCP
UDP
Warstwa sieciowa
Warstwa internetu
IP
ICMP
Warstwa łącza danych Warstwa dostępu do sieci
ARP
RARP
PPP
SLIP
inne…
Warstwa sprzętowa
CSMA/CD
Ethernet
Podobnie jak w modelu OSI kolejne warstwy dołączają (bądź usuwają, w zależności w którą stronę
przesuwają się dane na stosie protokołów) własne nagłówki. Taki proces nazywa się
enkapsulacją danych.
Jednak
model czterowarstwowy, poprzez zintegrowanie funkcjonalne niektórych warstw, o wiele lepiej obrazuje ten proces
dla protokołu TCP/IP.
Każda warstwa ma swoją terminologię określającą dane aktualnie przez nią obrabiane. Ponieważ protokół
TCP/IP składa się z dwóch głównych protokołów warstwy transportowej TCP i UDP, więc również w nazewnictwie
wprowadzony został podział.
Warstwa
TCP
UDP
Aplikacji
Strumień Wiadomość
Transportowa
Segment
Pakiet
Internetu
Datagram
Dostępu do sieci
Ramka
HTTP
Protokół przesyłania dokumentów hipertekstowych, protokół sieci . Za pomocą protokołu http
przesyła się żądania udostępnienia dokumentów WWW i informacje o kliknięciu odnośnika oraz informacje
z formularzy. Zadaniem stron WWW jest publikowanie informacji – natomiast protokół HTTP właśnie to
umożliwia. Protokół HTTP jest użyteczny, ponieważ udostępnia znormalizowany sposób komunikowania
się komputerów ze sobą. Określa on formę żądań klienta (tj. np.przeglądarki www) dotyczących danych
oraz formę odpowiedzi serwera na te żądania. Jest zaliczany do
protokołów bezstanowych (ang. stateless)
z
racji tego, że nie zachowuje żadnych informacji o poprzednich transakcjach z klientem (po zakończeniu
transakcji wszystko "przepada"). Pozwala to znacznie zmniejszyć obciążenie serwera, jednak jest kłopotliwe
w sytuacji, gdy np. trzeba zapamiętać konkretny stan dla użytkownika, który wcześniej łączył się już z
serwerem. Najczęstszym rozwiązaniem tego problemu jest wprowadzenie mechanizmu ciasteczek. Inne
podejścia to m.in. sesje po stronie serwera, ukryte parametry (gdy aktualna strona zawiera formularz) oraz
parametry umieszczone w URL-u (jak np. /index.php?userid=3). HTTP standardowo korzysta z portu nr 80
(TCP). Obecną definicję HTTP stanowi RFC 2616.
Jednostką logiczną HTTP jest wiadomość
składająca się
z zapytania od klienta do serwera i odpowiedzi serwera. Znajduje się w warstwie aplikacji modelu TCP/IP
(OSI także).
Protokół HTTP zapewnia zestaw metod sygnalizujących cel danego żądania. Wykorzystuje on
ujednolicony identyfikator zasobów (URI) albo jako ujednolicony lokalizator zasobów (URL), albo jako
ujednoliconą nazwę zasobów (URN), aby wskazać zasób, wobec którego ma zostać zastosowana metoda.
Komunikaty są przekazywane w formacie podobnym do tego, który wykorzystuje poczta internetowa,
zdefiniowanym przez standard uniwersalnych rozszerzeń internetowej poczty elektronicznej (MIME) —
odwołaj się do dokumentów RFC od 2045 do 2049.
Wspólne metody HTTP są następujące:
OPTIONS — pozwala klientowi ustalić opcje i/lub wymagania związane z danym zasobem, albo
możliwości danego serwera, nie implikując działań zasobu i nie inicjując pobierania zasobu.
GET — pobiera informacje (w formie jednostki) zidentyfikowane przez URI, do którego zostało zgłoszone
żądanie. Jeżeli URI zidentyfikuje proces wytwarzający dane, to wytworzone dane zostaną zwrócone jako
jednostka. Warunkowy komunikat GET zawiera pole nagłówka If-Modified-Since, If-Unmodified-Since, If-
Match, If-None-Match, lub If-Range. Pozwala to na odświeżanie buforowanych jednostek bez potrzeby
wielokrotnego przesyłu, czy żądania danych, które są już w posiadaniu klienta. GET częściowy żąda, aby
przesłana została tylko część jednostki, określona przez pole nagłówka Range.
HEAD — identyczny z GET, z tym że serwer nie zwraca w odpowiedzi treści komunikatu. Metoda ta
uzyskuje informacje dotyczące jednostki nie przesyłając samej treści jednostki i jest wykorzystywana do
testowania ważności, dostępności oraz niedawnych modyfikacji łączy hipertekstowych.
POST — żąda, aby serwery przyjmowały jednostkę załączoną w żądaniu, jako nowego podwładnego zasobu
zidentyfikowanego przez URI, do którego zostało zgłoszone żądanie (podobnie, jak mówi się, że plik
umieszczony w katalogu jest nowym podwładnym tego katalogu). POST jest wykorzystywany do
przypisywania zasobów, do wysyłania komunikatów (na przykład do elektronicznego biuletynu
informacyjnego), do przedkładania danych formularzy oraz do rozszerzania bazy danych poprzez operację
dołączania. Funkcja pełniona przez metodę POST określana jest przez serwer i zazwyczaj jest uzależniona
od URI.
PUT — żąda, aby jednostka załączona w żądaniu została zapamiętana pod URI, do którego zostało
zgłoszone żądanie. Jeżeli dany zasób wspomniany w URI już istnieje, to przesyłaną jednostkę uznaje się za
wersję zmodyfikowaną. Jeżeli URI nie wskazuje na istniejący zasób, a żądający użytkownik może
zdefiniować URI jako nowy zasób, to zasób jest tworzony na serwerze.
DELETE — żąda, aby serwer usunął zasób zidentyfikowany przez URI.
TRACE — wywołuje zdalną pętlę zwrotną komunikatu żądania. Ostateczny odbiorca żądania odbija
otrzymany komunikat z powrotem do klienta. TRACE pozwala klientowi zobaczyć co jest odbierane na
drugim końcu łańcucha żądania. Informacja ta może być wykorzystywana do testowania, lub znajdywania
uszkodzeń.
CONNECT — nazwa metody zarezerwowana do wykorzystywania wraz z proxy, który może dynamicznie
przełączyć się na pełnienie funkcji tunelu, przy użyciu, na przykład, tunelowania z wykorzystaniem warstwy
zabezpieczeń łączy (SSL). Proxy to program pośredniczący, pełniący zarówno funkcję serwera, jak i klienta,
w celu zgłaszania żądań w imieniu innych klientów.
Kody stanu protokołu HTTP
Pierwsza linia odpowiedzi HTTP zwana jest linią statusu (status line) i zawiera numeryczny kod (np.
„404”) i tekstowy opis (np. „not found”). Kody stanu HTTP są wykorzystywane przez metody podczas
normalnej pracy, albo wysyłane do użytkownika, jeżeli wystąpi błąd. Jest pięć klasyfikacji kodów stanu:
Informacyjny (1xx) — sygnalizuje prowizoryczną (zazwyczaj pośrednią) odpowiedź. Te kody wskazują, że
dana metoda przebiega normalnie i miało miejsce oczekiwane zdarzenie. Jeżeli serwer protokołu HTTP 1.1
wykryje klienta protokołu HTTP 1.0, to nie będzie wysyłał komunikatów informacyjnych, ponieważ nie są
one zdefiniowane dla HTTP 1.0.
Pomyślny (2xx) — sygnalizuje, że żądanie klienta zostało pomyślnie otrzymane, zrozumiane i przyjęte.
Readresowanie (3xx) — sygnalizuje, że agent użytkownika musi podjąć dalsze działania, aby spełnić
żądanie. Działania te mogą być przeprowadzane automatycznie przez agenta użytkownika (jeżeli
wykorzystywaną metodą jest GET, lub HEAD) albo mogą wymagać interwencji użytkownika.
Błąd klienta(4xx) — sygnalizuje, że występuje, lub wydaje się, że występuje, błąd klienta. Za wyjątkiem
przypadku odpowiadania na żądanie HEAD, komunikat zawiera wyjaśnienie błędu i informuje
użytkownika, czy jest on tymczasowy, czy stały.
Błąd serwera (5xx) — sygnalizuje, że serwer zdaje sobie sprawę, iż wygenerował błąd, albo że nie jest w
stanie wykonać żądania. Za wyjątkiem przypadku odpowiadania na żądanie HEAD, komunikat zawiera
wyjaśnienie błędu i informuje użytkownika, czy jest on tymczasowy, czy stały.
Security
Some methods (for example, HEAD, GET, OPTIONS and TRACE) are defined as safe, which
means they are intended only for information retrieval and should not change the state of the server. By
contrast, methods such as POST, PUT and DELETE are intended for actions that may cause side effects
either on the server, or external side effects such as financial transactions or transmission of email.
Methods PUT and DELETE are defined to be idempotent, meaning that multiple identical requests
should have the same effect as a single request (Note that idempotence refers to the state of the system after
the request has completed, so while the action the server takes (e.g. deleting a record) or the response code it
returns may be different on subsequent requests, the system state will be the same every time). Methods
GET, HEAD, OPTIONS and TRACE, being prescribed as safe, should also be idempotent, as HTTP is
a stateless protocol.
In contrast, the POST method is not necessarily idempotent, and therefore sending an identical POST
request multiple times may further affect state or cause further side effects (such as financial transactions).
DNS
Domain Name System (DNS, ang. system nazw domenowych) – system serwerów, protokół
komunikacyjny oraz usługa obsługująca rozproszoną bazę danych adresów sieciowych. Pozwala na zamianę
adresów znanych użytkownikom Internetu na adresy zrozumiałe dla urządzeń tworzących sieć
komputerową. Dzięki DNS nazwa mnemoniczna, np. pl.wikipedia.org jest tłumaczona na odpowiadający
jej adres IP, czyli 91.198.174.232. DNS to złożony system komputerowy oraz prawny. Zapewnia z jednej
strony rejestrację nazw domen internetowych i ich powiązanie z numerami IP. Z drugiej strony realizuje
bieżącą obsługę komputerów odnajdujących adresy IP odpowiadające poszczególnym nazwom. Jest
nieodzowny do działania prawie wszystkich usług sieci Internet.
Jednostką logiczną DNS jest zapytanie
.
Znajduje się w warstwie aplikacji modelu TCP/IP (OSI także).
Rozproszona baza danych DNS jest indeksowana nazwami domen, tworzącymi drzewiastą
strukturę hierarchiczną. Węzły drzewa DNS posiadają etykiety tekstowe o długości od 1 do 63 znaków:
pusta etykieta o zerowej długości zarezerwowana jest dla węzła głównego. Etykiety węzłów oddzielone
kropkami czytane w kierunku od węzła do korzenia drzewa tworzą pełną nazwę domenową. Nazwy domen
mogą zawierać litery, cyfry lub znak '-'.
Rodzaje zapytań DNS:
rekurencyjne - zmusza serwer do znalezienia wymaganej informacji lub zwrócenia wiadomości o błędzie.
Ogólną zasadą jest, że zapytania od resolwera (program, który potrafi wysyłać zapytania do serwerów DNS)
do serwera są typu rekurencyjnego, czyli resolwer oczekuje podania przez serwer adresu IP poszukiwanego
hosta. Wykonywanie zapytań rekurencyjnych pozwala wszystkim uczestniczącym serwerom zapamiętać
odwzorowanie (ang. DNS caching), co podnosi efektywność systemu
iteracyjne - wymaga od serwera jedynie podania najlepszej dostępnej mu w danej chwili odpowiedzi, przy
czym nie musi on łączyć się jeszcze z innymi serwerami. Zapytania wysyłane pomiędzy serwerami są
iteracyjne, przykładowo wiarygodny serwer domeny org nie musi znać adresu IP
komputera www.pl.wikipedia.org, podaje więc najlepszą znaną mu w tej chwili odpowiedź, czyli adresy
serwerów autorytatywnych dla domeny wikipedia.org
Rodzaje odpowiedzi:
autorytatywne – dotyczące domeny w strefie, nad którą dany serwer ma zarząd, pochodzą one bezpośrednio
z bazy danych serwera; jest to pozytywna odpowiedź zwracana do klienta, która w komunikacie DNS
zawiera ustawiony bit uwierzytelniania (AA – Authoritative Answer) wskazujący, że odpowiedź została
uzyskana z serwera dokonującego bezpośredniego uwierzytelnienia poszukiwanej nazwy
nieautorytatywne – dane które zwraca serwer pochodzą spoza zarządzanej przez niego strefy; odpowiedzi
nieautorytatywne są buforowane przez serwer przez czas TTL, wyspecyfikowany w odpowiedzi, później są
usuwane.
Zapytania i odpowiedzi DNS są najczęściej transportowane w pakietach UDP. Każdy komunikat
musi się zawrzeć w jednym pakiecie UDP (standardowo 512 oktetów, ale wielkość tę można zmieniać
pamiętając również o ustawieniu takiej samej wielkości w MTU – Maximum Transmission Unit). W innym
przypadku przesyłany jest protokołem TCP i poprzedzony dwubajtową wartością określającą długość
zapytania i długość odpowiedzi (bez wliczania tych dwóch bajtów).
Sekcja nagłówka występuje zawsze. W sekcji zapytania zawsze znajduje się jedno zapytanie
zawierające nazwę domenową, żądany typ danych i klasę (IN). Sekcja odpowiedzi zawiera rekordy zasobów
stanowiące odpowiedź na pytanie. Rekordów może być więcej niż jeden, np. w przypadku hosta
wielosieciowego, posiadającego kilka adresów IP. Jeśli odpowiedz odsyła klienta do innych serwerów DNS
są one wymienione w sekcji zwierzchności. W sekcji dodatkowej zawarte są informacje pomocnicze, np
adresy IP serwerów podanych w sekcji zwierzchności
ID [16 bitów] – (IDentifier) – identyfikator tworzony przez program wysyłający zapytanie; serwer
przepisuje ten identyfikator do swojej odpowiedzi, dzięki czemu możliwe jest jednoznaczne powiązanie
zapytania i odpowiedzi
QR [1 bit] – (Query or Response) – określa, czy komunikat jest zapytaniem (0) czy odpowiedzią (1)
OPCODE [4 bity] – określa rodzaj zapytania wysyłanego od klienta, jest przypisywany przez serwer do
odpowiedzi. Wartości:
0 – QUERY – standardowe zapytanie,
1 – IQUERY – zapytanie zwrotne,
2 – STATUS – pytanie o stan serwera,
3-15 – zarezerwowane do przyszłego użytku
AA [1 bit] – (Authoritative Answer) – oznacza, że odpowiedź jest autorytatywna.
TC [1 bit] – (TrunCation) – oznacza, że odpowiedź nie zmieściła się w jednym pakiecie UDP i została
obcięta.
RD [1 bit] – (Recursion Desired) – oznacza, że klient żąda rekurencji – pole to jest kopiowane do
odpowiedzi
RA [1 bit] – (Recursion Available) – bit oznaczający, że serwer obsługuje zapytania rekurencyjne
Z [3 bity] – zarezerwowane do przyszłego wykorzystania. Pole powinno być wyzerowane.
RCODE [4 bity] – (Response CODE) kod odpowiedzi. Przyjmuje wartości:
0 – brak błędu
1 – błąd formatu – serwer nie potrafił zinterpretować zapytania
2 – błąd serwera – wewnętrzny błąd serwera
3 – błąd nazwy – nazwa domenowa podana w zapytaniu nie istnieje
4 – nie zaimplementowano – serwer nie obsługuje typu otrzymanego zapytania
5 – odrzucono – serwer odmawia wykonania określonej operacji, np. transferu strefy
6-15 – zarezerwowane do przyszłego użytku
QDCOUNT [16 bitów] – określa liczbę wpisów w sekcji zapytania
ANCOUNT [16 bitów] – określa liczbę rekordów zasobów w sekcji odpowiedzi
NSCOUNT [16 bitów] – określa liczbę rekordów serwera w sekcji zwierzchności
ARCOUNT [16 bitów] – określa liczbę rekordów zasobów w sekcji dodatkowej
TCP
Protokół kontroli transmisji TCP (Transmission Control Protocol) jest protokołem niezawodnym,
połączeniowym działającym na strumieniach bajtów. Oznacza to, że sprawdza on czy dane zostały
dostarczone przez sieć poprawnie i w określonej kolejności. Dane dostarczane przez ten protokół mogąbyć
traktowane jak strumień.
Jednostką logiczną TCP jest segment
. Znajduje się w warstwie transportowej
modelu TCP/IP (OSI także).
Protokół TCP w celu zapewnienia niezawodności wykorzystuje mechanizm potwierdzenia z
retransmisją(Positive Acknowledgment with Re-transmission) PAR. Dane są przesyłane dopóty, dopóki
system wysyłający nie otrzyma potwierdzenia, że dane przeszły bezbłędnie. Każdy segment TCP zawiera
sumękontrolną wykorzystywaną przez odbiorcę do sprawdzenie poprawności przesłanych danych. Jeżeli
segment danych został odebrany bezbłędnie, wysyłane jest potwierdzenie odebrania danych. Jeżeli segment
jest uszkodzony, odbiorca nie wysyła potwierdzenia. Po pewnym czasie nadawca retransmituje segment, dla
którego nie doszło do niego potwierdzenie.
W protokole TCP do nawiązania połączenia pomiędzy dwoma hostami wykorzystywana jest
procedura nazwana
three-way handshake
. W sytuacji normalnej jest ona rozpoczynana, gdy host A chce
nawiązać połączenie z hostem B, procedura wygląda następująco:
host A wysyła do hosta B segment SYN wraz z informacją o dolnej wartości numerów sekwencyjnych
używanych do numerowania segmentów wysyłanych przez host A (np. 100) a następnie przechodzi w
stan SYN-SENT,
host B, po otrzymaniu segmentu SYN, przechodzi w stan SYN-RECEIVED i, jeżeli również chce
nawiązać połączenie, wysyła hostowi A segment SYN z informacją o dolnej wartości numerów
sekwencyjnych używanych do numerowania segmentów wysyłanych przez host B (np. 300) oraz
segment ACK z polem numeru sekwencji ustawionym na wartość o jeden większą niż wartość pola
sekwencji pierwszego segmentu SYN hosta A, czyli 101.
host A, po odebraniu segmentów SYN i ACK od hosta B przechodzi w stan ESTABLISHED i wysyła
do niego segment ACK potwierdzający odebranie segmentu SYN (numer sekwencji ustawiony na 301)
host B odbiera segment ACK i przechodzi w stan ESTABLISHED
host A może teraz rozpocząć przesyłanie danych
Jeśli host odbierający połączenie nie chce lub nie może odebrać połączenia, powinien odpowiedzieć
pakietem z ustawioną flagą RST (reset).
Ponieważ dane dostarczane przez TCP są traktowane jako strumień, musi on dbać o ich kolejność.
Nie jest istotne od jakiej liczby systemy zaczną numerację danych, może być ona dowolna i dla tego
wartości te są wymieniane podczas nawiązywania połączenia (przy ustawionych bitach SYN) w polach
numer kolejny. Liczby te określa się mianem początkowy numer sekwencji (Initial Sequence Numbe) ISN.
Bajtom danych nadawane sąnumery począwszy od ISN+1. Segmenty z ustawionym bitem potwierdzenia
ACK pełnią dwie funkcje: potwierdzają otrzymanie danych i sterująich przepływem. Standard TCP nie
wymaga potwierdzania każdego segmentu danych. Segment z ustawionym bitem ACK potwierdza
odebranie wszystkich danych od początku transmisji. Wartość w polu numer potwierdzenia jest równa ilości
prawidłowo odebranych danych w bajtach.
W celu weryfikacji wysyłki i odbioru TCP wykorzystuje sumy kontrolne i numery
sekwencyjne pakietów. Odbiorca potwierdza otrzymanie pakietów o określonych numerach sekwencyjnych
ustawiając flagę ACK. Brakujące pakiety są retransmitowane. Host odbierający pakiety TCP defragmentuje
je i porządkuje je według numerów sekwencyjnych tak, by przekazać wyższym warstwom modelu OSI
pełen złożony segment.
Prawidłowe zakończenie połączenia może być zainicjowane przez dowolną stronę. Polega ono na
wysłaniu pakietu z ustawioną flagą FIN (finished). Pakiet taki wymaga potwierdzenia flagą ACK.
Najczęściej po otrzymaniu pakietu z flagą FIN, druga strona również kończy komunikację wysyłając pakiet
z flagami FIN i ACK. Pakiet taki również wymaga potwierdzenia przez przesłanie ACK. Dopuszcza się
również awaryjne przerwanie połączenia poprzez przesłanie pakietu z flagą RST (reset). Pakiet taki nie
wymaga potwierdzenia.
Stany połączenia:
Połączenie TCP może znajdować się w jednym z następujących stanów:
LISTEN - Gotowość do przyjęcia połączenia na określonym porcie przez serwer.
SYN-SENT - Pierwsza faza nawiązywania połączenia przez klienta. Wysłano pakiet z flagą SYN.
Oczekiwanie na pakiet SYN+ACK.
SYN-RECEIVED - Otrzymano pakiet SYN, wysłano SYN+ACK. Trwa oczekiwanie na ACK. Połączenie
jest w połowie otwarte (ang. half-open).
ESTABLISHED - Połączenie zostało prawidłowo nawiązane. Prawdopodobnie trwa transmisja.
FIN-WAIT-1 - Wysłano pakiet FIN. Dane wciąż mogą być odbierane ale wysyłanie jest już niemożliwe.
FIN-WAIT-2 - Otrzymano potwierdzenie własnego pakietu FIN. Oczekuje na przesłanie FIN od serwera.
CLOSE-WAIT - Otrzymano pakiet FIN, wysłano ACK. Oczekiwanie na przesłanie własnego pakietu FIN
(gdy aplikacja skończy nadawanie).
CLOSING - Połączenie jest zamykane.
LAST-ACK - Otrzymano i wysłano FIN. Trwa oczekiwanie na ostatni pakiet ACK.
TIME-WAIT - Oczekiwanie w celu upewnienia się, że druga strona otrzymała potwierdzenie rozłączenia.
Zgodnie z RFC 793 połączenie może być w stanie TIME-WAIT najdłużej przez 4 minuty.
CLOSED - Połączenie jest zamknięte.
Port nadawcy – 16-bitowy numer identyfikujący port nadawcy.
Port odbiorcy – 16-bitowy numer identyfikujący port odbiorcy.
Numer sekwencyjny – 32-bitowy identyfikator określający miejsce pakietu danych w pliku przed
fragmentacją (dzięki niemu, można "poskładać" plik z poszczególnych pakietów).
If the SYN flag is set (1), then this is the initial sequence number. The sequence number of the actual
first data byte and the acknowledged number in the corresponding ACK are then this sequence number
plus 1.
If the SYN flag is clear (0), then this is the accumulated sequence number of the first data byte of this
segment for the current session.
Numer potwierdzenia – 32-bitowy numer będący potwierdzeniem otrzymania pakietu przez odbiorcę, co
pozwala na synchronizację nadawanie-potwierdzenie.
Długość nagłówka – 4-bitowa liczba, która oznacza liczbę 32-bitowych wierszy nagłówka, co jest
niezbędne przy określaniu miejsca rozpoczęcia danych. Dlatego też nagłówek może mieć tylko taką
długość, która jest wielokrotnością 32 bitów.
Zarezerwowane – 3-bitowy ciąg zer, zarezerwowany dla ewentualnego przyszłego użytku.
Flagi – 9-bitowa informacja/polecenie dotyczące bieżącego pakietu. Poszczególne flagi oznaczają:
NS – (ang. Nonce Sum) jednobitowa suma wartości flag ECN (ECN Echo, Congestion Window
Reduced, Nonce Sum) weryfikująca ich integralność
CWR – (ang. Congestion Window Reduced) flaga potwierdzająca odebranie powiadomienia przez
nadawcę, umożliwia odbiorcy zaprzestanie wysyłania echa.
ECE – (ang. ECN-Echo) flaga ustawiana przez odbiorcę w momencie otrzymania pakietu z ustawioną
flagą ECE
URG – informuje o istotności pola "Priorytet"
ACK – informuje o istotności pola "Numer potwierdzenia"
PSH – wymusza przesłanie pakietu
RST – resetuje połączenie (wymagane ponowne uzgodnienie sekwencji)
SYN – synchronizuje kolejne numery sekwencyjne. Only the first packet sent from each end should
have this flag set. Some other flags change meaning based on this flag, and some are only valid for when
it is set, and others when it is clear.
FIN – oznacza zakończenie przekazu danych
Szerokość okna – 16-bitowa informacja o tym, ile danych może aktualnie przyjąć odbiorca. Wartość 0
wskazuje na oczekiwanie na segment z innym numerem tego pola. Jest to mechanizm zabezpieczający
komputer nadawcy przed zbyt dużym napływem danych.
Suma kontrolna – 16-bitowa liczba, będąca wynikiem działań na bitach całego pakietu, pozwalająca na
sprawdzenie tego pakietu pod względem poprawności danych.
Wskaźnik priorytetu – jeżeli flaga URG jest włączona, informuje o ważności pakietu.
Opcje – (Variable 0–320 bits, divisible by 32) – The length of this field is determined by the data offset
field. Options have up to three fields: Option-Kind (1 byte), Option-Length (1 byte), Option-Data (variable).
The Option-Kind field indicates the type of option, and is the only field that is not optional. Depending on
what kind of option we are dealing with, the next two fields may be set: the Option-Length field indicates
the total length of the option, and the Option-Data field contains the value of the option, if applicable. For
example, an Option-Kind byte of 0x01 indicates that this is a No-Op option used only for padding, and does
not have an Option-Length or Option-Data byte following it. An Option-Kind byte of 0 is the End Of
Options option, and is also only one byte. An Option-Kind byte of 0x02 indicates that this is the Maximum
Segment Size option, and will be followed by a byte specifying the length of the MSS field (should be
0x04). Note that this length is the total length of the given options field, including Option-Kind and Option-
Length bytes. So while the MSS value is typically expressed in two bytes, the length of the field will be 4
bytes (+2 bytes of kind and length). In short, an MSS option field with a value of 0x05B4 will show up as
(0x02 0x04 0x05B4) in the TCP options section.
Padding – The TCP header padding is used to ensure that the TCP header ends and data begins on a 32 bit
boundary. The padding is composed of zeros
Connection termination
The connection termination phase uses a four-way handshake, with each side of the connection
terminating independently. When an endpoint wishes to stop its half of the connection, it transmits a FIN
packet, which the other end acknowledges with an ACK. Therefore, a typical tear-down requires a pair of
FIN and ACK segments from each TCP endpoint. After both FIN/ACK exchanges are concluded, the side
which sent the first FIN before receiving one waits for a timeout before finally closing the connection,
during which time the local port is unavailable for new connections; this prevents confusion due to delayed
packets being delivered during subsequent connections.
A connection can be "half-open", in which case one side has terminated its end, but the other has not.
The side that has terminated can no longer send any data into the connection, but the other side can. The
terminating side should continue reading the data until the other side terminates as well.
It is also possible to terminate the connection by a 3-way handshake, when host A sends a FIN and host B
replies with a FIN & ACK (merely combines 2 steps into one) and host A replies with an ACK.
[13]
This is
perhaps the most common method.
It is possible for both hosts to send FINs simultaneously then both just have to ACK. This could
possibly be considered a 2-way handshake since the FIN/ACK sequence is done in parallel for both
directions.
Some host TCP stacks may implement a half-duplex close sequence, as Linux or HP-UX do. If such
a host actively closes a connection but still has not read all the incoming data the stack already received
from the link, this host sends a RST instead of a FIN (Section 4.2.2.13 in RFC 1122). This allows a TCP
application to be sure the remote application has read all the data the former sent—waiting the FIN from the
remote side, when it actively closes the connection. However, the remote TCP stack cannot distinguish
between a Connection Aborting RST and this Data Loss RST. Both cause the remote stack to throw away all
the data it received, but that the application still didn't read.
UDP
Protokół pakietów użytkownika UDP (User Datagram Protocol) wykonuje usługę
bezpołączeniowego dostarczania datagramów, tzn. nie ustanawia w żaden sposób połączenia i nie sprawdza
gotowości odległego komputera do odebrania przesyłanych danych. W zamian za to zmniejszona została
ilość informacji kontrolnych, co zwiększa efektywność tego protokołu przy przesyłaniu danych. Daje on
aplikacjom bezpośredni dostęp do usług rozsyłania datagramów, przy wykorzystaniu minimalnego nakładu
środków.
Jednostką logiczną UDP jest pakiet
. Znajduje się w warstwie transportowej modelu TCP/IP (OSI
także).
Protokół UDP jest dobrym rozwiązaniem, jeżeli ilość przesyłanych danych jest niewielka. W tym
przypadku obciążenie wynikające z dodania informacji dotyczących kontroli poprawności połączenia
mogłoby stać się porównywalne z ilością przesyłanych informacji. Ponadto niektóre aplikacje same dbają o
kontrolę poprawności transmisji i wykorzystywanie do ich transmisji protokołu połączeniowego byłoby
dublowaniem tych samych funkcji.
UDP applications use datagram sockets to establish host-to-host communications. An application
binds a socket to its endpoint of data transmission, which is a combination of an IP address and a service
port. A port is a software structure that is identified by the port number, a 16 bit integer value, allowing for
port numbers between 0 and 65535. Port 0 is reserved, but is a permissible source port value if the sending
process does not expect messages in response. The Internet Assigned Numbers Authority has divided port
numbers into three ranges. Port numbers 0 through 1023 are used for common, well-known services.
On Unix-like operating systems, using one of these ports requires superuser operating permission. Port
numbers 1024 through 49151 are the registered portsused for IANA-registered services.
Ports 49152 through 65535 are dynamic ports that are not officially designated for any specific service, and
can be used for any purpose. They are also used as ephemeral ports, from which software running on the
host may randomly choose a port in order to define itself. In effect, they are used as temporary ports
primarily by clients when communicating with servers.
Budowa pakietu UDP
Port nadawcy – identyfikuje port, z którego została wysłana wiadomość, kiedy znaczący to wskazuje port
wysyłającego procesu i może zostać przyjęty jako port, do którego powinna zostać zwrócona wiadomość
zwrotna w przypadku braku innej informacji. Port nadawcy jest polem opcjonalnym. Gdy pole to nie jest
używane przyjmuje wartość zero.
Port odbiorcy – identyfikuje port odbiorcy i jest polem wymaganym.
Długość – 16-bitowe pola specyfikują długość w bajtach całego datagramu: nagłówek i dane. Minimalna
długość to 8 bajtów i jest to długość nagłówka. Wielkość pola ustala teoretyczny limit 65,527 bajtów, dla
danych przenoszonych przez pojedynczy datagram UDP.
Suma kontrolna – 16 bitowe pole, które jest użyte do sprawdzania poprawności nagłówka oraz danych. Pole
jest opcjonalne. Ponieważ IP nie wylicza sumy kontrolnej dla danych, suma kontrolna UDP jest jedyną
gwarancją, że dane nie zostały uszkodzone.
TCP
UDP
Transmission Control Protocol is a connection-
oriented protocol, which means that it requires
handshaking to set up end-to-end
communications. Once a connection is set up
user data may be sent bi-directionally over the
connection.
UDP is a simpler message-based connectionless
protocol. Connectionless protocols do not set up a
dedicated end-to-end connection. Communication is
achieved by transmitting information in one direction
from source to destination without verifying the
readiness or state of the receiver. However, one
primary benefit of UDP over TCP is the application to
voice over internet protocol (VoIP) where latency and
jitter are the primary concerns. It is assumed in VoIP
UDP that the end users provide any necessary real
time confirmation that the message has been received.
Reliable – TCP manages message
acknowledgment, retransmission and timeout.
Multiple attempts to deliver the message are
made. If it gets lost along the way, the server
will re-request the lost part. In TCP, there's
either no missing data, or, in case of multiple
timeouts, the connection is dropped.
Unreliable – When a message is sent, it cannot be
known if it will reach its destination; it could get lost
along the way. There is no concept of
acknowledgment, retransmission, or timeout.
Ordered – if two messages are sent over a
connection in sequence, the first message will
reach the receiving application first. When data
segments arrive in the wrong order, TCP buffers
delay the out-of-order data until all data can be
properly re-ordered and delivered to the
application.
Not ordered – If two messages are sent to the same
recipient, the order in which they arrive cannot be
predicted.
Heavyweight – TCP requires three packets to set
up a socket connection, before any user data can
be sent. TCP handles reliability and congestion
control.
Lightweight – There is no ordering of messages, no
tracking connections, etc. It is a small transport layer
designed on top of IP.
Streaming – Data is read as a byte stream, no
distinguishing indications are transmitted to
signal message (segment) boundaries.
Datagrams – Packets are sent individually and are
checked for integrity only if they arrive. Packets have
definite boundaries which are honored upon receipt,
meaning a read operation at the receiver socket will
yield an entire message as it was originally sent.
No congestion control – UDP itself does not avoid
congestion, and it's possible for high bandwidth
applications to trigger congestion collapse, unless they
implement congestion control measures at the
application level.
Transfer UDP po IPv4
Kiedy UDP działa na IPv4 metoda używana do obliczania sumy kontrolnej określana jest w RFC 768
Całe 16-bitowe słowa są sumowane razem używając kodu uzupełnień do jedności (pole suma kontrolna
ustawiane jest na zero). Końcowa wartość jest wstawiana do pola sumy kontrolnej. Różnica jest w danych
używanych do tworzenia sumy kontrolnej. Źródłowe i docelowe adresy znajdują się w nagłówku IPv4. Na
długość pola UDP składa się jego nagłówek oraz dane. Jeśli suma kontrolna zostanie wyliczona i wyniesie
0, to powinna zostać wysłana jako alternatywna reprezentacja zera w kodzie uzupełnień do jedności (same
1). Jeśli suma kontrolna nie jest użyta, to powinna zostać wysłana jako "zwykłe" zero (same 0), co wskazuje
odbiorcy, że nie jest wykorzystywana.
Protokół IP
Najważniejszą częścią warstwy Internetu jest protokół IP (Internet Protocol), jest to protokół
transportowy sieci Internet.
Zadania protokołu IP:
• definiowanie datagramu
• definiowanie schematu adresowania używanego w całym Internecie
• trasowanie (rutowanie) datagramów skierowanych do odległych hostów
• dokonywanie fragmentacji i ponownej defragmentacji datagramów
The Internet Protocol is responsible for addressing hosts and routing datagrams (packets) from a
source host to a destination host across one or more IP networks. For this purpose the Internet Protocol
defines the format of packets and an addressing system that has two functions: identifying hosts and
providing a logical location service.
Addressing entails the assignment of IP addresses and associated parameters to host interfaces, and
the division of the address space into networks and subnetworks, involving the designation of network or
routing prefixes. IP routing is performed by all hosts, but most importantly by routers, which transport
packets across network boundaries. Routers communicate with one another via specially designed routing
protocols, eitherinterior gateway protocols or exterior gateway protocols as needed for the topology of the
network.
IP routing is also common in local networks. For example, many Ethernet switches support IP
multicast operations. These switches use IP addresses andInternet Group Management Protocol for control
of the multicast routing but use MAC addresses for the actual routing.
Cechy protokołu IP
• IP jest protokołem bezpołączeniowym, tzn. nie ustanawia w żaden sposób połączenia i nie sprawdza
gotowości odległego komputera do odebrania przesyłanych danych.
• IP jest protokołem niepewnym, tzn. nie zapewnia korekcji i wykrywania błędów transmisji.
Obie te funkcje muszą być wykonane poprzez protokoły innych warstw.
Jednostką logiczną IP jest datagram
. Znajduje się w warstwie Internetu modelu TCP/IP (warstwa sieci w
OSI).Budowa datagramu:
Wersja – numer wersji protokołu IP (powyżej v4)
IHL – (Internet Header Length) jest długością nagłówka w słowach. Minimalna wartość to 5.
Typ usługi – opisuje jakość wymaganej usługi. (określa, jaki priorytet powinien mieć pakiet)
Długość całkowita – jest długością pakietu IP w bajtach (nagłówek + dane). Maksimum 65535 bajtów –
maksymalna wartość liczby 16-bitowej; minimum 20 bajtów, bo taka jest długość nagłówka.
Identyfikator – wartość identyfikacyjna przypisana nadawanemu pakietowi przed fragmentacją (jeżeli
miałaby miejsce). W przypadku fragmentacji określa ona przynależność fragmentu do datagramu.
Flagi – flagi sterujące:
[0] – zarezerwowany, musi być 0
[1] – DF (Don’t Fragment) 0 – można fragmentować, 1 – nie można fragmentować
[2] – MF (More Fragments) 0 – ostatnia fragmentacja lub jedyny fragment, 1 – więcej fragmentów
Przesunięcie fragmentacji – pole to wskazuje, do którego miejsca pakietu danych należy ten fragment.
Przesunięcie fragmentu jest mierzone w jednostkach 8 bajtów. Pierwszy fragment ma przesunięcie równe 0;
Czas życia – maksymalny czas przebywania pakietu w internecie (time-to-live) zanim zostanie
zignorowany. Rutery i komputery zmniejszają tę wartość o 1, gdy przesyłają pakiet), np. TTL = 16 pozwala
na przejście przez 16 ruterów, zanim zostanie usunięty.
Protokół – numer protokołu warstwy wyższej, do którego zostaną przekazane dane z tego pakietu
(TCP, UDP, ICMP, itd.)
Suma kontrolna – suma kontrolna nagłówka. Nagłowek ulega ciągłym zmianom. Suma jest obliczana i
sprawdzana za każdym razem gdy dany nagłówek jest przetwarzany
Adres źródła – adres IP źródła danych
Adres przeznaczenia – adres IP komputera docelowego
Opcje – opcje odatkowe
Uzupełnienie – jeśli pole opcji nie zajmuje pełnego słowa to zostaje uzupełnione do 32 bitów
Protokół IP jest na tyle uniwersalny, że zapewnia transport danych przez różnorodne strukturalnie sieci (np.
Token Ring, X.25). Każdy rodzaj sieci ma określony maksymalny rozmiar pakietu MTU (Maximum
Transmission Unit). W trakcie przekazywania danych, może się okazać, że MTU właściwy dla jednej z
sieci, jest zbyt duży dla następnej. Zachodzi wtedy zjawisko fragmentacji pakietu. W tym momencie
rolęzaczynają odgrywać pola identyfikator, przesunięcie fragmentacji oraz pole flagi w nagłówku
datagramu.
ICMP
protokół warstwy sieciowej OSI/TCP/IPwykorzystywany w diagnostyce sieci oraz trasowaniu. Pełni przede
wszystkim funkcję kontroli transmisji w sieci. Jest wykorzystywany w programach ping oraztraceroute.
Teoretycznie sieci powinny działać poprawnie przez cały czas, lecz tak nie jest. Gdy coś dzieje się nie tak w
warstwie internetowej, rolę narzędzia do rozwiązywania problemów odgrywa protokół komunikacyjny
zarządzania siecią Internet (ICMP — Internet Control Message Protocol). ICMP jest protokołem
serwisowym, który zgłasza błędy łączności między hostami.
Jednostką logiczną ICMP jest ramka
. Znajduje
się w warstwie Internetu modelu TCP/IP (warstwa sieci w OSI).
W warstwie internetowej datagramy dostarczane są w sposób bezpołączeniowy, na zasadzie „najlepiej, jak
się da”. Protokół ICMP jest zestawem komunikatów, przesyłanych w datagramach IP i zdolnych do
zgłaszania błędów w dostarczaniu innych datagramów IP.
Pełni on następujące funkcje:
1. Sterowanie przepływem danych - w przypadku, gdy komputer docelowy transmisji IP nie nadąża za
obróbką przychodzących datagramów IP, ICMP wysyła komunikat Source Quench, po którym nadawca
czasowo wstrzymuje transmisję.
2. Wykrywanie nieosiągalnych miejsc przeznaczenia - jeśli komputer docelowy nie odpowiada system,
który wykrył problem wysyła do nadawcy komunikat Destination Unreachable. Jeśli komunikat ten jest
wysyłany przez ruter, oznacza, że ruter nie może wysyłać pakietów do danego komputera. Może to
nastąpićw dwóch przypadkach:
- adres docelowy IP nie istnieje (np.: komputer docelowy jest wyłączony, ma odłączoną sieć, źle ustawioną
maskę), występuje wtedy typ komunikatu Host-unreachable, ruter nie może dostarczyć datagramu do tej
sieci, występuje wtedy typ Network-unreachable. W momencie, gdy komunikat ten jest wysyłany przez
host, może to oznaczać, że: dany komputer nie posiada wsparcia dla któregoś z protokołów warstw
wyższych, występuje wtedy typ Protocol-unreachable,
-port protokołu TCP jest nieosiągalny, występuje wtedy typ Port-unreachable.
3. Przekierowywanie ścieżek - jeśli komputer, do którego dotarł datagram IP uzna, że właściwsząbramką
będzie inny komputer z tej samej sieci, wysyła komunikat Redirect wskazujący na ten właśnie komputer
(musi znajdować się w tej samej sieci). Po otrzymaniu takiego komunikatu nadawca aktualizuje swoją
tablicę rutingu.
4. Sprawdzanie zdalnego hosta - odbywa się podczas wywołania komendy ping. Wysyłany jest komunikat
Echo Message, po otrzymaniu którego komputer docelowy musi odpowiedzieć. Jeśli tego nie zrobi,
uznawany jest za nieosiągalny.
5. Jeśli jakiś datagram, podczas przechodzenia przez ruter osiągnie zerowy limit "czasu życia" (Time-to-
Live) jest usuwany. Do komputera źródłowego danego datagramu wysyłany jest komunikat ICMP Time-
exceeded.
Protokół ten jest bardzo ważnym protokołem kontrolnym w Internecie. Obsługuje on większość sytuacji
awaryjnych i informuje o nich zainteresowane hosty. Bardzo często wykorzystywany jest przy
rozwiązywaniu wszelakich typów problemów przez używanie popularnych komend ping i traceroute (w
systemach Windows komenda tracert) zaimplementowanych w większości sieciowych systemów
operacyjnych.
4 8 12 16 20 24 28 32
Typ
Kod
Suma kontrolna
Dane (opcjonalne)
Nagłówek o długości 4 bajtów – pierwszy bajt określa typ pakietu, drugi kod operacji zawierający dalsze
informacje nt rodzaju komunikatu, trzeci i czwarty stanowią sumę kontrolną. Pole danych o długości
zależnej od typu pakietu i jego funkcji, w niektórych przypadkach może być ustalane z poziomu narzędzia.
Lista typów:
ARP
Protokół Określania Adresów - (Address Resolution Protokol) jest protokołem umożliwiającym
przekształcanie adresów protokołów sieciowych (w naszym przypadku adresów IP) na 48 bitowe adresy
Ethernetowe (MAC). Znajduje się w warstwie dostępu do sieci modelu TCP/IP (warstwa łącza danych w
OSI).
W momencie gdy protokół warstwy Internetu chce przekazać datagram do warstwy dostępu do sieci,
warstwa ta (a dokładniej warstwa łącza danych modelu ISO/OSI) musi określić adres docelowy, komputera
do którego ma przekazać datagram. Jeśli jeszcze go nie zna, rozsyła zapytanie rozgłoszeniowe (broadcast - z
docelowym adresem MAC równym FFFFFFFFFFFF) do wszystkich komputerów w danej sieci lokalnej.
Następnie odpowiedni komputer - cel - (jeśli istnieje w sieci lokalnej) rozpoznaje zawarty ramce
Ethernetowej adres protokołu sieciowego IP, odpowiada i podaje swój adres MAC. W tym momencie
protokół ARP na komputerze źródłowym uzupełnia swoją tablicędanych o adres docelowego komputera.
Następnym razem, w przypadku ponowienia transmisji do tej właśnie stacji, jużbezpośrednio zaadresuje
datagram i skieruje go do danej karty sieciowej (pamiętajmy, że adres Ethernetowy jest równocześnie
niepowtarzalnym adresem określonego urządzenia sieciowego - karty sieciowej).
System ten działa inaczej, gdy źródło i cel transmisji znajdują się w oddzielnych sieciach LAN
połączonych ruterem. Źródło rozsyła broadcastowe zapytanie o adres MAC karty sieciowej komputera
mającego odebrać transmisję. Ramki rozgłoszeniowe są odbierane przez wszystkie urządzenia w sieci LAN,
jednak żadne nie odpowiada na zapytanie. Źródło uznaje, że w sieci lokalnej nie ma urządzenia o takim
adresie MAC i przesyła dane do domyślnej bramki, czyli rutera.
W przypadku tzw. proxy-arp (np.: połaczenie modemowe) ruter, który jest urządzeniem pośredniczącym dla
stacji docelowej (np.: przy połączeniu modemowym stacji docelowej z ruterem), odbiera to zapytanie. Ruter
stwierdza że poszukiwany adres IP pasuje do jednego z wpisów w jego tablicy rutingu. Odpowiada na
zapytanie udając, że dany adres sieciowy jest jego własnym adresem. Urządzenie nadające
przyporządkowuje w swojej tablicy ARP adres sieciowy celu (np.: adres IP) do adresu MAC rutera i
transmituje datagramy do rutera. Ruter przekazuje dalej pakiety dla systemu docelowego, które
przychodząna jego adres MAC.
Protokół ARP może być wykorzystywany w celu uniknięcia nadania dwóch takich samych adresów
IP w jednej sieci lokalnej. W momencie inicjacji systemu komputer wysyła ramkę ARP z zapytaniem o
adres IP, który aktualnie został mu przydzielony. Jeśli inny komputer w sieci zgłosi się, że posiada już taki
adres, zablokowana zostaje transmisja IP i w sieci nie pojawia się drugi taki sam adres IP.
Budowa ARP:
Typ warstwy fizycznej (HTYPE)- typ protokołu warstwy fizycznej.
Możliwe wartości dla pola HTYPE po prawej
Typ protokołu wyższej warstwy (PTYPE) - dla protokołu IPv4 jest to
0x0800. Dopuszczalne wartości są zawarte w tabeli EtherType.
Długość adresu sprzętowego (HLEN) - długość adresu sprzętowego
(MAC) podana w bajtach.
Długość protokołu wyższej warstwy (PLEN) - długość adresu protokołu,
np. IP
Operacja (OPER) - kod operacji ARP. Poniżej cztery
najważniejsze wartości:
Adres sprzętowy źródła (SHA) - sprzętowy adres (MAC)
nadawcy
Adres protokołu wyższej warstwy źródła (SPA) - adres protokołu warstwy wyższej nadawcy, np. adres IP
Adres sprzętowy przeznaczenia (THA) - sprzętowy adres (MAC) odbiorcy
Adres protokołu wyższej warstwy przeznaczenia (TPA) - adres protokołu warstwy wyższej odbiorcy, np.
adres IP
RARP
Reverse Address Resolution Protokol to protokół komunikacyjny przekształcania
48-bitowych fizycznych adresów MAC na 32-bitowe adresy IP w komputerowych sieciach typu Ethernet.
Znajduje się w warstwie dostępu do sieci modelu TCP/IP (warstwa łącza danych w OSI).
Jego istota polega na tym, że pytający wysyła do sieci zapytanie:
Jaki jest adres IP dla danego adresu MAC aa:bb:cc:dd:ee:ff ?
Inny komputer odpowiada:
Komputer mający adres MAC aa:bb:cc:dd:ee:ff ma adres IP 1.2.3.4
Protokół ten stosowany jako najprostszy możliwy sposób statycznego przydzielania adresów IP. Zwykle
komputer wysyłający zapytanie nie ma jeszcze swojego adresu, a komputer odpowiadający udziala mu
informacji, którego adresu powinien zacząć używać. Obecnie częściej stosowane są protokoły oparte
na UDP, czyli BOOTP i jego następca DHCP. Dokumentacja :
http://tools.ietf.org/html/rfc903
Ethernet
Specyfikacja Ethernet umożliwia wykorzystanie topologii fizycznej gwiaździstej lub magistrali, ale nie
umożliwia zbudowania sieci w oparciu o topologię pierścieniową. Protokół stosowany w sieciach Ethernet
powstawał poprzez ewolucję kolejnych metod transmisji danych: ALOHA, CSMA(Carrier sense multiple
access), CSMA\CD(with collision detection).
Standard Ethernet, jest pewną odmianą ostatniej z metod i obejmuje następujące założenia (protokół 802.3):
1. Wszystkie stacje prowadzą ciągły nasłuch stanu łącza i sprawdzają czy łącze jest wolne, zajęte czy też
trwa strefa buforowa. Strefa buforowa jest odcinkiem czasu po ustaniu stanu zajętości łącza. Wynika ona z
maksymalnej odległości pomiędzy skrajnymi hostami i czasu propagacji sygnału w danym medium.
2. Komputery mogą nadawać jedynie, gdy łącze jest wolne. W przypadku zajętości kanału, muszą odczekać
do końca transmisji i dodatkowo przeczekać strefę buforową.
3. Jeżeli podczas nadawania stacja wykryje kolizję, nadaje jeszcze przez czas wymuszenia kolizji. Następnie
dobiera długość odcinka czasu Ti, przez który nie będzie podejmowała prób nadawania.
4. Dla Ti, liczba i jest numerem podejmowanej próby. Możliwe jest maksymalnie 16 prób, po których karta
sieciowa zwraca błąd. Czas Ti wyznaczany jest ze wzoru:
Ti = Ri*S
S - szerokość szczeliny czasowej,
Ri - liczba losowa z przedziału <0, 2n-1>, przy czym n = min( i,10 ).
Czas Ti wzrasta wraz z ilością podjętych prób nadawania. Czas ten musi być liczbą losową(wyznaczaną wg
pewnego algorytmu z adresu karty sieciowej), ponieważ inaczej stacje nadające ponawiałyby próby w tych
samych czasach, co powodowałoby kolejne kolizje. Proces ten określany jest w literaturze
angielskojęzycznej mianem
backoff
.
5. Szczelina czasowa S (slot time) [5i] jest czasem transmisji 512 bitów dla sieci Ethernet 10 i 100Mb/s oraz
4096 bitów dla sieci 1Gb/s. Aby każdy z nadawców wykrył kolizje, dłógość ramki mósi być przynajmniej
taka jak S oraz czas potrzebny do rozprzestrzenienia się kolizji do wszystkich stacji w sieci mósi być
mniejszy niż S. Wynika z tego, że stacje nie mogą zakończyćtransmisji ramki zanim kolizja nie zostanie
zidentyfikowana przez wszystkie stacje w sieci.
Sygnały transmitowane przez stacje napotykają opóźnienia podczas przechodzenia poprzez sieć.
Opóźnienia te składają się z opóźnień transmisji sygnału przez medium oraz z opóźnień logicznych
wprowadzanych przez urządzenia elektroniczne, przez które sygnał musi przejść - karty sieciowe,
koncentratory, przełączniki itp. Czas potrzebny do przejścia pomiędzy dwiema najdalej oddalonymi
stacjami w sieci nazywamy
czasem propagacji (propagation delay)
.
Aby stacja wykryła, że aktualnie transmitowana ramka napotkała kolizję, jej sygnał musi przejść
przez sieć do innej stacji. Druga stacja po wykryciu kolizji nadaje sekwencję blokady (jam sequence), która
musi być przetransmitowana z powrotem poprzez sieć zanim zostanie wykryta poprzez nadal nadającą
stację. Suma maksymalnych sieciowych opóźnieńi czasu wymaganego na transmisję sekwencji blokady
składa się na szczelinę czasową.
Szczelina czasowa jest ważnym parametrem. Długość 512 bitów szczeliny czasowej wyznacza
najmniejszy rozmiar ramki Ethernetowej na 64 bajty. Wszystkie ramki mniejsze niż 64B są uznawane za
fragmenty kolizji (collision fragment)
lub tzw.
słabą ramkę(runt frame)
i są automatycznie odrzucane przez
stacje odbiorcze.
Parametr S ustala również maksymalną rozpiętość sieci. Jeśli rozmiar sieci jest zbyt duży może
wystąpić zjawisko zwane
późną kolizją(late collision)
. Oznacza to że tego typu kolizja nie zostanie
automatycznie wykryta przez mechanizmy kontrolne Ethernetu i jej wystąpienie zostanie zauważone
dopiero przez warstwy wyższe modelu ISO/OSI. Dopiero one będą musiały zarządzić ponowną
transmisjęuszkodzonej ramki.
Szczelina czasowa zapewnia, że jeśli nastąpi kolizja to zostanie ona wykryta w ciągu transmisji
pierwszych 512 bitów ramki (dla sieci 10/100Mbit). Dla sieci 1Gb/s szczelina czasowa została ustalona na
4096 bitów; ponieważ dla szczeliny 512 bitów sygnał zdążyłby przebyć jedynie ok. 20 metrów, co
uniemożliwiałoby przemysłowe zastosowania tej sieci. Poprzez zwiększenie rozmiaru szczeliny czasowej do
4096 bitów, maksymalny rozmiar sieci zwiększył się do 200 m.
Wersja IEEE 802.3x standardu definiuje jeszcze jeden tryb transmisji dla Ethernetu, nazywany full-
duplex, który omija protokół CSMA/CD. Protokół CSMA/CD definiuje tzw. half-duplex, co oznacza, że
stacje nie mogą transmitować danych w tym samym czasie. Full-duplex umożliwia dwóm stacjom
równoczesną wymianę danych poprzez łącze typu punkt-do-punktu (point-to-point). Stacja o prędkości
10Mbit w trybie full-duplex uzyskuje szerokość pasma równą 20Mbit. W transmisji full-duplex nie ma
możliwości wykrywania kolizji, co w niektórych przypadkach może stwarzać problemy. W przypadku gdy
jeden komputer w sieci ma ustawioną transmisję typu full-duplex i zostanie podłączony do koncentratora,
wystąpi zjawisko wielokrotnych kolizji, ponieważ przy takim połączeniu komputer ten uznaje, że ma
dostępną całą szerokość pasma i nie sprawdza czy może nadawać.
Budowa pakietu IEEE 802.3
Minimalna długość ramki wynosi 64B a maksymalna 1518 (nie wliczając preambuły i SFD)
7B
1B
6B
6B
2B
46B – 1500B
4B
Preambuła SFD Adres docelowy Adres źródłowy Długość
Dane
FCS
Preambuła – naprzemienny ciąg bitów 1 i 0, informujący o nadchodzącej ramce. Najczęściej nie jest on
włączany do wielkości ramki. Uznawany jest za część procesu komunikacji.
SFD – (Start of Frame Delimiter) bajt kończący preambułę o postaci: '10101011' (standard 802.3), zawsze
jest zakończony dwoma bitami 1. W standardzie Ethernet bajt ten nie występuje, zastąpiony jest kolejnym
bajtem preambuły (ostatni bit równy 0).
Adres docelowy – 6 bajtowa liczba będąca adresem MAC celu. Może być adresem pojedynczym (unicast),
grupowym (multicast) jak i rozgłoszeniowym - dla wszystkich użytkowników (broadcast). Adres
rozgłoszeniowy składa sięz samych bitów o wartości 1. Jeśli host nasłuchując otrzyma ramkę z takim
adresem w polu docelowym, odczytuje ją uznając, że jest przeznaczona również dla niego.
Adres źródłowy – 6 bajtowa liczba będąca adresem MAC źródła. Jest on zawsze adresem pojedynczej karty
sieciowej.
Długość – określa w bajtach ilość danych, które nastąpią po tym polu - nie może być więcej niż 1500. W
standardzie Ethernet wartośćw tym polu jest zawsze większa od 1500 (dziesiętnie) i określa numer
protokołu warstwy wyższej, który odbierze dane po zakończeniu obróbki przez standard Ethernet.
Dane – jeśli ilość danych jest mniejsza od 46, wprowadzane jest tzw.
uzupełnienie PAD (padding)
i dane są
dopełniane jedynkami.
FCS – Frame Check Sequence zawiera 4 bajty kontrolne (cyclic redundancy check - CRC) wygenerowane
przez interfejs nadający i sprawdzane przez odbierający. Określająone czy dane nie zostały uszkodzone.
Każde urządzenie sieciowe ma nadawany przez producenta niepowtarzalny numer odróżniający dany
egzemplarz od innych. Numery te nosząnazwę MAC (Media Access Control) i są przyznawane przez IEEE.
Organizacja ta przypisuje poszczególnym producentom odpowiedni kod i zakres liczbowy. Dzięki temu nie
powinno być na świecie dwóch kart sieciowych o takim samym numerze. Pierwsze trzy bajty identyfikują
producenta karty, pozostałe są numerem kolejnym egzemplarza.
Podczas tworzenia struktury sieci Ethernet musimy podporządkować się następującym
ograniczeniom rozpiętości sieci wynikającym z normy IEEE 802.3 (tzw. "zasada 5-4-3"):
• nie może być więcej niż 5 połączonych segmentów,
• pomiędzy dwiema stacjami nie może być więcej niż 4 wzmacniaki,
• równocześnie na każde 5 kolejnych segmentów, tylko 3 mogą być wypełnione, pozostałe dwa muszą być
puste.
Ważnym pojęciem podczas budowy sieci Ethernet jest segment, czasem określany jako domena
kolizji. Domena kolizji jest formalnie definiowana jako pojedyncza sieć CSMA/CD, w której może nastąpić
kolizja, jeśli dwa komputery podłączone do tej sieci będą nadawać jednocześnie. Przy połączeniu
komputerów za pomocą urządzeń pracujących w warstwie 1 modelu ISO/OSI (wzmacniaków,
koncentratorów) tworzymy pojedynczą domenę kolizji. W przypadku zastosowania urządzeń pracujących
również w warstwie 2 (i wyższych) modelu ISO/OSI (mosty, przełączniki, rutery) dzielimy sieć na osobne
domeny kolizji (segmenty).
Urządzenia sieciowe
Koncentrator (hub) - Jest urządzeniem posiadającym wiele portów do przyłączania stacji roboczych przede
wszystkim w topologii gwiazdy. Można je traktować jak wieloportowe wzmacniaki, z tym że nowoczesne
koncentratory posiadają obwody regenerujące przesyłane ramki Ethernetowe. Zaletą takiego rozwiązania
jest to, że przerwanie komunikacji pomiędzy hubem a jedną ze stacji roboczych nie powoduje zatrzymania
ruchu w całej sieci, należy jednak pamiętać, że awaria koncentratora unieruchomi komunikacje ze
wszystkimi podłączonymi do niego urządzeniami. Huby wymagają zasilania i wzmacniają sygnały ze stacji
roboczych, co pozwala na wydłużenie połączenia.
Przykładowo hub ponad zwykłe wzmacnianie sygnału na każdym łączu dodatkowo:
• regeneruje kształt sygnału (stosunki amplitud i czasy) przed retransmitowaniem go dalej
• sprawdza ramki w poszukiwaniu wadliwych, które po wystąpieniu w zbyt dużej ilości są blokowane i nie
rozprzestrzeniają się po sieci
• zabezpiecza sieć przed zbyt długimi transmisjami generowanymi przez uszkodzone stacje
• zapobiega rozprzestrzenianiu się transmisji pochodzących od uszkodzonych segmentów
Most (bridge) - jest urządzeniem najczęściej o dwóch portach mającym za zadanie łączenie ze sobą
segmentów sieci. Ponieważ dzieli sieć lokalnąna segmenty, umożliwia to zwiększenie rozpiętości tejże sieci.
Działa w warstwie fizycznej i warstwie łącza danych modelu ISO/OSI. Most operuje tylko na adresach
sprzętowych, decydując do którego segmentu sieci należy przesłać nadchodzący pakiet. Nie jest jednak w
stanie zatrzymywać pakietów uszkodzonych ani zapobiegać zatorom w przypadku transmisji broadcastowej
z kilku stacji równocześnie. Mosty są urządzeniami prostymi w instalacji i nie wymagającymi
konfigurowania. Należy pamiętać, że ponieważ most musi reagować na adresy MAC pakietów, to
wprowadza opóźnienie w transmisji. W przypadku, gdy dana grupa komputerów (niewielka) korzysta z
jednego serwera, nie należy danego serwera umieszczaćza mostem.
Przełącznik (switch) - Podobnie jak huby, stosowane są przede wszystkim w topologii gwiazdy, w sieciach
opartych na skrętce. Zwykle posiadająkilkanaście portów, które mogą być wykorzystywane do podłączenia
stacji roboczych, innych przełączników lub koncentratorów. Pracują w drugiej warstwie modelu ISO/OSI.
Przełącznik podłączony do sieci nasłuchuje na swoich portach adresów MAC podłączonych tam
komputerów. Tworzy sobie tablicę przyporządkowującą do danego adresu, numer portu, do którego
podłączony jest dany komputer. Teraz, w przypadku pojawienia się transmisji do danego komputera, cały
ruch kierowany jest do odpowiedniego portu i nie przedostaje się na pozostałe porty przełącznika. Dzięki
temu, przełączniki dzielą sieć lokalnąna segmenty. Nadal jednak należy pamiętać - podobnie jak przy
mostach - o opóźnieniu wprowadzanym przez przełącznik. Inteligentne switche posiadająt ryby
przełączania: fast forward oraz store and forward. W pierwszym trybie odebrane ramki są wysyłane
natychmiast na port docelowy, niezależnie od tego, czy są to ramki zawierające błędy, czy też biorące udział
w kolizji, natomiast drugi tryb sprawdza ramki eliminując błędne oraz te, które biorą udziałw kolizji. Drugi
tryb powoduje jednak duże opóźnienia w transmisji. Switche potrafią jednak dokonywać inteligentnego
przełączania polegającego na tym, że standardowym trybem pracy jest fast forward, natomiast gdy liczba
błędów zaczyna przekraczać kilkanaście na sekundę automatycznie przełączają się na tryb store and
forward. Gdy liczba błędów spada poniżej tego poziomu przełącznik automatycznie wraca do poprzedniego
trybu pracy. W przypadku łączenia mediów o różnych szybkościach transmisji, przełącznik zawsze pracuje
w trybie store and forward, ponieważmusi zapamiętać całą ramkę, aby móc ją nadać z większą szybkością.
Ponadto przełączniki umożliwiają transmisje full-duplex pomiędzy dowolnymi swoimi portami (nie ma
takiej możliwości dla koncentratorów).
Router - nazywany również bramką(gateway) jest urządzeniem sprzęgającym sieci, funkcjonującym w
warstwach fizycznej, łącza danych i sieciowej modelu ISO/OSI. Ruter jest zaawansowanym urządzeniem do
łączenia ze sobą poszczególnych segmentów sieci i zwiększania jej rozmiarów. Jest urządzeniem
konfigurowalnym, pozwala na sterowanie przepustowością sieci oraz na pełną izolację segmentów sieci.
Potrafi przekazywać dane pomiędzy sieciami opartymi na różnych technologiach. W sieciach rozległych
dane przekazywane są pomiędzy konkretnymi węzłami, po drodze przechodząprzez wiele węzłów
pośrednich i mogą podróżować różnymi trasami. Router jest jednym z takich węzłów, ma za zadanie
przesyłania danych jak najlepszą i najszybszą drogą. Pracuje w warstwie sieciowej modelu referencyjnego
OSI co oznacza, że potrafi odczytywać adresy z poszczególnych pakietów tak, aby znać ich miejsce
przeznaczenia. Procedura dostarczania pakietów bliżej ich miejsca przeznaczenia nosi nazwę
przekierowywania (rutowania) pakietów. Do kierowania danych używana jest tzw. tabela (lub tablica)
routingu, która zawiera informacje o sąsiadujących routerach, sieciach lokalnych oraz ich stanie. Na
podstawie tych danych wyszukiwana jest optymalna droga dla danego pakietu. Tablica routingu może być
statyczna - aktualizowana ręcznie przez administratora sieci, lub dynamiczna - aktualizowana automatycznie
przez oprogramowanie sieciowe. Zaletą drugiego rozwiązania jest to, że w razie dużego ruchu
oprogramowanie może zmienić tablice routingu tak, aby pakiety omijały powstały zator. Routery mogąbyć
także wykorzystywane jako "zapora ogniowa", zabezpieczając sieć przed nieautoryzowanym dostępem.
Przy odpowiedniej konfiguracji wszyscy użytkownicy sieci lokalnej korzystają z Internetu, natomiast
pozostali użytkownicy Internetu maja ograniczony dostęp do sieci lokalnej. Ponadto ruter można
wykorzystać jako urządzenie tłumaczące adresy sieciowe (Network Address Translation - NAT), którego
funkcje zostały częściowo zaimplementowane np. w systemie operacyjnym Linux jako IP-masquerading
(maskarada, maskowanie adresUw IP). Działanie NAT polega na umożliwieniu przedostawania się
pakietów z sieci lokalnej o adresach z zakresu nierutowalnego (lub innych) do Internetu. Każdy z pakietów z
sieci lokalnej ma zamieniany adres źródłowy na adres rutera wykonującego funkcję NAT. W ten sposób
komputery w sieci lokalnej są niewidoczne z Internetu. Można powiedzieć, że cała sieć jest reprezentowana
przez ruter.