Previous Posts
About IP Address
About MAC Address
ARP?
Address Resolution Protocol
네트워크 상에서 IP address에 대응하는 MAC address를 찾기 위해 사용되는 프로토콜이다.
이 프로토콜을 사용하여 매핑된 IP address와 MAC address의 쌍은 ARP table에 저장된다.
ARP는 plub-and-play라는 특징을 가진다.
즉, 특별한 설정 없이 바로 사용 가능하다는 의미이다.
Procedure
LAN에 존재하는 한 host A가 host B의 IP address를 알고 있고, MAC address를 알고자 한다.
- host A가 LAN에 물려있는 모든 host에게 ARP request packet을 보낸다. (broadcast)
- 동일 LAN에 존재하는 host B는 자신의 IP address가 담긴 ARP request packet을 확인한다.
- host B는 자신의 MAC address를 ARP reply packet에 담아 ARP request packet에 담긴 host A의 정보를 통해 host A에게 ARP reply packet을 보낸다.
- host B가 ARP reply packet을 보내는 동시에, 자신의 ARP table에 host A의 IP address와 MAC address를 저장한다.
- host A는 ARP reply packet을 수신하고, 비로소 host B의 MAC address를 알게 되었다. 이 때, 마찬가지로 ARP table에 host B의 IP address와 MAC address를 저장한다.
ARP Header Structure
Hardware type : 사용중인 hardware 주소의 종류를 나타내는 field
NETROM = 0, // from KA9Q: NET/ROM pseudo
ETHER = 1, // Ethernet 10Mbps
EETHER = 2, // Experimental Ethernet
AX25 = 3, // AX.25 Level 2
PRONET = 4, // PROnet token ring
CHAOS = 5, // Chaosnet
IEEE802 = 6, // IEEE 802.2 Ethernet/TR/TB
ARCNET = 7, // ARCnet
APPLETLK = 8, // APPLEtalk
LANSTAR = 9, // Lanstar
DLCI = 15, // Frame Relay DLCI
ATM = 19, // ATM
METRICOM = 23, // Metricom STRIP (new IANA id)
IPSEC = 31 // IPsec tunnel
Protocol type : protocol의 유형을 나타내는 field (IPv4 = 4, IPv6 = 6)
- 기본적으로 ARP 는 IP layer의 protocol이다.
Hardware address length : hardware 주소(ethernet일 경우 MAC address이기에 6) 의 length를 byte단위로 나타내는 field
Protocol address length : 사용된 IP protocol의 length를 byte단위로 나타내는 field (IPv4 = 4, IPv6 = 6)
Operation code : request packet일 경우 1, reply packet일 경우 2
Sender hardware address : ARP request/reply packet을 보내는 host의 hardware address (MAC address)
Sender protocol address : ARP request/reply packet을 보내는 host의 protocol address (IP address)
Target hardware address : ARP request/reply packet을 수신하는 host의 hardware address (MAC address)
Target protocol address : ARP request/reply packet을 수신하는 host의 protocol address (IP address)
이렇게 줄글로만 설명하면 와닿지 않으니 예시를 통해 알아보자.
Host a
- IP주소 123.123.123.123
- MAC주소 A.A.A.A.A.A
Host b
- IP주소 234.234.234.234
- MAC주소 B.B.B.B.B.B
Host a가 Host b의 주소를 알고자 ARP를 시도하려 한다.
- ARP 패킷을 실제로 보낼 때, ethernet header(layer 2 header)가 붙게 된다.
- ARP packet = ethernet header + ARP(IP) header + data
- 하단의 wireshark에서 captured packet img에서 확인 가능하다.
ARP Request Packet
Ex)
Destination MAC address : A.A.A.A.A.A
Source MAC address : ff:ff:ff:ff:ff:ff (broadcast)
Hardware type : 1 (ethernet)
Protocol type : 4 (IPv4)
Hardware size : 6 (MAC address)
Protocol size : 4 (IPv4)
Operation code : 1 (ARP request)
Sender hardware address : A.A.A.A.A.A
Sender protocol address : 123.123.123.123
Target hardware address : 00:00:00:00:00:00 (sender가 채워줄 값)
Target protocol address : 234.234.234.234
ARP Reply Packet
Ex)
Destination MAC address : A.A.A.A.A.A
Source MAC address : B.B.B.B.B.B
Hardware type : 1 (ethernet)
Protocol type : 4 (IPv4)
Hardware size : 6 (MAC address)
Protocol size : 4 (IPv4)
Operation code : 2 (ARP reply)
Sender hardware address : B.B.B.B.B.B
Sender protocol address : 234.234.234.234
Target hardware address : A.A.A.A.A.A
Target protocol address : 123.123.123.123
Ref
Computer Networking: A Top-Down Approach, 8th Edition
– James Kurose and Keith Ross
'CS > Network' 카테고리의 다른 글
DNS (0) | 2023.10.02 |
---|---|
Port (0) | 2023.10.02 |
TCP, UDP (0) | 2023.10.02 |
About MAC Address (0) | 2023.09.19 |
About IP Address (0) | 2023.09.19 |