ARP
Transkrypt
ARP
Sieci Komputerowe Protokół ARP Address Resolution Protocol Protokół RARP Reverse Address Resolution Protocol dr Zbigniew Lipiński [email protected] Zagadnienia Opis protokołu ARP Zastosowanie protokołu ARP Struktura komunikatu ARP Struktura adresu MAC karty sieciowej Producenci kart sieciowych Narzędzie: arp Protokół Proxy ARP Protokół Reverse ARP (RARP) Protokół InARP 2 Protokół ARP ARP, (ang.) Address Resolution Protocol. RFC 826. Protokół ARP jest protokołem warstwy Sieci modelu OSI. Protokół ARP naleŜy do rodziny protokołów TCP/IP. KaŜde urządzenie sieciowe musi posiadać kartę sieciowa (kartę NIC - Network Interface Card). Karty sieciowe są identyfikowane w sieci na podstawie fizycznych adresów MAC, (ang.) Media Access Control address. Protokół ARP słuŜy do znajdowania adresów fizycznych kart sieciowych na podstawie adresów IP. 3 Zastosowanie protokołu ARP W warstwie Łącza Danych urządzenia sieciowe rozpoznają się na podstawie adresów fizycznych (adresów MAC) kart sieciowych. Datagram IP przechodząc z warstwy Sieci do warstwy Łącza Danych zostaje przekształcony w ramkę ethernetową poprzez dołączenie nagłówka z informacjami o adresach fizycznych kart sieciowych nadawcy i odbiorcy. Nadawca przed wysłaniem ramki musi znaleźć adres fizyczny odbiorcy. Hosty, przełączniki w sieci tworzą lokalne tablice arp zawierające informacje o adresach MAC i adresach IP. Protokół ARP słuŜy do: • wysyłania zapytań do sieci o adres MAC • uaktualniania tablic arp. JeŜeli adres MAC odbiorcy nie znajduje się w tablicy arp nadawcy, to nadawca w ceu identyfikacji adresu MAC odbiorcy wysyła wiadomość 'ARP request'. Wiadomość wysyłana jest na adres broadcast'owy, tzn. do wszystkich węzłów w danej sieci. JeŜeli jakiś węzeł rozpozna swój adres IP w zapytaniu arp to dopowiada komunikatem 'ARP reply' zawierający swój adres fizyczny. Nadawca i odbiorca komunikatów arp uaktualniają swoje tablice arp. 4 Struktura komunikatu ARP Bity 4 1 1 2 8 12 16 20 Typ adresu nadawcy Dl. adresu MAC 24 28 32 Typ adresu odbiorcy Dl. adresu protokolu Operacja Pierwsze 32 bity adresu MAC nadawcy 3 Ostanie 16 bitow adresu MAC nadawcy Pierwsze 16 bitow adresu protokolu nadawcy 4 Ostatnie16 bitow adresu protokolu nadawcy Pierwsze 16 bitow adresu MAC odbiorcy 5 Ostatnie 32 bity adresu MAC odbiorcy 6 Ostatnie32 bity adresu protokolu odbiorcy Struktura komunikatu ARP 5 Struktura komunikatu ARP Pole: Typ adresu fizycznego, (Hardware Type). Wielkość: 16 bitów. Pole określa typ adresu MAC (typ karty sieciowej). Typy adresów: Wartość: 1. Znaczenie: Ethernet. Wartość: 2. Znaczenie: Experimental Ethernet. Wartość: 3. Znaczenie: X.25. Wartość: 4. Znaczenie: Proteon ProNET (Token Ring). Wartość: 5. Znaczenie: Chaos. Wartość: 6. Znaczenie: IEEE 802.X. Wartość: 7. Znaczenie: ARCnet. Pole: Typ adresu protokołu, (Protocol Type). Wielkość: 16 bitów. Pole określa typ protokołu jakiego uŜył host wysyłający zapytanie. Dla rodziny TCP/IP uŜyty protokół jest typu 'Ethernet'. 6 Wartości pola 'Protocol Type' dla adresu typu Ethernet Wartość Opis Wartość Opis 512 XEROX PUP 24579 DEC DECnet Phase IV 513 PUP Address Translation 24580 DEC LAT 1536 XEROX NS IDP 24582 DEC 2048 Internet Protocol (IP) 24583 DEC 2049 X.75 32773 HP Probe 2049 NBS 32784 Excelan 2051 ECMA 32821 Reverse ARP 2052 Chaosnet 32824 DEC LANBridge 2053 X.25 Level 3 32823 AppleTalk 2054 Address Resolution Protocol 2055 XNS 4096 Berkeley Trailer 21000 BBN Simnet 24577 DEC MOP Dump/Load 24578 DEC MOP Remote Console 7 Struktura komunikatu ARP Pole: Dł. adresu MAC, (Hardware Address Length). Wielkość: 8 bitów. Długość (wyraŜona w bajtach) adresu fizycznego w datagramie. Dla adresu MAC wartość = 6 bajtów. Pole: Dł. adresu protokołu, (Protocol Address Length). Wielkość: 8 bitów. Długość (wyraŜona w bajtach) adresu protokołu. Dla adresu IP wartość pola = 4 bajty. Pole: Operacja, (Operation Code, Opcode). Wielkość: 16 bitów. Wartość kodu 1 dla wiadomości typu 'ARP reply' (odpowiedz), Wartość kodu 2 dla wiadomości typu 'ARP request' (zapytanie). Pole: Adres MAC nadawcy, (Sender Hardware Address). Wielkość: wartość z pola 'Hardware Address Length'. Adres MAC hosta wysyłającego ARP request. Pole: Adres nadawcy, (Sender Protocol Address). Wielkość: wartość z pola 'Protocol Address Length'. Adres IP hosta wysyłającego ARP request. Pole: Adres MAC odbiorcy, (Target Hardware Address). Wielkość: wartość z pola 'Hardware Address Length'. Adres MAC hosta odbierającego wiadomość. Pole: Adres odbiorcy, (Target Protocol Address). Wielkość: wartość z pola 'Protocol Address Length'. Adres IP hosta odbierającego wiadomość. 8 Struktura komunikatu ARP # ----- Naglowek Ethernetowy ----ETYPE = 0x0806 : Protocol = ARP: Address Resolution Protocol Destination address : FFFFFFFFFFFF .......1 = Group address ......1. = Locally administered address Source address : 00600852F9D8 .......0 = No routing information present ......0. = Universally administered address Frame Length : 42 (0x002A) Ethernet Type : 0x0806 (ARP: Address Resolution Protocol) Ethernet Data: Number of data bytes remaining = 28 (0x001C) # ----- Naglowek ARP ----ARP: Request, Target IP: 157.54.160.1 Hardware Type = Ethernet (10Mb) Protocol Type = 2048 (0x800) Hardware Address Length = 6 (0x6) Protocol Address Length = 4 (0x4) Opcode = Request Sender's Hardware Address = 00600852F9D8 Sender's Protocol Address = 157.54.160.186 Target's Hardware Address = 000000000000 Target's Protocol Address = 157.54.160.1 9 Przykład: komunikat ARP Request, ARP Reply # ----- Naglowek Ethernetowy ----ETYPE = 0x0806 : Protocol = ARP: Address Resolution Protocol Destination address : 00600852F9D8 .......0 = Individual address ......0. = Universally administered address Source address : 001054CAE140 .......0 = No routing information present ......0. = Universally administered address Frame Length : 60 (0x003C) Ethernet Type : 0x0806 (ARP: Address Resolution Protocol) Ethernet Data: Number of data bytes remaining = 46 (0x002E) # ----- Naglowek ARP ----ARP: Reply, Target IP: 157.54.160.186 Target Hdwr Addr: 00600852F9D8 Hardware Type = Ethernet (10Mb) Protocol Type = 2048 (0x800) Hardware Address Length = 6 (0x6) Protocol Address Length = 4 (0x4) Opcode = Reply Sender's Hardware Address = 001054CAE140 Sender's Protocol Address = 157.54.160.1 Target's Hardware Address = 00600852F9D8 Target's Protocol Address = 157.54.160.186 Frame Padding 10 Struktura adresu MAC karty sieciowej Przykład: Adres fizyczny 00-B0-D0-2C-FC-B6 Pole I/G. Wartości: 0/1. 1 bit. Znaczenie: adres Indywidualny/Grupowy. Pole U/L. Wartości: 0/1. 1 bit. Znaczenie: adres Uniwersalny/Lokalny. Adres Univerwersaly: Karty sieciowe uniwersalne są zgodne ze standardem IEEE. Adres Lokalny: Karty z takim adresem mogą nie być zgodne ze standardem IEEE. Pole OUI (Organization Unique Identifier). 22 bity. Część adresu MAC określająca producenta karty sieciowej. Pole 24 bity. Znaczenie: numer karty sieciowej. Numer karty sieciowej przydzielany przez producenta karty. Przykłady kodów producentów kart: 00000C Cisco 0000D8 3Com, Novell PS/2 0080C2 IEEE 802.1 Committee 00AA00 Intel 02608C 3Com IBM PC; Imagen; Valid; Cisco 080020 Sun machines Przykład: Karta o adresie 08:00:20:00:70:DF została wyprodukowana przez Sun Microsystems. 11 Narządzie: arp Narzędzie arp słuŜy do edycji, dodawania, usuwania rekordów w tablicy arp. Tablica arp zawiera informacje o adresach fizycznych MAC i adresach IP hostów. Składania: ARP -s inet_addr eth_addr [if_addr] ARP -d inet_addr [if_addr] ARP -a [inet_addr] [-N if_addr] Opcje: -a Displays current ARP entries by interrogating the current protocol data. If inet_addr is specified, the IP and Physical addresses for only the specified computer are displayed. If more than one network interface uses ARP, entries for each ARP table are displayed. -g Same as -a. inet_addr Specifies an internet address. -N if_addr Displays the ARP entries for the network interface specified by if_addr. -d Deletes the host specified by inet_addr. inet_addr may be wildcarded with * to delete all hosts. -s Adds the host and associates the Internet address inet_addr with the Physical address eth_addr. The Physical address is given as 6 hexadecimal bytes separated by hyphens. The entry is permanent. eth_addr Specifies a physical address. if_addr If present, this specifies the Internet address of the interface whose address translation table should be modified. If not present, the first applicable interface will be used. 12 Narzędzie: arp Tablicę arp moŜna edytować za pomocą polecenia: \> arp -a Przykładowa zawartość tablicy ARP: Address HWtype HWaddress Flags Mask Iface 212.51.207.221 ether 00:60:83:7C:A2:38 C eth1 212.51.219.1 ether 00:A0:24:56:13:C9 C eth0 212.51.219.4 ether 08:00:20:1F:37:F7 C eth0 13 Protokół: Proxy ARP Proxy ARP, RFC 1027, 'Using ARP to Implement Transparent Subnet Gateways', 1987. Protokół Proxy ARP pozwala na wysyłanie zapytań ARP (pytanie o adres MAC hosta o danym adresie IP) do hostów znajdujących się w róŜnych podsieciach. Role agenta proxy pełni gateway (router) danej podsieci. Gateway przesyła zapytanie ARP do podsieci w której znajduje się host o danym adresie IP i zwraca informacje o adresie MAC do hosta generującego zapytanie. 14 Protokół Reverse ARP RARP, (ang.) Reverse Address Resolution Protocol. RFC 903. Protokół RARP jest protokołem warstwy lacza danych modelu OSI. Protokół RARP słuŜy do określania adresu IP na podstawie adresu MAC karty sieciowej. Istnieją sytuacje w których komputer nie posiada na stale zapisanego adresu IP (np. brak twardego dysku), ale posiada kartę sieciowa z adresem MAC. JeŜeli w sieci jest serwer RARP przydzielający adresy IP to komputer moŜe uzyskać na podstawie adresu MAC swój adres IP. InARP, (ang.) Inverse Address Resolution Protocol. RFC 1293, 'Inverse Address Resolution Protocol', 1992. Protokół InARP słuŜy do określenia adresu protokołu odbiorcy (adres MAC odbiorcy jest znany). W zapytaniu InARP pole z adresem protokołu odbiorcy ma wartość 0. W odpowiedzi pole zostaje wypełnione odpowiednim adresem protokołu odbiorcy. Protokół InARP jest stosowany w sieciach Frame Relay. 15 Protokół Reverse ARP Odpowiednikiem adresu MAC w sieciach Frame Relay jest identyfikator DLCI, (ang.) Data Link Connection Identifier. Identyfikator DLCI słuŜy do identyfikacji: • wirtualnych połączeń PVC, (ang.) Permanent Virtual Circuit lub • SVC, (ang.) Switched Virtual Circuits. Protokół InARP słuŜy do identyfikacji nowego połączenia DLCI. Format pakietu InARP jest taki sam jak pakietu ARP. Typy wiadomości InARP (pole Operation): InARP request = 8 InARP reply =9 16 Przykład zapytania i odpowiedzi InARP Struktura wiadomości 'InARP request': ar$hrd - 0x000F wartość oznacza protokół Frame Relay ar$pro - typ szukanego protokołu (np. IP = 0x0800) ar$hln - długość adresu, 2,3, lub 4 bajty ar$pln - długość (w bajtach) adresu szukanego protokołu (np. dla IP=4) ar$op - 8; InARP request ar$sha - adres fizyczny odbiorcy zapytania ar$spa - szukany adres protokołu odbiorcy (np. adres IP) ar$tha - adres nowego 'virtual circuit' ar$tpa - 0; Struktura wiadomosci 'InARP response': ar$hrd - 0x000F wartość oznacza protokół Frame Relay ar$pro - typ szukanego protokolu (np. IP = 0x0800) ar$hln - dlugosc adresu, 2,3, lub 4 bajty ar$pln - dlugosc (w bajtach) adresu szukanego protokolu (np. dla IP=4) ar$op - 9; InARP response ar$sha - adres odpowiadajacego węzła ar$spa - adres szukanego protokolu ar$tha - adres odpowiadajacego węzła ar$tpa - adres protokolu odpowiadajacego węzła 17