1
Protokół TCP IP
Sieci komputerowe
Marek Pudełko
2
TCP
• TCP (ang. Transmission Control
Protocol) - strumieniowy protokół
komunikacji między dwoma
komputerami.
• Został stworzony przez Vintona Cerfa i
Roberta Kahna.
• Jest on częścią większej całości
określanej jako stos TCP/IP. W modelu
OSI TCP odpowiada warstwie
Transportowej.
3
Historia TCP/IP cz. 1
• Początki protokołów TCP / IP sięgają lat siedemdziesiątych, kiedy to
PENTAGON (amerykańskie ministerstwo obrony) potrzebowało sieci
komputerowej zdolnej do przetrwania wojny atomowej, potrafiącej
automatycznie rozpoznać uszkodzone łącza i wybrać zastępczą drogę
dla przesyłanych danych. Zniszczenie pojedynczych węzłów sieci nie
mogłoby doprowadzić do unieruchomienia całego systemu.
• W wyniku prac nad tym projektem powstała sieć ARPANET (nazwa
amerykańskiej agencji - Advanced Research Projects Agency -
Instytut Rozwoju Zaawansowanych Technologii ), którą można
uznać za kamień węgielny późniejszego Internetu.
• Sieć ARPANET pozostała pod patronatem tej organizacji, która
skupiła się na badaniach nad technologią komutacji pakietów i
rozwojem mechanizmów transportowych wykorzystujących między
innymi fale radiowe i satelity telekomunikacyjne.
• Wtedy to protokół komunikacyjny sieci został ochrzczony nazwą
"1812 PROTOCOL" pochodzący od numeru dokumentu opisującego
cały system.
• W roku 1975 kontrolę nad siecią ARPANET przejęła Agencja
Komunikacyjna Departamentu Obrony USA nazywana w skrócie DCA
(Defense Communication Agency). W tym czasie opracowano
nowy, udoskonalony zestaw protokołów sieciowych. Zestaw ten stał
się trzonem protokołu TCP/IP, który w 1978 roku był już na tyle
kompletny, że mógł być zaprezentowany Światu.
4
Historia TCP/IP cz. 2
• Powstanie TCP/IP było przełomem umożliwiającym budowę dużej liczby
nowych sieci połączonych z ARPANET-em.
• Rok 1982 - Departament Obrony utworzył sieć DDN, zaprojektowaną
jako coś w rodzaju obszaru centralnego dla rozproszonych sieci
tworzących Internet.
• W rok później (1983) Departament Obrony wydał oświadczenie
akceptujące TCP/IP w roli protokołu sieciowego, który ma być
stosowany przez wszystkie węzły łączące się z Internetem. Było to
początkiem lawinowego rozwoju sieci TCP/IP, ponieważ powstał
standard pozwalający na komunikację pomiędzy komputerami różnych
typów.
• Powstanie w latach osiemdziesiątych wielu tysięcy sieci lokalnych
(LAN) również przyczyniło się do wzrostu znaczenia TCP/IP. Sieć lokalną
można bardzo łatwo zbudować, a w miarę rosnących wymagań dowolnie
rozbudowywać. Wielkie znaczenie dla ekspansji TCP/IP miało masowe
wprowadzenie technologii sieciowej w sektorze biznesu i finansów.
• TCP/IP wydaje się "naturalnym" środkiem umożliwiającym
przekazywanie danych pomiędzy firmami używającymi różnorodnego
sprzętu produkowanego przez setki lub tysiące różnych firm.
• Do końca lat osiemdziesiątych TCP/IP uzyskało status siły napędowej
rozwoju sieci na całym świecie, wielkość sieci zwiększała się bardzo
szybko, liczba węzłów po niecałych trzydziestu latach urosła z
początkowych czterech do ponad trzydziestu milionów.
5
TCP
• TCP zapewnia wiarygodne połączenie dla wyższych warstw
komunikacyjnych przy pomocy sum kontrolnych i numerów
sekwencyjnych pakietów, w celu weryfikacji wysyłki i odbioru.
• Brakujące pakiety są obsługiwane przez żądania retransmisji.
Host odbierający pakiety TCP porządkuje je według numerów
sekwencyjnych tak, by przekazać wyższym warstwom modelu
OSI pełen, złożony segment.
• Chociaż protokół definiuje pakiet TCP, to z punktu widzenia
wyższej warstwy oprogramowania, dane płynące połączeniem
TCP należy traktować jako ciąg oktetów.
• W szczególności - jednemu wywołaniu funkcji API (np.
send()), nie musi odpowiadać wysłanie jednego pakietu. Dane
z jednego wywołania mogą zostać podzielone na kilka
pakietów lub odwrotnie - dane z kilku wywołań mogą zostać
połączone i wysłane jako jeden pakiet.
• Również funkcje odbierające dane (recv()) w pratyce
odbierają nie konkretne pakiety, ale zawartość bufora stosu
TCP/IP, wypełnianego sukcesywnie danymi z przychodzących
pakietów.
6
Nagłówek TCP
7
TCP
• Charakterystyczny dla TCP jest moment nawiązania
połączenia, nazywany ang. three-way handshake.
– Host inicjujący połączenie wysyła pakiet zawierający
segment TCP z ustawioną flagą SYN (Synchronize -
synchronizacja).
– Host odbierający połączenie, jeśli zechce je obsłużyć odsyła
pakiet z ustawionymi flagami SYN i ACK (Acknowledge -
potwierdzenie).
• Inicjujący host powinien teraz wysłać pierwszą porcję danych,
ustawiając już tylko flagę ACK (gasząc SYN).
• Jeśli host odbierający połączenie nie chce lub nie może
odebrać połączenia, powinien odpowiedzieć pakietem z
ustawioną flagą RST (Reset).
– Prawidłowe zakończenie połączenia polega na wysłaniu
flagi FIN.
8
IP
• IP (ang. Internet Protocol) to protokół komunikacyjny
warstwy sieciowej modelu OSI (warstwy internet w
modelu TCP/IP). Używany powszechnie w Internecie i
sieciach lokalnych.
• Dane w sieciach IP są wysyłane w formie bloków
określanych mianem pakietów. W przypadku protokołu
IP, przed rozpoczęciem transmisji, nie jest zestawiana
wirtualna sesja komunikacyjna pomiędzy dwoma
hostami, które nie komunikowały się ze sobą wcześniej.
• Protokół IP jest protokołem zawodnym - nie
gwarantuje, że pakiety dotrą do adresata, nie zostaną
sfragmentowane, czy też zdublowane, a ponadto mogą
dotrzeć do odbiorcy w innej kolejności niż zostały
nadane. Niezawodność transmisji danych jest
zapewniana przez protokoły warstw wyższych,
znajdujących się w hierarchii powyżej warstwy
sieciowej. 1982-standartem TCP/IP
9
Nagłówek protokołu IP
10
Struktura pakietu IP:
1 bajt 2 bajt 3 bajt
4 bajt
nr wersji długość typ obsługi długość całkowita
pakietu
protokołu nagłówka
identyfikator flagi przesunięcie
N
(3 bity) (13 bitów)
A
czas życia protokół suma kontrolna
nagłówka G
nadrzędny
Ł
adres źródłowy IP
Ó
W
adres docelowy IP
E
K
opcje
niewykorzystane
D A N E
O
P
C
J
A
11
TCP/IP
• Protokół TCP/IP (ang. Transmission Control
Protocol/Internet Protocol) jest bezspornie
wszechobecnym i najbardziej udanym z pośród
dotychczas zaprojektowanych protokołów
komunikacyjnych.
• TCP/IP to protokół kontroli transmisji i protokół
internetowy, to pakiet standardowych protokołów
umożliwiających łączenie komputerów za
pośrednictwem sieci.
• TCP/IP jest protokołem komunikacji otwartej.
Otwartość oznacza możliwości komunikacji miedzy
dowolna kombinacją urządzeń, bez względu na ich
fizyczna różnorodność.
• TCP/IP zwane jest także stosem protokołów ze
względu na strukturę warstwową.
12
Warstwy TCP IP
•
Model odniesienia TCP/IP, inaczej niż OSI, bardziej skupia się na
dostarczaniu wzajemnych połączeń niż sztywnym dopasowaniu do
warstw funkcji, jest znacznie bardziej elastyczny od modelu OSI.
•
Podstawowa różnica miedzy modelem OSI a poniższym polega na
braku stałej gwarancji dostarczania pakietów przez warstwę
transportową. Zestaw TCP/IP oferuje prostszy protokół
datagramów użytkownika (UDP, User Datagram Protocol), w
którym wszystkie warstwy stosu TCP/IP wykonuja określone
obowiązki lub uruchamiają aplikacje. Protokoły TCP i IP łącznie
zarządzają przepływem danych przez siec w obu kierunkach.
•
Tymi warstwami dla modelu TCP/IP są:
1. Warstwa łącza - zawiera protokoły ARP i RARP, obsługujące
transmisję pakietów
2. Warstwa sieciowa – zawiera protokoły ICMP, IP, IGMP, RIP, OSPF i
EGP. Są to raczej protokoły niskiego poziomu i ezoteryczne, nie
wymagające zbytniej troski.
3. Warstwa transportowa – zawiera protokoły UDP i TCP. Pierwszy
dostarcza pakiety prawie bez sprawdzania, drugi natomiast
gwarantuje bezstratne ich dostarczenie.
4. Warstwa aplikacji - zawiera protokoły SMTP, FTP, NFS, NIS, LPD,
Telnet.
13
Właściwości TCP IP
•
Protokół TCP/IP umożliwia prace w sieciach niejednorodnych,
tworzenie sieci miedzyplatformowe. Protokół ten ma
następujące cechy charakterystyczne:
1. Dobrą odtwarzalność po awarii
2. Możliwość dodawania nowych sieci bez przerywania istniejącej
obsługi
3. Wysoki współczynnik obsługi błędów
4. Niezależność od platformy
5. Mały stopień obciążenia danych własnymi strukturami
6. Duża wydajność
•
Protokóły TCP i IP łącznie zarządzają przepływem danych przez
siec w obu kierunkach. IP przesyła pakiety bez ich rozróżniania,
natomiast zadaniem TCP jest gwarancja ich dotarcia. Protokół
TCP odpowiada za działania następujące :
1. Uzgadnianie tożsamości (handshake)
2. Zarządzanie pakietami
3. Sterowanie przepływem
4. Wykrywanie i obsługa błędów
14
Klasy adresów IP