Historia i przegląd możliwości TCP/IP
TCP/IP jest zestawem protokołów sieciowych funkcjonujących w górnych warstwach sieci. To, co obecnie można nazwać
standardem TCP/IP, rozwijano i udoskonalano przez ponad 20 lat. Dziś TCP/IP nie jest własnością żadnej firmy software'owej ani
instytucji normalizacyjnej. Departament Obrony USA sprawuje coś w rodzaju patronatu nad TCP/IP, starając się o zachowanie
pewnego minimum porządku i spójności standardu.
Historia TCP/IP
Wszystko zaczęło się od projektu amerykańskiego ministerstwa obrony - Pentagonu. Zadanie postawione przed informatykami
firmy Legende było proste i zarazem bardzo złożone. Wojsko 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łyby doprowadzić do unieruchomienia całego systemu.
W wyniku prac nad tym projektem powstała sieć ARPANET, którą można uznać za kamień węgielny późniejszego Internetu. Jej
nazwa wywodzi się od nazwy Instytutu Rozwoju Zaawansowanych Technologii (Advanced Research Project Agency).
Agencja ARPA uległa w 1971 roku przekształceniom organizacyjnym, w wyniku których jej nazwę zmieniono na DARPA. Sieć
ARPANET pozostała pod kuratelą 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.
W roku 1975 kontrolę nad siecią ARPANET przejęła Agencja Komunikacyjna Departamentu Obrony USA nazywana w skrócie
DCA. 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. Powstanie TCP/IP było przełomem
umożliwiającym budowę dużej liczby nowych sieci połączonych z ARPANET-em.
W roku 1982 Departament Obrony utworzył sieć DDN, zaprojektowaną jako coś w rodzaju obszaru centralnego dla
rozproszonych sieci tworzących Internet. W rok później 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 maszynami różnych typów. TCP/IP
rozwijał się i nadal się rozwija w ośrodkach naukowych, uczelniach, organizacjach rządowych oraz wielu innych miejscach, a
zainteresowanie tym protokołem wciąż rośnie.
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.
Tak komunikują się komputery
Aby zrozumieć, w jaki sposób przesyłane są dane np. Z serwera WWW do przeglądarki, konieczne jest przyswojenie odrobiny
teorii. W tym przypadku informacje dostarczone są z serwera WWW do komputera użytkownika za pośrednictwem karty
sieciowej lub modemu. Potrzebny jest też odpowiedni kanał komunikacyjny, którym dane transmitowane są pomiędzy obiema
maszynami. Strukturę transportu danych opisuje warstwowy model OSI. Chodzi tu o teoretyczny model, za pomocą którego
możliwe jest opisanie komunikacji sieciowej w sposób niezależny od stosowanego sprzętu i oprogramowania. "Podręcznikowa
sieć" złożona jest z siedmiu tzw. warstw. Poszczególnym warstwom odpowiadają określone elementy sprzętowe i programowe
biorące udział w procesie wymiany informacji.
Najniższa warstwa , nazwana fizyczną odpowiedzialna jest za przesyłanie bitów. Odpowiada jej karta sieciowa lub
modem. Na tym poziomie realizowana jest fizyczna transmisja danych bez "kontroli ruchu" i bez uwzględnienia rodzaju
informacji. Ciągłość transmisji nie jest zabezpieczona - jeśli medium zostanie zablokowane lub uszkodzone, komunikacja
zostanie przerwana.
Warstwa fizyczna porozumiewa się z warstwą łącza. Ta warstwa steruje fizyczną wymianą bitów. W większości
przypadków obie warstwy połączone są w jedną całość tworząc w ten sposób kartę sieciową.
Następna z kolei warstwa sieciowa (network layer) zamienia ciąg bitów w kanał komunikacyjny. Warstwa sieciowa dba o to,
aby informacje przepływały między odpowiednimi komputerami. Dane wymieniane są w postaci pakietów wysyłanych od
nadawcy do odbiorcy, nie jest jednak sprawdzana ich zawartość.
Kolejna warstwa transportowa (transport layer) przesyła wiadomości kanałem stworzonym przez warstwę sieciową. Dopiero ta
warstwa troszczy się o bezpieczeństwo i pewność wymiany danych. Wszystkie warstwy leżące poniżej nie przykładają żadnej
wagi do bezpieczeństwa skupiając się na zapewnieniu maksymalnej szybkości.
Na warstwie transportowej bazuje warstwa sesji (session layer). W tym momencie kończy się czysta wymiana bajtów, a
znaczenia nabiera rodzaj informacji. Dopiero ta warstwa pozwala realizować usługi takie, jak na przykład pobieranie z serwera.
Przedostatnia warstwa nosi nazwę warstwy prezentacji (presentation layer). Na tym poziomie dane dostarczane z niższych
warstw przetwarzane są w taki sposób, aby mogły być odebrane przez aplikację użytkownika. Tutaj dokonywana jest na przykład
konwersja jeśli komputer-klient używa innego formatu liczb niż komputer serwer.
Ostatnia warstwa aplikacji (application layer) jest po prostu programem komunikacyjnym, a więc np. przeglądarką WWW.
W większości przypadków również warstwy prezentacji i sesji łączone są w jedną całość. Model OSI nie jest stricte projektowym
zaleceniem precyzyjnie określającym sposób realizacji połączenia sieciowego.
Elementy TCP/IP
ELEMENTY WARSTWY APLIKACYJNEJ
Architektura TCP/IP w warstwie aplikacyjnej jest niezależna od platformy sprzętowej i wykorzystuje technologię klient/serwer.
Klient inicjuje (wywołuje) aplikacje, a serwer odpowiada na żądanie klientów. Realizacją tej koncepcji są podstawowe aplikacje
TCP/IP : TELNET (aplikacja umożliwiająca pracę zdalną), FTP (aplikacja umożliwiająca transfer plików) oraz SMTP
(aplikacja obsługująca pocztę elektroniczną). Na poniższym rysunku można zobaczyć TELNET, FTP, SMTP oraz inne usługi
dostępne w warstwie aplikacyjnej sieci.
Innym ważnym elementem warstwy aplikacyjnej jest protokół X udostępniający rozproszone środowisko okienkowe. Praca w
rozproszonym środowisku graficznym jest możliwa dzięki zastosowaniu technologii klient/serwer. W skład protokołu X wchodzą
między innymi:
.Serwer X ( X Server) - Program udostępniający usługi w środowisku graficznym na żądanie aplikacji typu klient X.
.Klient X (X Client) - Program korzystający z usług udostępnianych przez program typu serwer X (np. emulacja terminala
graficznego).
.Menedżer okien X (X Window Manager) - Program umożliwiający zmianę rozmiaru, przesuwanie i modyfikacje okien
wyświetlanych na ekranie.
.Biblioteka X (X Library) - Jest to biblioteka procedur w języku C i ułatwiających tworzenie aplikacji X Window. Jedną z funkcji
XLIB jest przetwarzanie żądań klienta X na żądania protokołu X.
.Narzędzia X (X Toolkits) - Jest to biblioteka programów ułatwiająca tworzenie elementów interfejsu użytkownika (przyciski,
paski menu, itp.).
.Widget - Jest to okno X, powiązane z nim dane oraz procedury służące do wykonywania operacji na tych danych.
TCP/IP zawiera protokół zabezpieczający nazwany Kerberos. Działanie tego protokołu opiera się na współpracy serwera
kontrolującego z serwerem wydającym "bilety dostępu". Przykładowo po wysłaniu przez klienta żądania wydania biletu, specjalny
serwer sprawdza "tożsamość" klienta i po pozytywnym przejściu weryfikacji wydaje "bilet", który może być przedstawiony
serwerowi kontrolującemu, który udostępnia określone usługi sieciowe.
Kolejną usługą jest CMIS (Common Managment Information Service). Jest to usługa udostępniana przez protokół zarządzania
informacjami CMIP. CMIP jest faktycznie metodą zarządzania siecią modelu OSI. Funkcje protokołu CMIP zaimplementowane w
TCP/IP określa się jeszcze innym skrótem - CMOT. Przy tej implementacji jako mechanizm transportowy używany jest protokół
TCP. Definicja CMIP jest napisana w języku ASN.1 (notacja składni abstrakcyjnej) używanym do ścisłego i jednoznacznego
definiowania typów danych.
W skład TCP/IP wchodzi także protokół zarządzania siecią SNMP, który wykorzystuje protokół UDP jako mechanizm
transportowy. SNMP ma własną terminologię, w której zamiast pojęć "klient" i "serwer" używa się terminów: "agent" i
"menedżer". Agentem nazywa się program określający status węzła sieci. Aplikacja (menedżer) komunikuje się z agentami za
pomocą komunikatów przesyłanych w sieci. Całość informacji o węźle jest przechowywana w bazie danych MIB.
Specjalne programy pozwalające aplikacjom wywoływać procedurę uruchamiającą serwer nazywają się RPC. Serwer zwraca
wówczas odpowiednie zmienne i kody do adresata. W skrócie można powiedzieć, że RPC jest po prostu mechanizmem
umożliwiającym działanie sieci w modelu klient/serwer.
NFS jest to zestaw protokołów opracowanych przez firmę SUN MicroSystems. Faktycznie jest to rozproszony system zarządzania
plikami, w którym każdy komputer korzystający z NFS ma nieograniczony dostęp do katalogów wszystkich innych maszyn w
systemie NFS.
TFTP jest bardzo prostym protokołem przesyłania plików wykorzystującym UDP jako mechanizm transportowy. Z tego względu
TFTP nie gwarantuje takiego stopnia bezpieczeństwa i odporności na zakłócenia, jak FTP.
Ostatnim, choć bardzo ważnym elementem TCP/IP jest system adresowania DNS (Domain Name Service). Jest to rozproszona
baza danych zawierająca adresy IP i ich aliasy (czyli przypisane im nazwy). DNS stworzono po to, aby rozwiązać problem
zarządzania plikami identyfikacyjnymi (host files) na każdym z komputerów w sieci TCP/IP. Plik identyfikacyjny zawiera adresy
IP oraz aliasy i musi być aktualizowany za każdym razem, gdy dodaje się nowy podsystem lub węzeł sieci. DNS eliminuje potrzebę
nieustannego uaktualniania plików identyfikacyjnych na każdym z komputerów w sieci.
ELEMENTY WARSTWY TRANSPORTOWEJ
TCP/IP zawiera dwa mechanizmy transportowe. Są to nimi protokoły TCP oraz UDP. TCP jest zorientowanym połączeniowo
bezpiecznym protokołem, przeprowadzającym automatyczne retransmisje w przypadku wykrycia błędów. Steruje on danymi
otrzymanymi z góry, z warstwy aplikacyjnej.
UDP jest protokołem typu bezpołączeniowego, to znaczy nie sprawdzającym poprawności danych i nie przeprowadzającym
retransmisji. UDP jest używany w specyficznych warunkach przez niektóre aplikacje sieciowe. Aplikacje korzystające z UDP
muszą mieć własne mechanizmy weryfikacji i retransmisji danych.
PROTOKOŁY WARSTWY SIECIOWEJ
W warstwie sieciowej funkcjonuje protokół IP transportujący DATAGRAMY w sieci. Datagram składa się z danych
przekazywanych przez warstwę aplikacyjną oraz nagłówka i bloku końcowego dodanego w warstwie transportowej. Protokół IP
korzysta z 32-bitowych adresów identyfikujących sieci i węzły. IP opracowano w tym celu, aby umożliwić sterowanie
ROUTERAMI (urządzeniami wyznaczającymi trasę danych w sieci) i innymi urządzeniami sieciowymi produkowanymi przez
różnych producentów.
Protokół ICMP służy do wysyłania komunikatów określających status węzłów sieci. Komunikat taki może być powiadomieniem o
błędzie lub po prostu zawierać informacje o bieżącym stanie węzła. ICMP umożliwia wydawanie poleceń dla urządzeń sieciowych,
które "odpowiadają" zwracając informacje o swoim stanie. W tym celu wykorzystywany jest specjalny program PING. Protokoły
ICMP i IP są implementowane razem, ponieważ muszą ściśle współdziałać udostępniając mechanizmy wyznaczania trasy i
uzyskiwania informacji.
Protokół ARP zwraca adres fizyczny (zwany też adresem twardym) dowolnego węzła o znanym adresie IP. ARP kojarzy adres
IP z odpowiadającym mu adresem fizycznym, np. adresem Ethernetu. Logiczne połączenie pomiędzy tymi dwoma adresami
określa się skrótem BIND.
W sieciach zgodnych protokołowo z TCP/IP zawirający węzły Ethernet, wyróżnia się fizyczny adres sieciowy i generowany
programowo adres protokołu IP. Fizyczny adres Ethernet składa się z kodu zapisanego na karcie sieciowej. Zadaniem ARP jest
ustalenie, który fizyczny adres sieciowy odpowiada adresowi IP w pakiecie. Gdy węzeł wysyła pakiet IP, konieczne jest ustalenie
fizycznego adresu sieciowego równoważnego zapisanemu w pakiecie adresowi IP. Węzeł rozsyła pakiet ARP, zawierający adres
IP węzła docelowego, a węzeł docelowy w odpowiedzi zwraca swój adres fizyczny.
Uzyskana informacja przechowywana jest w podręcznym buforze. Gdy węzeł ponownie będzie chciał wysłać pakiet IP, sprawdzi
najpierw, czy w buforze nie ma już odpowiedniego adresu fizycznego stacji docelowej. Jeśli jest, to skorzysta z niego, a procedura
z rozsyłaniem pakietu ARP nie będzie (niepotrzebnie) powtarzana. Pozwala to na zmniejszenie ruch w sieci.
Niejako odwrotne zadanie wykonuje protokół RARP wyznaczający adresy IP na podstawie adresu fizycznego. W tym celu RARP
"zmusza" węzeł do rozesłania swojego adresu fizycznego - wówczas inny węzeł sieci LAN odpowiada na przekaz zwracając
adres IP węzła źródłowego.
Protokoły bramkowe umożliwiają wzajemne komunikowanie się urządzeń trasujących (routerów). Istnieje wiele protokołó
bramkowych. Przykładem może być protokół wymiany informacji między routerami nazywany RIP (Routing Information
Protocol). Innym protokołem bramkowym jest OSPF (Open Shortest Path First). Obecnie nazwa "protokoły bramkowe" jest
nieco myląca, ponieważ bramki są urządzeniami sieciowymi pełniącymi specyficzne funkcje, najczęściej inne niż wyznaczanie
trasy.
PROTOKOŁY WARSTWY ŁĄCZA DANYCH
W TCP/IP nie ma określonych standardowych protokołów na poziomie warstwy łącza. Wybór zależy od przeznaczenia i
wymagań stawianych sieci. W sieci TCP/IP mogą być wykorzystywane różne protokoły łącza, np.:
.Ethernet
.Token Ring
.FDDI (Fiber Distributed Data Interface)
.X.25.
STOSOWANY NOŚNIK
Sieć TCP/IP można zaimplementować z wykorzystaniem różnych nośników. Przykładowo dla sieci TCP/IP o architekturze
Ethernet nośnikiem jest skrętka dwużyłowa lub kabel koncentryczny. W nowoczesnej sieci TCP/IP nośnikiem mogą być
światłowody. W rozległej sieci TCP/IP typu X.25 nośnikiem są najczęściej linie satelitarne, mikrofale lub szeregowe linie
telefoniczne.
Różne rodzaje komunikacji
W zasadzie wszystkie rodzaje transmisji danych można podzielić na dwa kategorie: połączeniowe i bezpołączeniowe.
Aby wyjaśnić ideę tych rozwiązań, posłużymy się prostymi analogiami. Przykładem usługi połączeniowej jest telefon. Kiedy
chcemy z kimś porozmawiać wybieramy jego numer zestawiając w ten sposób kanał komunikacyjny. Dopiero wtedy, kiedy
połączenie jest zrealizowane można rozpocząć rozmowę.
Analogią do komunikacji bezpołączeniowej jest wysyłanie paczki pocztą. Początkiem drogi paczki jest poczta. Nie ma jednak
gotowego środka pozwalającego natychmiast przetransportować przesyłkę z poczty do odbiorcy. Zamiast tego paczki są
grupowane i przesyłane razem najbardziej dogodną trasą. Zarówno nadawcy, jak i odbiorcy jest zupełnie obojętne jaką drogą
paczka zostanie dostarczona, ważne jest tylko to, aby transport był bezpieczny i szybki.
W przypadku wymiany danych podział pomiędzy tymi dwoma rodzajami komunikacji nie jest tak wyraźny. Komunikacja
połączeniowa może być symulowana w kanale bezpołączeniowym poprzez wymianę pakietów danych i potwierdzeń ich odbioru.
Możliwa jest też sytuacja odwrotna.
Bardzo istotnym problemem jest zapewnienie bezpieczeństwa komunikacji. W tym przypadku zagadnienie bezpieczeństwa dotyczy
nie tyle zabezpieczenia naszych danych przed "podsłuchaniem", co raczej utrzymania ciągłości połączenia w ogóle. Najniższe
warstwy modelu OSI nie realizuje żadnych funkcji związanych z bezpieczeństwem. Dopiero na wyższych poziomach istnieją
mechanizmy, i to bardzo skuteczne, które dbają o pewność połączenia.
Zależnie od tego w jaki sposób realizowana jest polityka bezpieczeństwa, rozróżniamy dwa rodzaje komunikacji, którym
odpowiadają podstawowe usługi komunikacyjne: TCP (Transport Core Protocol) i UDP (User Datagram Prorotocol).
Najpopularniejszym protokołem transmisji danych jest TCP. Bazuje on na "niższych" poziomach modelu OSI i zapewnia
"wyższym" warstwom kanał komunikacyjny zorientowany połączeniowo. TCP gwarantuje poprawność transmisji danych
pomiędzy punktami A i B, a w przypadku wystąpienia błędu wysyła do wyższych warstw odpowiedni komunikat.
Zagwarantowanie bezpieczeństwa nie jest jednak łatwym zadaniem dla protokołu transmisyjnego: TCP musi sprawdzać czy
wszystkie wysłane pakiety dotarły do adresata, a po odebraniu porcji informacji wysyła potwierdzenie do nadawcy. W przypadku
braku potwierdzenia odbioru protokół żąda ponownego wysłania aż do chwili nadejścia potwierdzenia.
Dla wyższych warstw sytuacja taka jest bardzo korzystna. Operują one na kanale transmisyjnym, nad którego bezpieczeństwem
czuwa TCP. Rozwiązanie to ma jednak pewną wadę: mechanizmy kontrolujące przepływ danych znacznie obniżają wydajność
całego systemu.
User Datagram Protocol - alternatywa dla TCP/IP
Alternatywą dla TCP jest UDP. Usługa ta bardzo przypomina pocztę pneumatyczną. Wrzucamy coś do sieci, a UDP transportuje
to z punktu A do B. Takie rozwiązanie dopuszczalne jest tylko wtedy, kiedy przesyłane dane nie są szczególnie ważne lub kiedy
aplikacja użytkowa sama sprawdza poprawność transmisji - w tym przypadku zastosowanie TCP oznaczałoby dublowanie funkcji
kontrolnych. UDP jako usługa bezpołączeniowa, nie realizująca kontroli przepływu, jest nieskomplikowana i dzięki temu szybka.
Znaczenie Ethernetu dla TCP/IP
Terminem często pojawiającym się obok TCP/IP jest Ethernet. Jest to protokół warstwy łącza danych i technologia rozsyłania
informacji w sieci. Specyfikacja Ethernetu określa wymagania dotyczące okablowania i innych parametrów technicznych.
Ethernet jest implementowany w systemach komputerowych jako oprogramowanie układowe (firmware) instalowane na kartach
interfejsu sieci. Nazwa Ethernet pochodzi od koncepcji eteru, czyli uniwersalnego nośnika fal, zarzuconej dziś, teorii fizycznej "
ETHER-net" miał być uniwersalnym nośnikiem informacji przesyłanych pomiędzy wszystkimi elementami sieci komputerowej.
Pierwsze prace nad przyszłym standardem rozpoczęła firma Xerox w ośrodku badawczym w Palo Alto (PARC) w Kalifornii. Był
to rok 1970. Zespół naukowców z Palo Alto rozpoczął prace nad realizacją wizji elektronicznego biura, która miała się ziścić w
latach dziewięćdziesiątych. Prace te były elementem koncepcji rozwoju rynkowego firmy Xerox, do tej pory znanej głównie z
produkcji maszyn kopiujących (które zresztą właśnie od nazwy tej firmy są nazywane kserokopiarkami).
W 1973 zespół z PARC był już daleko zaawansowany w badaniach nad komputerami, drukarkami i innymi urządzeniami
sieciowymi. Grupa pod kierownictwem Roberta Metcalfe'a pracowała nad znalezieniem metod przyspieszenia transmisji danych w
sieci. Prace te zostały uwieńczone sukcesem polegającym na stworzeniu technologii umożliwiającej przesyłanie danych ze
znacznie większą szybkością. Technologię tę nazwano Ethernetem. Przed powstaniem Ethernetu istniejące metody transmisji
danych zapewniały przesłanie jednej strony w rozdzielczości 600 dpi (punktów na cal) w czasie około 15 minut. Ethernet pozwolił
na skrócenie tego czasu do kilkunastu sekund. Było to naprawdę duże osiągnięcie i zapewniło nowej technologii najwyższe
uznanie. Pierwsza wersja Ethernetu, zwana dziś eksperymentalną, umożliwiała transmisję danych z szybkością około 2,6 Mbit/s.
Kolejny ważny krok stanowiło wprowadzenie w 1982 roku standardu Ethernet 2.0 przez firmy: DEC, Intel i Xerox. W tej wersji
specyfikacja określała szybkość transmisji na 10 Mbit/s, czyli prawie czterokrotnie szybciej niż w wersji eksperymentalnej.
Ethernet i TCP/IP to dwie zupełnie różne technologie, jednak gdy działają razem, pozwalają na stworzenie wydajnej sieci lokalnej.
...
smialytedd