Protokoły otwarte (TCP/IP) i inne Anna Markowska Paweł Zdanio Piotr Machałowski OSI/ISO – warstwowy model sieci W roku 1977 Midzynarodowa Organizacja Standardów ISO (International Standards Organization) opracowała pierwszy standard ISO 7498 określąjcy wzorcowy model współdziałania systemów otwartych tzw. Model Odniesienia OSI/ISO RM (Open System Interconnection Reference Model). System otwarty Przez system otwarty należy rozumie taki, który jest odpowiednio przystosowany do komunikacji z innymi systemami. System zamknięty to taki, który może komunikować się z innymi systemami wyłącznie za pośrednictwem systemów otwartych. Charakterystyczną cechą oprogramowania sieci komputerowych jest podział na warstwy. Warstwa stanowi podstawowe pojęcie wystpuajce w OSI/ISO. Kolejno nadbudowane (logicznie i fizycznie) warstwy tworzą sieć. Model OSI OSI (ang. Open System Interconnection) lub Model OSI (pełna nazwa ISO OSI RM, ang. ISO OSI Reference Model model odniesienia łączenia systemów otwartych) - standard zdefiniowany przez ISO oraz ITU-T opisujący strukturę komunikacji sieciowej. Model ISO OSI RM jest traktowany jako model odniesienia (wzorzec) dla większości rodzin protokołów komunikacyjnych. Podstawowym założeniem modelu jest podział systemów sieciowych na 7 warstw (ang. layers) współpracujących ze sobą w ściśle określony sposób. Został przyjęty przez ISO w 1984 roku a najbardziej interesującym organem jest wspólny komitet powołany przez ISO/IEC, zwany Joint Technical Committee 1- Information Technology (JTC1). Formalnie dzieli się jeszcze na podkomitety SC. Struktura warstwowa sieci Warstwy 7 APLIKACJI 6 PREZENTACJI 5 SESJI 4 TRANSPORTU 3 SIECI 2 ŁĄCZY DANYCH 1 FIZYCZNA Warstwa n w jednym komputerze prowadzi konwersację z warstw n w innym. W rzeczywistości dane nie są bezpośrednio przenoszone z warstwy n w jednym komputerze do warstwy n w innym (z wyjątkiem warstwy najniższej). Natomiast każda warstwa przekazuje dane i informacje do sąsiedniej warstwy niższego poziomu, aż dane te dotrą do warstwy położonej najniżej. Na poziomie tej warstwy następuje komunikacja fizyczna z innym komputerem. Komunikacja miedzy warstwami odbywa się według ścisłych reguł. Protokoły (protocol) to reguły i struktury danych dotyczące komunikacji między warstwami. Definicja Protokoły komunikacyjne to zbiór ścisłych reguł i kroków postępowania, które są automatycznie wykonywane przez urządzenia komunikacyjne w celu nawiązania łączności i wymiany danych. Dzięki temu, że połączenia z użyciem protokołów odbywają się całkowicie automatycznie typowy użytkownik zwykle nie zdaje sobie sprawy z ich istnienia i nie musi o nich nic wiedzieć. Porównanie warstw modelu DoD i modelu OSI OSI/ISO TCP/IP APLIKACJI APLIKACJI PREZENTACJI (aplikacje TCP/IP) : np. Telnet, FTP, SMTP SESJI TRANSPORTOWA TRANSPORTOWA (TCP, UDP) SIECI SIECI (IP ,ICM) LĄCZA DANYCH DOSTĘPU DO SIECI np. ARP, RARP FIZYCZNA Warstwa dostępu do sieci Warstwa jest odpowiedzialna za przyjmowanie datagramów IP i przesyłanie ich przez daną sieć. Zawiera protokoły ARP i RARP obsługujące niskopoziomową transmisję pakietów. Warstwa sieci (internetu) Ta warstwa odpowiada za obsługę komunikacji między maszynami. Zajmuje się przesyłaniem datagramów do odpowiedniego interfejsu sieciowego i odbieraniem datagramów przychodzących. Warstwa internetu wysyła te komunikaty kontrolne i o błędach zgodnie z protokołem ICMP i obsługuje te, które przyszły. Zawiera protokoły ICMP, IP, IGMP, RIP, OSPF i EGP. Protokół IP odpowiada za odnalezienie adresata danych w sieci. Ramki tych protokołów są transportowane przez protokoły z warstwy łącza. Warstwa transportowa Podstawowym zadaniem warstwy transportowej jest zapewnienie komunikacji między jednym programem użytkownika a drugim. Warstwa transportowa zapewnia niezawodne przesyłanie: dane przychodzą bez błędów i w kolejności. Obejmuje protokoły UDP i TCP. Pierwszy dostarcza pakiety prawie bez sprawdzania poprawności transmisji, drugi natomiast gwarantuje bezstratne ich dostarczenie. Ramki warstwy transportowej zawierają się jako dane w protokole IP z warstwy sieciowej. Warstwa aplikacji Na najwyższym poziomie użytkownicy wywołuj programy użytkowe, które mają dostęp do usług intersieci TCP/IP. Programy współpracują z jednym z protokołów na poziomie transportu i wysyłaj lub odbieraj dane. Obejmuje protokoły HTTP, SMTP, FTP, NFS, NIS, LPD, Telnet, SSH Model odniesienia TCP/IP, zwany modelem DoD (Departament of Defense), inaczej niż OSI nie przypisuje sztywno funkcji do każdej warstwy, jest więc bardziej elastyczny od modelu OSI. Podstawowa różnica między modelem OSI a DoD polega na braku stałej gwarancji dostarczania pakietów przez warstwę transportową. Protokoły TCP i IP łącznie zarządzają przepływem danych przez sieć w obydwu kierunkach. TCP/IP TCP/IP (ang. Transmission Control Protocol / Internet Protocol) jest pakietem najbardziej rozpowszechnionych protokołów komunikacyjnych współczesnych sieci komputerowych. Następca protokołu NCP. Najczęściej obecnie wykorzystywany standard sieciowy, stanowiący podstawę współczesnego Internetu. Nazwa pochodzi od dwóch najważniejszych jego protokołów: TCP oraz IP. TCP/IP jest standardem komunikacji otwartej. Otwartość oznacza tu możliwości komunikacji między dowolnymi typami urządzeń, bez względu na ich fizyczną różnorodność. TCP/IP zwany jest także stosem protokołów ze względu na strukturę warstwową, w której ramka protokołu wyższej warstwy jest zawarta jako dane w protokole warstwy niższej. IP Internet Protocol To protokół komunikacyjny warstwy sieciowej modelu OSI (warstwy internet w modelu TCP/IP). 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ą pofragmentowane, 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 (np. TCP), znajdujących się w hierarchii powyżej warstwy sieciowej. TCP Transmission Control Protocol TCP jest protokołem w pełni niezależnym i może zostać zaadaptowany do wykorzystania z innymi systemami dostarczania. Możliwe jest używanie go zarówno w pojedynczej sieci takiej jak Ethernet jak i w skomplikowanej intersieci. Własności usługi niezawodnego dostarczania TCP organizuje dwukierunkową współpracę między warstwą IP, a warstwami wyższymi, uwzględniając przy tym wszystkie aspekty priorytetów i bezpieczeństwa. Musi prawidłowo obsłużyć niespodziewane zakończenie aplikacji, do której właśnie wędruje datagram, musi również bezpiecznie izolować warstwy wyższe - w szczególności aplikacje użytkownika - od skutków awarii w warstwie protokołu IP. Scentralizowanie wszystkich tych aspektów w jednej warstwie umożliwia znaczną oszczędność nakładów na projektowanie oprogramowania. TCP rezyduje w modelu warstwowym powyżej warstwy IP. Warstwa ta jest jednak obecna tylko w tych węzłach sieci, w których odbywa się rzeczywiste przetwarzanie datagramów przez aplikacje, tak więc nie posiadają warstwy TCP na przykład routery, gdyż warstwy powyżej IP nie miałyby tam nic do roboty. Cechy charakterystyczne 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 przesłania w jedną stronę, bez potwierdzenia odbioru, niewielkiej paczki danych zwanych datagramem. IPX/SPX IPX/SPX - jest to zestaw protokołów firmy Novell, bierze on nazwę od swoich dwóch głównych protokołów: międzysieciowej wymiany pakietów IPX i sekwencyjnej wymiany pakietów SPX. Ten firmowy stos protokołów został oparty na protokole systemów sieciowych firmy Xerox, wykorzystywanym w pierwszej generacji Ethernet. Wymiana IPX/SPX zyskała na znaczeniu we wczesnych latach 80, jako integralna część systemu Novell Netware. Netware stał się faktycznym standardem sieciowego systemu operacyjnego dla sieci lokalnych pierwszej generacji IPX Internetwork Packet Exchange to protokół warstwy sieciowej (trzeciej warstwy modelu OSI) będący częścią stosu IPX/SPX. Zorientowany na bezpołączeniowe przesyłanie danych. Nie posiada mechanizmów kontroli transmisji i nie gwarantuje, że wszystkie pakiety dotrą na miejsce. Bardzo popularny w latach dziewięćdziesiątych, aktualnie wyparty przez protokół IP ze stosu TCP/IP. IPX a IP Protokół IPX w dużym stopniu przypomina IP. Jest bezpołączeniowym protokołem datagramowym, który nie wymaga ani nie zapewnia potwierdzenia każdego transmitowanego pakietu. Protokół IPX polega na SPX w taki sam sposób, w jaki protokół IP polega na TCP w zakresie porządkowania kolejności i innych usług połączeniowych warstwy 4. Stos protokołów IPX/SPX obejmuje cztery warstwy funkcjonalne: dostępu do nośnika, łącza danych, Internetu i aplikacji. IPX Protokół IPX jest obecnie czasem stosowany w sieciach ze względów bezpieczeństwa. Polega to na tym, że ruch zewnętrzny (Internet) obsługuje się klasycznie - protokołem IP, zaś ruch LAN (w szczególności sieć Windows czy Novell) obsługuje się protokołem IPX (często używając innej ramki Ethernet, np. 802.2 dla IP, 802.3 dla IPX). Powoduje to, że nie można się dostać do stacji Windows poprzez protokół IP do usług LAN, gdyż protokoły sieci windowsowej dostępne są wyłącznie na IPX, który nie jest routowany na zewnątrz. Jest to dobre rozwiązanie dodatkowo zabezpieczające przed potencjalnymi błędami w regułach na FW, systemowo blokujące (bez żadnych filtrów) dostęp do sieci Windows poprzez IP. Warto pamiętać, że ataki na usługi otoczenia sieciowego Windows to najczęstszy sposób instalowania trojanów, wirusów i przejmowania kontroli nad komputerami z Windows. Po wyłączeniu (lub przepięciu na IPX) usług LAN, komputer z Windows staje się znacznie bezpieczniejszy. Dodatkową korzyścią jest niemożliwość podsłuchiwania transmisji LAN znaczną częścią narzędzi przez "script-kiddies", gdyż większość narzędzi nie rozumie protokołu IPX (lub trzeba użyć dodatkowych opcji). SPX Protokół warstwy Internetu SPX jest protokołem połączeniowym i może być wykorzystywany do przesyłania danych między klientem serwerem, dwoma serwerami czy dwoma klientami. Tak jak w przypadku TCP, protokół SPX zapewnia niezawodność transmisjom IPX, zarządzając połączeniem i udostępniając sterowanie strumieniem danych, kontrolę błędów i porządkowanie kolejnych pakietów. Głównym protokołem warstwy aplikacji jest protokół rdzenia NetWare (NCP). Protokół NCP można bezpośrednio sprzęgnąć zarówno z protokołem SPX, jak i IPX. Jest wykorzystywany do drukowania, współdzielenia plików, poczty elektronicznej i dostępu do katalogów. Innymi protokołami warstwy aplikacji są: protokół informacyjny trasowania, firmowy protokół ogłoszeniowy usługi i protokół obsługi łącza systemu NetWare. AppleTalk Jest to pakiet protokołów komunikacyjnych stworzonych przez firmę Apple Computer w roku 1984, umożliwiających tworzenie sieci komputerowych i podstawowych usług sieciowych dla komputerów Macintosh i innych produktów tej firmy. Lecz po pewnym czasie firma Apple Computer zaprzestała rozwoju AppleTalk i zaczęła wykorzystywać w swych produktach TCP/IP, który stawał się coraz popularniejszy. Niektóre protokoły wchodzące w skład AppleTalk: AppleTalk Address Resolution Protocol(AARP) - Zadaniem tego protokołu była zmiana adresu sieciowego AppleTalk na adres fizyczny MAC, jest odpowiednikiem protokołu ARP. Datagram Delivery Protocol(DDP) - Służył do szybkiego, bezpołączeniowego przesyłania datagramów ,bez gwarancji na ich dostarczenie (Podobnie jak protokół UDP w TCP/IP) AppleTalk Transaction Protocol(ATP) - Służył do połączeniowej wymiany datagramów między klientami. Klient 1 wysłał jeden "pakiet zadanie" ,następnie klient 2 odpowiadał maksymalnie ośmioma "pakietami odpowiedzi", po czym klient 1 odpowiadał "pakietem zatwierdzającym" z bit-maską "pakietów odpowiedzi" jaką dostał. AppleTalk Data Stream Protocol(ADSP) - Został dodany do AppleTalk gdy okazało się że jest potrzebny protokół podobny do TCP w TCP/IP. W odróżnieniu od ATP czy ASP pozwalał na odrzucenie próby połączenia. AppleTalk Filing Protocol(AFP) - służył do komunikacji z serwerami plików AppleShare. Nadal jest stosowany pod nazwą Apple Filing Protocol. NetBEUI Interfejs NetBEUI został opracowany przez IBM i wprowadzony na rynek w 1985 roku. Jest stosunkowo małym ale wydajnym protokołem komunikacyjnym LAN. NetBEUI jest wyłącznie protokołem transportu sieci LAN dla systemów operacyjnych Microsoft. Nie jest trasowany. Dlatego jego implementacje ograniczają się do warstwy 2, w których działają wyłącznie komputery wykorzystujące systemy operacyjne firmy Microsoft. Aczkolwiek staje się to coraz mniejszą przeszkodą, to jednak ogranicza dostępne architektury obliczeniowe i aplikacje technologiczne. Zalety korzystania z protokołu NetBEUI są następujące: Komputery korzystające z systemów operacyjnych lub oprogramowania sieciowego firmy Microsoft mogą się komunikować. NetBEUI jest w pełni samodostrajającym się protokołem i najlepiej działa w małych segmentach LAN. Ma minimalne wymagania odnośnie pamięci. Zapewnia doskonałą ochronę przed błędami transmisji, a także powrót do normalnego stanu w razie ich wystąpienia. Wadą protokołu NetBEUI jest fakt, że nie może być trasowany i niezbyt dobrze działa w sieciach WAN.