background image

Podstawy Protokołu TCP/IP

 

 

Wprowadzenie  

    MoŜliwość przesyłania programów i danych między komputerami za pośrednictwem sieci 
komputerowej odgrywa niezwykle istotna rolę niemal dla kaŜdego uŜytkownika komputera.

  

    Jednak zbudowanie uniwersalnej sieci (pracującej w oparciu o rozwiązania jednego 
producenta) spełniającej wymagania wszystkich uŜytkowników jest praktycznie niemoŜliwe. 
UŜytkownicy dobierają więc rozwiązania techniczne sieci stosownie do swoich potrzeb, 
tworząc niezaleŜne sieci słuŜące określonej grupie osób. Zapewnienie wymiany informacji i 
komunikacji pomiędzy róŜnymi sieciami jest jednakŜe trudnym problemem technicznym.

  

    W wyniku niezwykle dynamicznego rozwoju techniki opracowano jednak rozwiązania 
umoŜliwiające połączenie wielu róŜnych sieci fizycznych, tak Ŝeby funkcjonowały jako 
skoordynowana całość. Praca w intersieci (ang. internetworking) polega na przystosowaniu 
do siebie róŜnych rozwiązań sprzętowych, udostępniając sposób łączenia ze sobą 
niejednorodnych sieci. Technika intersieci pozwala komputerom na komunikowanie się 
niezaleŜnie od fizycznych połączeń sieciowych.

  

    Niniejsza praca przedstawia podstawowe zasady, na których opiera się funkcjonowanie sieci 
złoŜonej, będące wynikiem prac wspieranych przez amerykańską instytucję - Advanced 
Research Project Agency
 (ARPA).

  

    Organizacja ta zaproponowała zbiór standardów określających szczegóły komunikacji 
między komputerami, a takŜe szczegółów dotyczących łączenia sieci i wyboru trasy w sieci 
nazwane TCP/IP (od głównych protokołów wchodzących w ich skład). TCP/IP (ang
Transmission Control Protocol / Internet Protocol
) nie jest więc pojedynczym produktem. Jest 
to uogólniona nazwa całej rodziny protokołów i oprogramowania udostępniającego szereg 
usług sieciowych. Podstawę ich stanowią jednak dwa typy usług wykorzystywanych przez 
wszystkie programy uŜytkowe.

  

    Usługa bezpołączeniowego przenoszenia pakietów - stanowi podstawę wszystkich innych 
usług intersieciowych. Przenoszenie bez uŜycia połączenia oferuje większość sieci 
wymieniających pakiety i oznacza, Ŝe intersieć kieruje przesyłaniem niewielkich porcji danych 
przy pomocy informacji adresowych, zawartych w kaŜdej takiej porcji. PoniewaŜ usługi 
bezpołączeniowe bezpośrednio tłumaczą się na czynności sprzętu, rozwiązanie to jest 
efektywne, ponadto umoŜliwia łatwą adaptację protokołów TCP/IP do szerokiej gamy sprzętu. 
Ubocznym skutkiem tej metody przesyłania danych jest to, Ŝe usługi bezpołączeniowe kierują 
kaŜdym pakietem oddzielnie, w związku z czym nie ma Ŝadnej pewności, Ŝe pakiety zostaną 
dostarczone do odbiorcy w określonej kolejności, nie ma teŜ pewności, Ŝe w ogóle zostaną 
dostarczone.

  

    Usługa transportu niezawodnymi strumieniami wychodzi naprzeciw tym problemom. 
Posiada ona mechanizmy, które pozwalają wykryć błędy w transmisji danych czy teŜ 
zagubienie pakietu. Usługa transportu niezawodnymi strumieniami umoŜliwia programowi 
uŜytkowemu na jednym komputerze ustanowienie “połączenia” z programem uŜytkowym na 
drugim komputerze, a następnie wysyłanie danych tak jak gdyby to było stałe, bezpośrednie 
połączenie. NaleŜy jednak mocno podkreślić, Ŝe jest to połączenie wirtualne - strumień danych 
nadal jest dzielony na mniejsze porcje i w tej postaci przesyłany jest do odbiorcy.

  

 

 

background image

 

    PoniewaŜ wiele sieci zapewnia usługi podobne do powyŜszych, warto wskazać podstawowe 
cechy odróŜniające usługi TCP/IP od innych:

  

1. 

Sieć TCP/IP oparta jest na zwykłej technice wymiany pakietów, funkcjonuje więc 

niezaleŜnie od jakiegokolwiek dostępnego sprzętu.

 

2. 

Intersieć TCP/IP umoŜliwia komunikowanie się dowolnej pary komputerów, które 

łączy. Jest to moŜliwe dzięki rozpoznawaniu kaŜdego komputera przez unikalny w 
skali światowej adres, jednoznacznie rozpoznawany w całej intersieci. Informacja 
adresowa słuŜy takŜe do podejmowania decyzji o wyborze trasy pakietu od nadawcy 
do odbiorcy.

 

3. 

Protokoły TCP/IP umoŜliwiają potwierdzanie między nadawcą a odbiorcą 

docelowym, nawet gdy komputery nie są podłączone do tej samej sieci fizycznej.

 

4. 

Oprócz wspomnianych podstawowych usług protokoły TCP/IP oferują standardy dla 

wielu programów uŜytkowych takich jak: poczta elektroniczna, transfer plików, 
zdalna praca. W efekcie w programach uŜytkowych moŜna wykorzystywać gotowe, 
istniejące juŜ usługi.

 

    Tak więc rodzina protokołów TCP/IP moŜe być uŜywana do komunikacji w dowolnym 
zbiorze połączonych sieci. Ponadto moŜna wykorzystać protokoły TCP/IP do połączenia 
swoich wewnętrznych sieci chociaŜ nie mają połączenia z sieciami z zewnątrz. Technika 
TCP/IP jest szczególnie interesująca z uwagi na fakt, Ŝe stanowi podstawowe rozwiązanie 
ś

wiatowej intersieci - INTERNETU.

  

Działanie i niezwykle dynamiczny rozwój sieci INTERNET świadczy o sile i przenośności 
techniki TCP/IP.

 

 
 
 
 

background image

*** 

Model TCP/IP 

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 aplikacji  

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 

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 

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 

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. 

 
 
 

background image

Aplikacje i warstwa transportowa  

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. 

Niezawodny transfer danych  

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. 

Przepustowość  

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ą 

background image

programy pocztowe

, słuŜące do przesyłania 

plików

 i 

stron internetowych

. Oczywiście im 

większa przepustowość, tym lepiej. 

Czas reakcji 

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. 

Właściwości  

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. 

 

 

background image

Model TCP/IP a Internet 

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 

Od ogólnego modelu TCP/IP są w Internecie wyjątki. Przykładem moŜe być tutaj usługa 

ping

w której aplikacja wysyła bezpośrednio pakiety ICMP w celu ustalenia jakości połączenia z 
innym komputerem.