ARP란?
Address Resolution Protocol(ARP)은 IP 주소를 MAC 주소로 변환하는 데에 쓰이는 프로토콜이다.
MAC 주소와 IP 주소
IP 주소
- 네트워크 계층인 3계층에서 forwarding에 쓰이는 주소로, IPv4 주소는 32bit이고 IPv6 주소는 128bit이다.
- datagram(3계층의 PDU, Packet Data Unit)를 destination 네트워크로 보내기 위해서 쓰임.
- 인터넷에 연결된 호스트나 라우터의 인터페이스에 할당된 주소이기 때문에 장소를 이동하면 주소가 변화함. 컴퓨터가 아니라 네트워크에 할당된 주소인 것.
- 우리가 이사를 가면 우편주소가 변화하는 것과 비슷함.
MAC 주소
- 링크 레이어, 2계층에서 같은 네트워크 내의 한 interface에서 다른 interface로 datagram(2계층의 PDU인 frame이 포함하고 있는)을 전달하기 위해 쓰임.
- 48bit이며 LAN address, physical address, Ethernet address라고도 불림.
- IEEE가 주소 할당을 관리하며 컴퓨터의 NIC ROM에 새겨지는 고유한 불변의 주소.
- 사람으로 치면 주민등록번호에 해당됨. 개인을 식별할 수 있는 고유한 값.
왜 둘다 필요할까?
결국엔 둘다 컴퓨터에 할당된 값이니 하나만 사용해도 무방할 것 같다는 생각이 들 수 있다. 결국에 두 주소를 모두 사용하기 때문에 ARP가 필요한 것이므로, 둘 중 하나만 사용하면 주소를 변환할 필요도 없고 더 편하지 않을까 싶을 수 있다. 그러나 두 주소 모두를 사용하지 않으면 제대로 통신을 할 수 없다.
예를 들어 IP 주소만 사용하면, 컴퓨터가 속한 네트워크는 찾아갈 수 있어도 정확히 그 datagram을 받아야 하는 컴퓨터를 찾을 수 없다. IP 주소는 네트워크 접속에 따라 계속 변화하기 때문에, 그 컴퓨터가 같은 IP를 가지고 있어도 이 datagram을 받아야 하는 컴퓨터인지 아닌지는 확신할 수 없는 것이다.
반대로 MAC 주소만 이용하면, 라우터에 각각의 고유한 주소를 모두 등록해놓아야 통신이 가능할텐데 이는 제한적인 저장공간을 생각하면 가능한 일이 아니다.
그래서 IP 주소와 MAC 주소, 이 둘 사이를 이어주는 ARP가 모두 필요하다.
ARP 프로세스
ARP는 IP 주소와 MAC 주소 맵핑 정보를 저장해놓는 ARP table을 이용한다. 통신하고자 하는 두 컴퓨터가 같은 LAN에 속한 경우와 다른 LAN에 속한 경우를 각각 나눠서 살펴보자
같은 LAN에 속한 경우
A가 B의 MAC 주소를 얻고자 하는 상황을 가정해보겠다.
1. A가 B의 IP 주소를 포함한 ARP 쿼리 패킷을 broadcast한다. 즉, 같은 LAN에 속한 모든 노드들이 ARP 쿼리를 받는다.
2. B 역시 ARP 패킷을 받고, 자신의 IP가 포함되어 있으므로 A에게 자신의 MAC address를 전송한다.
3. A는 B의 IP/MAC 페어 정보를 ARP 테이블에 TTL(Time To Live)동안 저장해둔다.
다른 LAN에 속한 경우
LAN 1에 속한 A가 LAN 2에 속한 B에게 메시지를 전달하고자 하는 상황을 가정해보겠다.
1. A가 src로 A의 IP 주소를 갖고, dest로 B의 IP 주소를 담은 IP 패킷을 만든 후에 ARP table에서 R의 MAC 주소를 얻은 다음 IP datagram을 포함하고 dest를 R의 MAC 주소로 가지는 Ethernet frame을 만들어 R에게 전송한다.
2. R이 Ethernet frame을 받은 후에 헤더를 제거하여 datagram의 dest가 B인 것을 확인하고, ARP table에서 B의 MAC 주소를 가져다가 IP datagram을 포함하고 dest를 B의 MAC 주소로 가지는 Ethernet frame을 만들어 B에게 전송한다.
위의 과정에서 사용된 frame과 datagram을 그림으로 표현하면 대략적으로 다음과 같다.
'CS > 네트워크' 카테고리의 다른 글
e-mail protocol: SMTP, POP3, IMAP이란? (0) | 2022.01.11 |
---|