ARP and RARP ( Address Resolution Protocol and Reverse Address Resolution Protocol ) RFC 826, 1293, 1390, 903 ARP and RARP • ARP Ethernet драйвер и адаптер используют MAC-адрес. TCP/IP использует IP-адреса. Если узлу нужно передать данные на другой узел, то ему известен только IPадрес получателя, который он и передает в стек TCP/IP. В стеке TCP/IP должен быть механизм определения соответствия между MAC и IP адресом. Это – протокол ARP. 32-bit IP address ARP • RARP 48-bit Ethernet address RARP Если система не имеет жесткого диска или дисковода и должна загружаться по сети, то изначально она обладает только MAC-адресом и ей нужно получить свой IP-адрес. Для получения из сети IP-адреса по заданному MAC-адресу используется протокол RARP. ARP in TCP/IP Stack Upper-Layer Protocols Upper ~ such as SNMP, telnet, FTP, HTTP, POP3, etc. ~ Transport User Datagram Protocol (UDP) Transmission Control Protocol (ТСP) RFC 768 ~ connectionless transport ~ RFC 793 ~ connection-oriented transport ~ Internet Protocol version 4 (IPv4) Network RFC 791 ARP Data Link Internet Control Messaging Protocol (ICMP) RARP Media Access Control (Ethernet, Token Ring, FDDI, X.25, PPP, etc.) RFC 792 Address Resolution 1 ARP Request Broadcast Source hardware address: 00:00:1B:23:AC:34 Source network address: 10.1.0.1 Target hardware address: 00:00:00:00:00:00 Target network address: 10.1.0.99 2 ARP Reply Unicast Source hardware address: 00:00:1B:98:93:DE Source network address: 10.1.0.99 Target hardware address: 00:00:1B:23:AC:34 Target network address: 10.1.0.1 Host A Hardware: 00:00:1B:23:AC:34 Network: 10.1.0.1 Host B Hardware: 00:00:1B:98:93:DE Network: 10.1.0.99 Address Resolution Mechanisms – Хост отправляет широковещательный (broadcast) запрос: “Какой MAC-адрес имеет 216.109.11.67?” – Хост, у которого IP-адрес 216.109.11.67 отвечает: “MAC-адрес для 216.109.11.67 - 8A:5F:3C:23:45:56” – Broadcasts довольно затратные (время/ресурс). – ARP ответы кэшируются (APR-cache). – Каждый хост обновляет свою кэш-таблицу, если получает ARP-broadcast. ARP Cache • Dynamic Binding Каждый узел обновляет свою таблицу известных MAC-адресов, если получает ARP broadcast request Время жизни записи: ArpCacheLife = 2 min ArpCacheMinReferencedLife = 10 min Table full: используется алгоритм выбрасывания наиболее старых записей (LRU, least recently used ) • Static Binding Статические записи не обновляются и не исчезают Example: С:> arp –s 10.0.20.182 C:> arp –a 00-0c-6e-c9-9c-ca Интерфейс: 10.0.19.118 --- 0x4 Адрес IP Физический адрес 10.0.18.2 00-d0-43-7a-c6-a6 10.0.18.91 00-02-b3-89-30-f6 10.0.20.182 00-0c-6e-c9-9c-ca Тип динамический динамический статический Обнаружение дублированных IP-адресов: Gratuitous ARP • Хост отправляет ARP-запрос о своем собственном IP-адресе (Gratuitous ARP ) – Reply received: В сети есть хост с таким адресом (Duplicate IP) – No reply received: Данный IP - единственный в сетевом сегменте (Unique IP) • Алгоритм обнаружения дублера: 1) нападающий хост: Gratuitous ARP 2) защищающийся хост: Unicast APR Reply 3) защищающийся хост: Gratuitous ARP Example Gratuitous ARP : Destination: ff:ff:ff:ff:ff:ff (Broadcast) Source: 00:03:02:A2:B2:02 (02:02:02:02:02:02) Type: ARP (0x0806) Sender MAC address: 00:03:02:A2:B2:02 (00:03:02:A2:B2:02) Sender IP address: 192.168.1.1 (192.168.1.1) Target MAC address: ff:ff:ff:ff:ff:ff (Broadcast) Target IP address: 192.168.1.1 (192.168.1.1) Address Resolution works: Send IP datagram Host to IP address ARP Resolve IP to MAC Do I know hardware address? IP Yes ARP cache No Ethernet driver ARP request (Broadcast) Host Host Ethernet driver ARP Is somebody looking for my address? No Ignore request Ethernet driver Is somebody looking for my address? ARP Yes Send ARP reply (unicast) Ethernet Encapsulation (RFC 894) 46-1500 bytes Destination address Source address type 6 6 2 DATA 46-1500 Type 0800 IP Datagram 2 Type 0806 2 Type 8035 2 46-1500 ARP request/reply 28 RARP request/reply 28 PAD 18 PAD 18 CRC 4 Format of ARP packets *Note: Длина полей адресов определяется соответствующими значениями полей Hardware Address и Protocol address. Operation code: 1 – request ARP 2 – replay ARP 3 – request RARP 4 – replay RARP 0000 0010 0020 ff ff ff ff ff ff 00 03 47 a4 86 a8 08 06 00 01 08 00 06 04 00 01 00 03 47 a4 86 a8 c3 13 cb 66 00 00 00 00 00 00 c3 13 cb 68 Ethernet II: Destination: ff:ff:ff:ff:ff:ff (Broadcast) Source: 00:03:47:a4:86:a8 (Intel_a4:86:a8) Type: ARP (0x0806) Address Resolution Protocol (request): Hardware type: Ethernet (0x0001) Protocol type: IP (0x0800) Hardware size: 6 Protocol size: 4 Opcode: request (0x0001) Sender MAC address: 00:03:47:a4:86:a8 Sender IP address: 195.19.203.102 (195.19.203.102) Target MAC address: 00:00:00:00:00:00 Target IP address: 195.19.203.104 (195.19.203.104)