Rozdział 4.
Warstwa interfejsu sieciowego
W tym rozdziale:
Warstwa interfejsu sieciowego — omówienie
Standardy sterowania dostępem do nośnika
Odwzorowanie adresów fizycznych na adresy IP
TCP/IP można odwzorować na czterowarstwowy model DARPA. Model ten został opracowany przez biuro rządu USA DARPA (Defense Advanced Research Project Agency — biuro zaawansowanych obronnych projektów badawczych). Warstwa interfejsu sieciowego (Network Interface Layer), zwana również warstwą dostępu do sieci (Network Access Layer), jest drugą warstwą tego modelu. Odpowiada ona części warstwy fizycznej lub kompletnej warstwie łącza danych modelu odniesienia OSI.
Bieżący rozdział przedstawia warstwę interfejsu sieciowego i rolę, jaką odgrywa w transmisji danych. Dane przesyłane są w postaci małych porcji, które w każdej warstwie noszą określoną nazwę. W warstwie interfejsu sieciowego porcje noszą na przykład nazwę ramek (frame), lecz ogólna nazwa dla tych porcji we wszystkich warstwach to pakiety. Niniejszy rozdział omawia takie zagadnienia, jak zawartość pakietów i najpopularniejszy typ ramki (Ethernet), różnorodne standardy sterowania dostępem do nośnika, odpytywanie stosowane w ATM i ARCnet oraz przekazywanie żetonu w Token Ring. Scharakteryzowane zostały także sposoby odwzorowania podczas transmisji fizycznych adresów komputerów na odpowiadające im adresy IP za pomocą ARP. W szybko zdobywających popularność sieciach ATM adresy IP hostów sieciowych są mapowane na adresy fizyczne za pomocą ATMARP.
Warstwa interfejsu sieciowego
— omówienie
Adresy MAC, sterowniki kart sieciowych i określone interfejsy kart sieciowych funkcjonują w warstwie interfejsu sieciowego. Chociaż warstwa ta zajmuje się przede wszystkim komunikacją z kartami sieciowymi i innym sprzętem sieciowym, nie są obecne w tej warstwie funkcje protokołu IP. Oznacza to, iż warstwa internetowa nie może korzystać z żadnych usług potwierdzeń lub sekwencjonowania, które mogłyby istnieć w warstwie interfejsu sieciowego. Łączność mogłaby nie być wiarygodna. Wobec tego wiarygodność komunikacji zapewniają warstwy powyżej warstwy interfejsu sieciowego.
|
Chociaż warstwa interfejsu sieciowego odpowiada części warstwy fizycznej w modelu odniesienia OSI, nie bierze udziału w samej transmisji danych. |
Urządzenia sieciowe skojarzone z warstwą interfejsu sieciowego to:
NIC (karty interfejsu sieciowego),
mosty,
koncentratory inteligentne.
Do podstawowych obowiązków tej warstwy należą:
identyfikacja węzłów (komputerów) w sieci,
organizacja odebranych z nośnika sieci bitów w logiczne grupy, zwane ramkami, oraz nadzór nad rozmiarami ramek,
przekształcanie adresów IP na adresy LAN,
sterowanie przepływem danych,
pakowanie i nadawanie danych wychodzących,
wykrywanie błędów (lecz bez korygowania),
udostępnianie usług (na przykład jakości usług — Quality of Service) i zdolności do adresowania (unicast, adresowanie grupowe i rozgłoszenia) warstwie internetowej (zwanej czasem warstwą międzysieciową).
TCP/IP został zaprojektowany tak, by był niezależny od różnic w metodach dostępu do sieci, formatach ramek, czy też nośnikach transmisji. Dzięki temu TCP/IP może służyć do łączenia mieszanych typów sieci — technologii obejmujących sieci lokalne (jak np. Ethernet czy też Token Ring) oraz rozległe (na przykład X.25 i Frame Relay). Brak zależności od określonej technologii sieciowej pozwala na łatwą adaptację TCP/IP dla nowych technologii, takich jak ATM (Asynchronous Transfer Mode — asynchroniczny tryb transmisji).
Z technologii wymienionych powyżej najpowszechniej używany jest Ethernet. Komputery podłączone do sieci Ethernet do przesyłania między sobą danych używają protokołów wysokiego poziomu, takich jak TCP/IP. Pakiety takich protokołów są przesyłane pomiędzy komputerami w postaci ramek Ethernet.
Zawartość ramki Ethernet
Jak już wspomniano, pakiety danych w warstwie interfejsu sieciowego noszą nazwę ramek. W systemie Ethernet urządzenia komunikują się ze sobą za pomocą ramek Ethernet. Ramka taka składa się z ciągu bitów zorganizowanych w pola, do których należą różne pola adresów, pole danych i pole kontroli błędów, które nadzoruje poprawność danych zamkniętych w ramkę. Pole danych może mieć rozmiary od 46 do 1500 bajtów. Rysunek 4.1 przedstawia jeden z bardziej popularnych formatów ramek Ethernet — IEEE 802.3.
Rysunek 4.1. Format ramki Ethernet IEEE 802.3 |
|
|
|
Obecnie dostępnych jest wiele wersji ramek Ethernet, między innymi: IEEE 802.3 (tzw. standardowy Ethernet), DIX Ethernet (DEC/Intel/Xerox) — inaczej nazywany Version II Ethernet lub Ethernet_II, IEEE 802.3 SNAP (inaczej Ethernet_SNAP) i tak dalej. Należy zwrócić uwagę, iż wersje te niekonieczne są ze sobą nawzajem zgodne. |
Specyfikacja IEEE 802.3 obejmuje 14-bajtowy nagłówek łącza danych (Data Link), po którym następuje 3-bajtowy nagłówek sterowania łączem logicznym (LLC — Logical Link Control). Nagłówek łącza danych podaje adres węzła docelowego i nadawcy oraz długość danych w ramce. Nagłówek sterowania łączem logicznym wskazuje na bufor pamięci węzła odbierającego, w którym dane będą składowane — co pozwala wyższym warstwom łatwo zlokalizować dane. Następnie są pola zawierające dane użytkownika i ciągu kontrolnego ramki (FCS — Frame Check Sequence).
|
Ethernet_II i Ethernet_802.3 (inaczej Novell Proprietary) nie posiadają nagłówka LLC. Ethernet_SNAP, podobnie jak implementacja IEEE 802.3, zawiera nagłówek LLC, a oprócz tego 5-bajtowy nagłówek protokołu dostępu do podsieci (SNAP — Sub-Network Access Protocol), zajmujący bajty od 18 do 22. |
Do pól ramki Ethernet IEEE 802.3 należą:
Ciąg wstępny — niezależnie od używanego typu ramki, sygnały we wszystkich sieciach Ethernet są kodowane na taki sam sposób — za pomocą kodu Manchester. Skuteczność tej metody wymaga spełnienia dwóch warunków: synchronizacji wewnętrznych zegarów wszystkich komputerów w sieci Ethernet oraz wstępnego ustalenia czasu trwania każdego bitu podczas transmisji. Oba te warunki pozwala spełnić ciąg wstępny (preamble), czyli sekwencja jedynek i zer poprzedzająca faktyczną ramkę Ethernet. Ciąg wstępny składa się z ośmiu bajtów, zawierających na przemian zera i jedynki, i kończy się dwiema jedynkami. Gdy komputer w sieci Ethernet nadaje ramkę, pozostałe komputery używają ciągu wstępnego do synchronizacji z wewnętrznym zegarem nadawcy. Ponieważ synchronizacja zajmuje jakiś czas, pierwsze bity ciągu wstępnego są zasadniczo tracone. Po osiągnięciu synchronizacji między nadawcą i odbiorcą, odbiorca czeka na sekwencję „11”, która oznacza, iż następna będzie ramka Ethernet. Ponieważ ciąg wstępny służy jedynie do synchronizacji komputerów, jego bity nie są wprowadzane do bufora w pamięci karty sieciowej.
Adres docelowy — pierwsze sześć bajtów ramki, o numerach od 0 do 5, składa się na adres węzła (komputera) docelowego. Niezależnie od typu ramki Ethernet, format adresu docelowego pozostaje taki sam we wszystkich implementacjach.
|
Gdy wszystkie bity adresu docelowego mają wartość 1, wówczas komunikat jest typu rozgłoszeniowego i zostaje odebrany przez wszystkie węzły w segmencie. |
Adres źródłowy — następne sześć bajtów ramki, o numerach od 6 do 11, podaje adres węzła nadawcy. Podobnie jak dla adresu docelowego, format adresu źródłowego pozostaje taki sam we wszystkich implementacjach Ethernetu.
Długość — następne dwa bajty o numerach 12 i 13 określają długość ramki danych, z pominięciem ciągu wstępnego, 32-bitowej wartości CRC, adresu DLC i samego pola Długość.
|
Minimalna długość ramki Ethernet wynosi 64 bajty, zaś maksymalna 1518 bajtów. |
Punkt dostępu do usługi docelowej (DSAP — Destination Service Access Point) — następny bajt, o numerze 15, wskazuje adres bufora pamięci, w którym węzeł odbiorcy powinien składować odebrane dane. Pole to gra ważną rolę w węzłach posiadających wiele stosów protokołów.
Punkt dostępu do usługi źródłowej (SSAP — Source Service Access Point)
— następny bajt, o numerze 16, wskazuje adres procesu wysyłającego ramkę.
Bajt kontrolny — następny bajt, o numerze 17, podaje typ ramki LLC.
Dane — od 43 do 1497 bajtów to dane użytkownika. Długość tego pola jest zmienna.
Ciąg kontrolny ramki (FCS — Frame Check Sequence) — ostatnie cztery bajty nazywane są też bajtami cyklicznej kontroli nadmiarowej (CRC — Cyclic Redundancy Check). Gdy odbiorca otrzymuje pakiet, wówczas oblicza jego sumę kontrolną za pomocą złożonego wielomianu, a następnie porównuje otrzymany wynik z czterema ostatnimi bajtami ramki. Jeśli sumy kontrole nie zgadzają się ze sobą, ramka zostaje uznana za uszkodzoną i odrzucona. Zapewnia to wykrywanie błędów transmisji i zachowanie poprawności odebranych ramek.
Typowe składniki pakietu sieciowego
Pakiet jest blokiem danych, wysłanym przez sieć. W różnych warstwach nosi on różne nazwy:
W warstwie fizycznej pakiet nosi nazwę bitów.
W warstwie interfejsu sieciowego pakiet nazywany jest ramką.
W warstwie internetowej pakiet nazywany jest datagramem.
W warstwie transportowej pakiet nazywany jest segmentem.
W warstwie aplikacji pakiet nosi nazwę komunikatu.
Podczas transmisji każda warstwa dodaje własne dane do pakietu, który pochodzi z warstwy aplikacji. Lecz niezależnie od warstwy, każdy pakiet zawiera podobne składniki:
Nagłówek — zawiera adres źródłowy, adres docelowy i typ ramki. Adres źródłowy oznacza adres węzła, z którego pochodzi pakiet. Adres docelowy zawiera adres węzła, który będzie przetwarzać informacje zawarte w pakiecie. Nagłówek zawiera ponadto dwubajtowe pole typ ramki, dzięki któremu pakiet sam się identyfikuje. Oznacza to, iż po dotarciu pakietu do węzła przeznaczenia, system operacyjny węzła używa pola typu ramki do identyfikacji oprogramowania protokołu, które będzie przetwarzać pakiet. Pole typu ramki pozwala na jednoczesną obsługę i używanie przez węzeł wielu protokołów.
Dane (inaczej informacje) — to pole zawiera zdefiniowane przez użytkownika dane, które należy przesłać siecią z jednego węzła do drugiego. Długość tego pola jest zmienna, w granicach określonych przez używany protokół.
CRC (lub FCS) — to pole ma długość czterech bajtów i pomaga wykrywać ewentualne błędy transmisji. Nadawca wysyła wynik cyklicznej kontroli nadmiarowej danych zawartych w pakiecie. Gdy odbiorca otrzymuje pakiet, wówczas przelicza ponownie CRC. Jeśli wyniki są zgodne, dane są wolne od błędów. W przeciwnym razie pakiet zostaje odrzucony.
Standardy sterowania dostępem do nośnika
Jeśli sieć zawiera dużą liczbę urządzeń, zdolnych do wysyłania danych gdy sieć jest na to gotowa, istnieje wysokie prawdopodobieństwo równoczesnego nadawania przez dwa lub więcej urządzeń. W takich sytuacjach w nośniku transmisji (na przykład w kablu) obecnych jest więcej sygnałów niż jeden, co powoduje uszkodzenie sygnałów i utratę przenoszonych przez nie danych. Zdarzenie takie nosi nazwę kolizji i niszczy łączność.
|
Potocznie nośnik transmisji jest nazywany kanałem. |
Aby sieć działała wydajnie, kolizje powinny zostać ograniczone lub wyeliminowane. Sieci stosują określone reguły, zwane standardami sterowania dostępem do kanału, decydujące, kiedy urządzenie ma prawo wysłać pakiet danych.
Różne topologie używają różnych standardów sterowania dostępem do nośnika. Na przykład, Ethernet obsługuje rywalizację, ARCnet odpytywanie, zaś Token Ring przekazywanie żetonu.
Ethernet
Ethernet do kontroli nad występowaniem kolizji stosuje metodę rywalizacji o dostęp (ang. contention) (przedstawiona na rysunku 4.2). W tej metodzie dostęp do nośnika jest przyznawany na zasadzie „kto pierwszy, ten lepszy”, co oznacza konieczność rywalizacji o dostęp do nośnika ze strony każdego urządzenia sieciowego. Gdy urządzenie chce wysyłać dane, wysyła do nośnika transmisji własny sygnał. W tej metodzie istnieje duże prawdopodobieństwo równoczesnego umieszczenia sygnałów w nośniku przez dwa lub więcej urządzeń, co prowadzi do kolizji.
Rysunek 4.2. Metoda rywalizacji o dostęp |
|
|
|
Im więcej urządzeń w sieci, tym większe prawdopodobieństwo kolizji. |
Aby ograniczyć liczbę kolizji w sieci Ethernet, opracowano protokoły rywalizacji noszące nazwę wielodostęp z badaniem stanu kanału (CSMA — Carrier Sense Multiple Access). Do CSMA należą CSMA/CD (Carrier Sense Multiple Access with Collision Detection — wielodostęp z badaniem stanu kanału i wykrywaniem kolizji) oraz CSMA/ CA (Carrier Sense Multiple Access with Collision Avoidance — wielodostęp z badaniem stanu kanału i unikaniem kolizji). Protokoły te nakazują urządzeniom nasłuchiwać w nośniku transmisji przed nadawaniem. Jeśli stwierdzony zostanie brak wszelkich sygnałów w nośniku, wówczas w celu transmisji umieszczają tam własny sygnał. W przeciwnym razie CSMA czeka na zwolnienie nośnika. Chociaż protokoły CSMA zmniejszają prawdopodobieństwo wystąpienia kolizji, nie eliminują go całkowicie. Kolizje wciąż mogą zajść, gdy dwa urządzenia nie wykryją sygnału w nośniku i równocześnie wyślą swoje sygnały.
CSMA/CD
Protokół CSMA/CD nakazuje urządzeniom sieciowym nasłuchiwać w nośniku transmisji przed nadaniem sygnału, a ponadto pomaga urządzeniom wykrywać kolizje. Gdy kolizja zostanie wykryta, wszystkie urządzenia w sieci powstrzymują się od nadawania danych przez określony czas. Po jego upłynięciu urządzenia zaczynają rywalizować o nośnik. Do przykładów protokołów CSMA/CD należą Ethernet_II oraz IEEE 802.3.
CSMA/CA
Protokół CSMA/CA w bardzo dużym stopniu redukuje prawdopodobieństwo kolizji, stosując jedną z dwóch technik: albo każde urządzenie posiada ustalony przedział czasowy na transmisję, albo wysyła do nośnika transmisji żądanie dostępu przed wysłaniem danych. W pierwszej metodzie każdemu urządzeniu przydzielany jest określony przedział czasowy, na który musi czekać, aby móc nadawać. Żadne inne urządzenie nie może przeprowadzić transmisji w tym przedziale czasowym. W ten sposób protokół CSMA/CA pomaga uniknąć kolizji. Jednym z przykładów takich protokołów jest LocalTalk firmy Apple.
ARCnet
ARCnet używa topologii okablowania typu „połączone gwiazdy”, w której sterowanie dostępem urządzenia do nośnika transmisji odbywa się za pomocą metody odpytywania (polling). W tej metodzie oprogramowanie protokołu wyznacza jedno urządzenie do roli głównego (master), inaczej podstawowego lub kontrolera, zaś pozostałe są urządzeniami wtórnymi (podrzędnymi). Urządzenie główne odpytuje po kolei wszystkie urządzenia podrzędne w ustalony z góry sposób, aby sprawdzić, czy chcą wysyłać informacje. Gdy któreś chce wysłać dane, wówczas urządzenie główne wysyła do niego pakiet żądania. W odpowiedzi na ten pakiet urządzenie podrzędne wysyła dane do urządzenia głównego, które z kolei pakiet danych przesyła dalej, do segmentu, w którym znajduje się zamierzony odbiorca. Objętość danych, jaką urządzenie podrzędne może nadać po odpytaniu, jest ograniczona przez protokół. Rysunek 4.3 przedstawia metodę odpytywania używaną przez ARCnet.
Rysunek 4.3. Metoda dostępu z odpytywaniem |
|
|
|
Urządzenie główne nosi inaczej nazwę administratora dostępu do kanału. |
W przypadku niektórych aplikacji mogą powstawać opóźnienia spowodowane odpytywaniem w tym czasie innych; sprawę kolejności odpytywania możemy rozwiązać przez nadanie priorytetów. Ponadto metoda odpytywania umożliwia całkowite wykorzystanie przepustowości nośnika transmisji, ponieważ całkowicie eliminuje prawdopodobieństwo kolizji.
|
Sieci stosujące systemy odpytywania najlepiej nadają się dla urządzeń sieciowych, dla których ważny jest czas reakcji, na przykład dla urządzeń automatyki. |
Token Ring
Sieci oparte na topologii Token Ring do sterowania dostępem urządzenia do nośnika transmisji używają metody przekazywania żetonu (inaczej sztafetowej). W tej metodzie specjalna ramka danych, zwana żetonem (token), krąży w całej sieci. Każde urządzenie „wie”, od którego odebrało żeton, i do którego powinno go przesłać. Urządzenie, które chce nadawać dane, przechwytuje żeton, co daje mu chwilową kontrolę nad nośnikiem transmisji. Urządzenie nadające używa ramki żetonu do opakowania danych, które chce wysłać, a następnie umieszcza żeton w nośniku. Każde urządzenie odbierające po drodze ramkę sprawdza, czy jest jej zamierzonym adresatem. Jeśli tak, wówczas przyjmuje dane i odsyła żeton do nadawcy. W przeciwnym razie żeton zostaje przekazany do następnego urządzenia. Żeton pozostaje przechwycony, dopóki urządzenie nadające nie zakończy transmisji, po czym żeton jest „uwalniany”. Rysunek 4.4 przedstawia metodę dostępu z przekazywaniem żetonu, używaną w sieciach Token Ring.
Rysunek 4.4. Metoda dostępu z przekazywaniem żetonu |
|
Przekazywanie żetonu rozkłada sterowanie dostępem na wszystkie urządzenia sieciowe. Okres, przez który urządzenie ma prawo posiadać żeton, jest ograniczony przez odpowiednie protokoły. Każde urządzenie po kolei otrzymuje kontrolę nad ramką żetonu, nadaje dane i zwalnia żeton na użytek następnego urządzenia.
|
Metoda dostępu z przekazywaniem żetonu jest idealna dla sieci, gdzie sygnały — na przykład, audio i wideo — muszą być przesyłane na czas i z ustalonymi priorytetami. |
ATM
Sieci ATM (Asynchronous Transfer Mode — tryb przesyłania asynchronicznego) zostały obwieszczone wschodzącą gwiazdą technologii sieciowych, ponieważ zapewniają wyjątkowo szybkie i niezawodne przesyłanie danych na małe i duże odległości. ATM obsługuje szeroki zakres aplikacji, w tym tradycyjne przesyłanie danych oraz łączność audio i wideo w czasie rzeczywistym.
ATM posiada wiele zalet w porównaniu z konwencjonalnymi sieciami lokalnymi, przede wszystkim elastyczność w korzystaniu z różnorodnych nośników z różnymi prędkościami transmisji. ATM może stosować w roli nośnika kable koncentryczne, skrętkę i światłowody, z przepustowością w zakresie od 25 Mb/s do 2,5 Gb/s. Standardowa prędkość sieci to 155 Mb/s w nośniku światłowodowym. Sumaryczna przepustowość wzrasta wraz z dodawaniem nowych hostów w sieci.
ATM opiera się na sieci połączonych ze sobą przełączników i hostów, które tworzą razem połączoną gwiazdę. Ponieważ sieci ATM opierają się na topologii gwiazdy, korzystają z metody dostępu z odpytywaniem. Przełącznik ATM pełni funkcję koncentratora w centrum gwiazdy oraz administratora dostępu do kanału.
Kanały wirtualne ATM opiera się na modelu zorientowanym na połączenia, który używa kanałów wirtualnych do szybkiego transferu danych, synchronicznego lub asynchronicznego. Inaczej mówiąc, ATM wymaga utworzenia wirtualnego połączenia dwupunktowego, zanim będzie można przesłać dane. Połączenia te noszą nazwę kanałów wirtualnych (VC — Virtual Channel). Kanał wirtualny przesyła pomiędzy punktami końcowymi pakiety (cell) o stałej, 53-bajtowej długości. Każdy kanał wirtualny składa się z identyfikatora kanału wirtualnego (VCI — Virtual Channel Identifier) oraz identyfikatora trasy wirtualnej (VPI — Virtual Path Identifier), które zawarte są w 5-bajtowym nagłówku pakietu, co umożliwia identyfikację dla właściwej komutacji w przełączniku ATM z portu wejściowego do portu wyjściowego. Ponieważ kanał wirtualny obejmuje wiele łączy, VCI może potencjalnie zmieniać się dla każdego łącza. Gdy kanał wirtualny zostaje utworzony, przełącznik ATM tworzy i utrzymuje wpis w tablicy, przypisujący nadchodzące VCI na porcie wejściowym do wychodzących VCI na porcie wyjściowym. Algorytm ATM z uwagi na prostotę może być łatwo implementowany sprzętowo. Oprogramowanie wymagane jest jedynie do zarządzania połączeniami i utrzymywania tablicy komutacji. |
Aby pomyślnie komunikować się z innymi komputerami, każde urządzenie musi być właściwie identyfikowane w unikatowy sposób. Nie stanowi to problemu w sieci LAN, ponieważ w niej liczba urządzeń nie jest wyjątkowo wysoka i można do ich identyfikacji użyć adresów fizycznych. Adres fizyczny, czyli adres sterowania dostępem do nośnika (MAC — Media Access Control), jest zakodowany w sposób trwały w karcie interfejsu sieciowego urządzenia. Jednakże stosowanie adresów MAC do identyfikacji urządzeń sieciowych nie jest możliwe w dużych, mieszanych i globalnych systemach sieciowych, takich jak Internet. Aby możliwa była w nich łączność, każdy komputer z dowolnej sieci musi być zdolny do komunikacji z wszystkimi innymi komputerami, niezależnie od ich nazw.
Aby umożliwić komunikację globalną, opracowano system nazewniczy, w którym każdemu komputerowi przydzielony jest unikatowy, 32-bitowy adres internetowy, czyli adres IP. Przykładowy adres IP może wyglądać tak:
10000000 000010000 00000111 00011111
Chociaż powyższy ciąg jest unikatowy, dla użytkowników jest trudny do zapamiętania. Wobec tego adresy IP są zapisywane w postaci czterech dziesiętnych liczb naturalnych, oddzielonych od siebie kropkami. Każda liczba reprezentuje bajt (oktet). Taka forma zapisu nosi nazwę notacji dziesiętnej rozdzielonej kropkami (dotted decimal notation). Jeśli przekształcimy powyższy adres na tę notację, otrzymamy coś takiego:
128.8.7.31
|
Dodatkowe informacje o adresach IP zawiera rozdział 5. |
Adres IP podzielony jest na dwie części: adres sieci i adres hosta. Adres sieci identyfikuje sieć, do której host jest podłączony. Adres hosta, jak wskazuje nazwa, reprezentuje adres urządzenia (hosta) w sieci. Jak za pomocą adresu IP nadawca znajduje właściwego hosta docelowego, zwłaszcza położonego w innej sieci? Inaczej mówiąc, w jaki sposób komputer-nadawca kojarzy adres IP hosta docelowego z jego adresem fizycznym?
Odwzorowanie adresów fizycznych na adresy IP
Gdy komputer komunikuje się z innym, położonym w innej sieci, odwzorowanie adresów musi odbyć się dwukrotnie:
Nadawca musi odwzorować adresy pośredniczących ruterów, które znajdują się po drodze do sieci docelowej, tak by dane mogły dotrzeć do pożądanej sieci.
Nadawca musi również odwzorować adres IP komputera docelowego na jego adres fizyczny, aby dane dotarły do właściwego hosta.
Odwzorowanie adresów wysokiego poziomu (adresów IP) na adresy sprzętowe (niskiego poziomu) nosi nazwę rozwiązywania adresu (address resolution). Adresy mogą być rozwiązywane w różny sposób. Na przykład, każdy komputer w sieci może utrzymywać tablicę, która przypisuje adresy wysokiego poziomu do odpowiadających im adresów fizycznych; adresy fizyczne mogą też być zakodowane w adresach wysokiego poziomu. Jednakże obie te metody zużywają dużo zasobów i wymagają pracy administratora.
Aby poradzić sobie z problemem rozwiązywania nazw bez dodatkowego obciążenia i ręcznej obsługi w każdym komputerze, opracowane zostały protokoły ARP i RARP. Obecnie należą one do najczęściej stosowanych technik rozwiązywania adresów. Razem z nową technologią ATM pojawił się nowy, lecz szybko zdobywający popularność, protokół ATMARP (Asynchronous Transfer Mode Address Resolution Protocol).
ARP i RARP
Gdy karta sieciowa ulega awarii i zostaje wymieniona, adres fizyczny komputera również ulega zmianie. Powoduje to problemy, gdy każdy komputer utrzymuje tablicę odwzorowującą adresy IP na odpowiadające im adresy fizyczne. W tym przypadku trzeba ręcznie zmodyfikować tablice we wszystkich komputerach. ARP (Address Resolution Protocol — protokół rozwiązywania nazw) umożliwia zastępowanie urządzeń w istniejącej sieci i dodawanie nowych bez konieczności ręcznych zmian w tablicach utrzymywanych przez każdy komputer. ARP jest protokołem niskiego poziomu, który dynamicznie wiąże adresy IP urządzeń sieciowych z ich adresami fizycznymi, korzystając z funkcjonalności rozgłoszeń dostępnej w sieci.
|
Gdy protokół współpracuje bezpośrednio ze sprzętem, wówczas jest protokołem niskiego poziomu (low-level). |
W ARP komputer, który chce znaleźć fizyczny adres innego komputera, rozgłasza specjalny pakiet. Pakiet ten zawiera żądanie skierowane do hosta o danym adresie IP, aby odpowiedział podając swój adres fizyczny. Ponieważ pakiet jest komunikatem rozgłoszeniowym, odbierają go wszystkie urządzenia. Jednakże tylko host, którego żądanie dotyczy, rozpoznaje w nim swój adres IP i odpowiada podając własne adresy IP i fizyczny.
Rozgłoszenia zużywają sporą część przepustowości nośnika, dlatego komputery używające ARP utrzymują pamięć podręczną rozwiązanych adresów, która zawiera ostatnio odebrane powiązania IP z adresami fizycznymi. Gdy komputer chce wysłać dane, w pierwszej kolejności usiłuje pobrać potrzebny adres z pamięci podręcznej. W razie powodzenia nie musi rozgłaszać żądania rozwiązania adresu, co zmniejsza znacząco liczbę rozgłoszeń, a co za tym idzie, koszt połączenia i ruch sieciowy.
Funkcjonalnie można podzielić ARP na dwie części. Jedna odwzorowuje adresy IP na odpowiadające im adresy fizyczne, zaś druga ma za zadanie odpowiadać na żądania rozwiązania adresów odbierane z innych komputerów. Odwzorowanie adresów IP na adresy fizyczne i odpowiadanie na żądania rozwiązania adresów może wydawać się proste, lecz poniższe sytuacje mogą powodować problemy:
Komputer docelowy jest wyłączony lub zbyt zajęty, by przyjąć żądanie ARP. W tym przypadku nadawca może nie otrzymać odpowiedzi, lub otrzymać z opóźnieniem. To może powodować zawieszenie niektórych aplikacji w komputerze źródłowym do czasu, gdy żądanie ARP zostanie przetworzone.
Nadawca niedawno otrzymał odwzorowanie adresu z innego komputera, w którym karta sieciowa w tym czasie została wymieniona. Chociaż adres fizyczny również uległ zmianie, wpis w pamięci podręcznej nadawcy pozostał niezmieniony. Kolejnym razem, gdy nadawca wyśle dane do komputera docelowego, transmisja pomiędzy nimi będzie niemożliwa.
ARP utrzymuje pamięć podręczną odwzorowań adresów IP na MAC do wykorzystania w przyszłości, co również pozwala znacząco zmniejszyć liczbę rozgłoszeń w sieci. Pamięć podręczna ARP może zawierać dwa typy wpisów:
Wpisy dynamiczne — dodawane i usuwane automatycznie z pamięci podręcznej ARP w ustalonych odstępach czasu.
Wpisy statyczne — pozostają w pamięci ARP aż do restartu komputera.
Wpisy dynamiczne mogą pozostać w pamięci podręcznej ARP przez najwyżej dziesięć minut. Nowe wpisy do pamięci podręcznej otrzymują znaczniki czasowe. Jeśli wpis nie zostanie ponownie użyty w przeciągu dwóch minut od dodania do pamięci podręcznej, wówczas jest z niej usuwany. Jeśli zostanie użyty, otrzymuje kolejne dwie minuty czasu ważności. Jeśli wpis używany jest regularnie, za każdym razem otrzymuje dodatkowe dwie minuty aż do maksymalnej wartości dziesięciu minut, po których zostaje usunięty.
Pamięć podręczna ARP posiada określoną wielkość, która nie może przekroczyć ustalonego limitu. Gdyby pozwolono jej rozrastać się bez ograniczeń, pamięć podręczna mogłaby zostać zapełniona wpisami niekompletnymi lub przestarzałymi. Aby temu zapobiec, pamięć podręczna ARP jest okresowo oczyszczana z wszystkich wpisów. W ten sposób nie używane wpisy są usuwane, co zwalnia miejsce dla wpisów nowszych i bardziej przydatnych, a ponadto zmniejsza się prawdopodobieństwo prób kontaktowania się z komputerami, które są aktualnie niedostępne.
RARP
Adres IP komputera jest zazwyczaj zapisany na dysku twardym i pobierany podczas uruchomienia komputera. Jednakże ustalenie adresu IP staje się krytycznym problemem dla komputerów, które nie posiadają dysku twardego, ponieważ potrzebny jest im adres IP, aby pomyślnie pobrać plik inicjujący.
Komputery bez dysków twardych do pobrania swojego adresu IP z serwera używają protokołu RARP (Reverse Address Resolution Protocol — protokół wstecznego rozwiązywania adresów). RARP należy do pakietu protokołów TCP/IP. W przeciwieństwie do ARP, RARP pozwala również urządzeniom wysyłać zapytania o adresy IP innych komputerów niż docelowy, oraz o wiele fizycznych typów sieci.
|
Podobnie jak żądania ARP, żądania RARP mogą w czasie transmisji zostać utracone lub ulec uszkodzeniu. |
Format ramki protokołów ARP i RARP
Pakiety żądań ARP i RARP mają wspólny format ramki (komunikatu), przedstawiony na rysunku 4.5.
Rysunek 4.5.
Format ramki w protokołach |
|
Pola w ramce ARP (RARP) reprezentują:
Typ sprzętu — określa typ interfejsu sprzętowego, używanego przez nadawcę. Interfejs Ethernet jest reprezentowany przez wartość 1.
Typ protokołu — podaje adres protokołu wysokiego poziomu, który wysłał żądanie. Adresy IP reprezentuje wartość 0800h.
HLEN — podaje długość adresu sprzętowego, zawartego w polu Typ sprzętu.
PLEN — podaje długość adresu protokołu wysokiego poziomu, zawartego w polu Typ protokołu
Działanie — określa, czy ramka stanowi żądanie (odpowiedź) protokołu ARP, czy RARP. Jeśli wartość zawarta w tym polu wynosi 1, wówczas jest ona żądaniem ARP. Wartość 2 oznacza odpowiedź ARP. Wartość 3 to żądanie RARP, a wartość 4 — odpowiedź RARP.
Adres sprzętowy nadawcy (Sender HA) — podaje adres sprzętowy urządzenia nadającego.
IP nadawcy — podaje adres IP urządzenia nadającego.
Adres sprzętowy docelowy — podaje adres sprzętowy urządzenia docelowego, jeśli jest znany przez nadawcę.
IP docelowy — podaje adres IP urządzenia docelowego.
Po otrzymaniu ramki urządzenie docelowe wypełnia w razie potrzeby brakujący adres, zmienia wartość w polu Działanie na odpowiedź i zamienia miejscami pola nadawcy i odbiorcy. W rezultacie ramka odpowiedzi zawiera adresy IP i fizyczny zarówno oryginalnego nadawcy, jak i urządzenia docelowego, którego adres miał zostać rozwiązany.
ATMARP
W sieci ATM host, który chce wysłać dane do innego komputera, musi podać adres sprzętowy hosta docelowego. Odwzorowanie adresu hosta na odpowiadający adres sprzętowy ATM w sieciach ATM stanowi problem, ponieważ sieci te, w przeciwieństwie do technologii rozgłoszeniowych, takich jak Ethernet czy Token Ring, nie obsługują rozgłoszeń sprzętowych. Aby rozwiązać adres IP na odpowiadający mu adres sprzętowy, dany host ATM musi skontaktować się z serwerem, który zawiera odwzorowania. Ramki protokołu ATMARP (Asynchronous Transfer Mode Address Resolution Protocol — protokół rozwiązywania adresów ATM) wykorzystują tę komunikację pomiędzy hostem i serwerem.
ATMARP przypomina pod wieloma względami protokół ARP używany w sieciach Ethernet i Token Ring. Gdy host ATM chce poznać adres fizyczny innego komputera na podstawie jego adresu IP, wówczas generuje żądanie, zawierające ten adres IP, które zostaje następnie wysłane do serwera ATMARP. Jeśli serwer posiada żądany adres sprzętowy w swojej pamięci podręcznej, wówczas odsyła odpowiedź ATMARP. W przeciwnym wypadku zwraca negatywną odpowiedź ATMARP.
Format pakietu ATMARP różni się nieco od tradycyjnego formatu ramki ATM. Zawiera on dodatkowe pola długości adresu, aby pomieścić dodatkowy format adresów, który wprowadza w ATM dwupoziomową hierarchię adresów.
|
ATM obsługuje większą liczbę formatów adresów, ponieważ przedsiębiorstwa telefoniczne oferujące usługi i sieci ATM używają 8-bajtowego formatu adresu. Z drugiej strony, według ATM Forum, każdy komputer przyłączony do sieci ATM może otrzymać 20-bajtowy adres o nazwie NSAP (Network Service Access Point |
Rysunek 4.6 przedstawia format pakietu ATMARP. Pola typu sprzętu, typu protokołu i działania są takie same, jak w ramce ARP.
Pola w pakiecie ATMARP to:
Typ sprzętu — określa typ interfejsu sprzętowego, używanego przez nadawcę. Interfejs ATM jest reprezentowany przez wartość 0x0013.
Typ protokołu — podaje adres protokołu wysokiego poziomu, który wysłał żądanie. Adresy IP są reprezentowane przez wartość 0x0800.
HLEN nadawcy — podaje długość adresu ATM nadawcy.
HLEN 2 nadawcy — podaje długość podadresu ATM nadawcy.
Rysunek 4.6. Format pakietu ATMARP |
|
Działanie — określa, czy ramka stanowi żądanie, czy odpowiedź. Jeśli wartość zawarta w tym polu wynosi 1, wówczas jest ona żądaniem ATMARP. Wartość 2 oznacza odpowiedź ATMARP. Wartość 8 oznacza odwrotne żądanie ATMARP, 9 oznacza odwrotną odpowiedź ATMARP, a wartość 10 negatywne potwierdzenie ATMARP.
PLEN nadawcy — podaje długość adresu protokołu nadawcy.
HLEN docelowy — podaje długość adresu ATM komputera docelowego.
HLEN 2 docelowy — podaje długość podadresu ATM komputera docelowego.
PLEN docelowy — podaje długość adresu protokołu komputera docelowego.
Adres ATM nadawcy — podaje adres ATM urządzenia nadającego. To pole może mieć długość 20 bajtów.
Adres protokołu nadawcy — podaje adres protokołu, który zainicjował żądanie u nadawcy.
Docelowy adres ATM — podaje adres ATM komputera docelowego.
Docelowy adres protokołu — podaje adres protokołu w hoście docelowym, który powinien przetworzyć żądanie.
86 Część I Wprowadzenie do transmisji TCP/IP
Rozdział 4. Warstwa interfejsu sieciowego 87