ARP 다시 보기
DHCP로 IP 주소를 받았습니다. 이제 같은 네트워크에 있는 장치와 통신하려 합니다. IP 주소는 알고 있지만, 실제로 패킷을 전달하려면 이더넷 프레임에 MAC 주소가 필요합니다. PART 03에서 배운 데이터링크 계층의 이야기입니다. IP 주소를 MAC 주소로 변환하는 것이 ARP(Address Resolution Protocol)입니다.
IP와 MAC의 역할 분담
IP 주소는 네트워크 계층에서 쓰는 논리적 주소입니다. MAC 주소는 데이터링크 계층에서 쓰는 물리적 주소입니다. 인터넷에서 멀리 있는 서버에 데이터를 보낼 때는 IP 주소로 경로를 찾습니다. 하지만 같은 이더넷 세그먼트(LAN) 안에서 실제 프레임을 보낼 때는 MAC 주소가 필요합니다.
브라우저가 192.168.0.1(기본 게이트웨이)로 패킷을 보내야 할 때, 내 컴퓨터는 192.168.0.1의 MAC 주소를 알아야 이더넷 프레임을 만들 수 있습니다.
ARP 동작 방식
ARP는 브로드캐스트를 활용합니다. "이 네트워크에서 IP 192.168.0.1을 가진 분, MAC 주소가 뭐예요?"라는 ARP Request를 브로드캐스트로 보냅니다. 모든 장치가 이 메시지를 받지만, 자신의 IP가 아니면 무시합니다. 192.168.0.1을 가진 장치만 "저요, 제 MAC은 aa:bb:cc:dd:ee:ff입니다"라고 유니캐스트로 응답합니다.
한 번 알아낸 매핑은 ARP 캐시에 저장됩니다. 다음 번에 같은 IP로 보낼 때는 브로드캐스트 없이 캐시에서 바로 꺼내 씁니다.
# 파일: 터미널arp -a
이 명령으로 현재 컴퓨터의 ARP 캐시를 볼 수 있습니다. 192.168.0.1과 같은 IP 옆에 게이트웨이의 MAC 주소가 보입니다.
ARP와 DHCP의 협력
DHCP로 IP를 받은 직후, 클라이언트는 자신이 받은 IP가 이미 다른 장치에서 사용 중인지 확인합니다. 이때 ARP를 이용합니다. 자신이 받은 IP로 ARP Request를 보내봅니다. 응답이 없으면 그 IP는 비어 있다고 판단하고 사용합니다. 응답이 온다면 IP 충돌이 발생한 것으로, DHCP 서버에 거부 메시지를 보내고 새 IP를 요청합니다.
ARP 스푸핑
ARP에는 보안 취약점이 있습니다. 누군가 가짜 ARP Reply를 보내 "내가 192.168.0.1이야"라고 선언하면, 주변 장치들의 ARP 캐시가 오염됩니다. 트래픽이 공격자를 거쳐 게이트웨이로 가게 됩니다. 이것이 ARP 스푸핑(spoofing) 또는 ARP 포이즈닝(poisoning)입니다. 중간자 공격의 한 형태입니다.
공용 와이파이에서 HTTPS가 중요한 이유 중 하나가 여기 있습니다. ARP 스푸핑으로 트래픽을 가로채더라도 TLS 암호화가 되어 있으면 내용을 읽을 수 없습니다.
다음 절에서는 컴퓨터가 켜지는 순간부터 웹 페이지를 열 수 있을 때까지 일어나는 일을 순서대로 정리합니다.