[네트워크] ARP

Robert.Yang·2023년 5월 15일
1

Network

목록 보기
24/59
post-thumbnail

이 포스트는 널널한 개발자님 강의를 참조하여 작성한 포스트입니다.

ARP

  • ARP는 IP주소로 MAC주소를 알아내려 할 때 활용된다.
  • 보통의 경우 PC를 부팅하면 게이트웨이의 MAC주소를 찾기 위해 ARP Request가 발생하며 이에 대응하는 Reply로 MAC 주소를 알 수 있다.

ARP는 Address Resolution Protocol인데 여기서 주목해야 할 단어가 Address이다. 이 Address가 무엇일까? 이 Address는 2가지가 있는데 일단 첫째로, IP주소가 있고 둘째로 MAC주소가 있다.

복습차원에서 다시 보면 컴퓨터의 주소라는 것은 2가지가 있는데 첫째로 컴퓨터에 인터넷이 연결되려면 IP주소가 필요하다. 그러니까 IP주소는 인터넷이라는 거대한 논리 네트워크에서 이 host를 unique하게 식별할 수 있는 식별자이다. 그런데 이 host에 네트워크 인터페이스가 여러개일수도 있고 1개일수도 있다. 일단 1개라고 가정하면 NIC에 MAC주소가 부여된다. 컴퓨터가 주소애기를 논하면 기본적으로 IP주소, MAC주소 2가지를 논하게 되는데 문제는 IP주소와 MAC주소가 쌍을 이루기 마련이고 일반적 기업에서 이렇게 되어 있다. 그런데 의문점이 IP주소는 L3이고 MAC주소는 L2인데 L3통신을 위해서 L2주소까지 알아야할까? 정답은 필요한 구간 내에서 알아야 한다.

ARP는 언제 쓸까? IP주소로 MAC주소를 알아내려 할 때 활용된다. 그러면 이런 경우는 언제 가장 대표적일까? 쉽게 말해 내가 남의 컴퓨터 MAC주소를 언제 알아내야 할까? 가장 대표적인게 다음과 같다. Gateway의 MAC주소를 모르면 우리는 인터넷을 할 수 없다. 그래서 Gateway의 MAC주소는 반드시 알아야 한다. 이 과정을 좀 더 자세히 설명해보자.

위 그림의 Router가 Gateway라고 하고 IP주소가 192.168.0.1이라고 가정하자. 그리고 1번 PC가 부팅을 해서 전원이 들어왔다고 해보자. 1번 PC가 IP주소도 DHCP에 의해 할당받고 다 설정했고 할당받은 IP주소가 192.168.0.100이라고 해보자. 그런데 1번 PC가 DHCP서버한테 받은 설정을 확인해보니 나의 Gateway가 192.168.0.1이라고 하자. 그러면 문제가 뭐냐면 1번 PC가 네이버에 접속한다고 가정하자. 네이버의 IP주소가 3.3.3.3이라고 할때 여기서 드는 의문점이 있다.

네이버 서버 맥 주소도 모르는데 어떻게 통신하지?

이것은 바보같은 질문이 될 수 있다. 네이버하고 통신은 인터넷을 통한 L3통신이다. 이러면 네이버 맥주소는 알 필요가 없다. L3에는 IP가 중요하고 L2구간에사 MAC주소가 중요하다. 아무튼 네이버를 접속하려는 1번 PC가 인터넷을 접속하려할 때 게이트웨이 MAC 주소는 반드시 알아야 한다.

부팅이 되면 브로드캐스트와 같이 ARP Request가 네트워크 전체로 뿌려준다. 즉 '192.168.0.1이라는 ip를 가진 host가 있니?'라고 요청을 하는 것이다. 다른 PC들은 응답을 안 할 것이고 Gateway만 이 request에 대해서 reply를 1번 PC한테 보낸다. 이렇게 해서 1번 PC는 Gateway의 MAC 주소를 획득한다.

1번 PC가 네이버에 접속할 때 패킷이 만들어져서 나가는데 이 패킷의 출발지 IP주소는 192.168.0.100일 것이고 목적지 주소는 3.3.3.3일 것이다. 그리고 이 패킷이 프레임 payload에 담길 것이다. 그리고 이 프레임의 출발지 주소는 1번 PC MAC주소일것이고 목적지 주소는 네이버의 MAC주소가 아니라 Gateway MAC주소이다. 그럼 Gateway는 packet을 보고 목적지를 판단해서 움직인다. 그렇기 때문에 일단 PC가 켜지면 DHCP서버 주소설정을 받고 ARP Request를 통해 Gateway MAC주소를 판단한다.

ARP도 캐싱이 된다. PC입장에서 Gateway MAC주소를 알아내면 이것을 캐싱해 메모리에 담고 인터넷을 접속할때 이 캐싱된 메모리를 참조하게 되어있다.

ARP 캐싱 리스트 확인 명령어

arp -a
profile
모든 것을 즐길 줄 아는 개발자, 양성빈입니다.

0개의 댓글