Ethernet 카드에 IP주소를 맵핑 시켜주기 위해서 ARP 라는 프로토콜을 사용한다. ARP는 (Address Resolution Rrotocol)이라고 불리우는데, Eternet 카드로 메시지가 전달되어서 바깥으로 나가기 전에 Etnernet 카드는 IP 어드레스에 일치하는 Eternet 카드를 찾기 위해서 ARP 프로토콜을 주위의 모든 Eternet 카드로 뿌리게 된다(보통 이것을 "broadcasting 한다" 라고 표현한다).
ARP 를 받은 호스트는 자신의 IP와 비교하고, 만약 맞다면 ARP 를 보낸 호스트로 ARP reply(즉 나 존재합니다)를 되돌려주고, 이것 받은 쪽에서는 ARP reply 를 보낸 호스트의 이더넷 카드주소를 알아내게 된다.그런데 문제가 하나 있다. 세상에는 그야말로 엄청난 양의 이더넷 카드가 존재할것이다(아마 수천억 이상). 그럼 IP와 이더넷 카드를 맵핑 시키기 위해서 수천억의 모든 이더넷 카드에 ARP를 보내야 할것인가 ?
물론 그럴필요가 없다. 바로 Router 가 있기 때문이다. ARP는 LAN 상에서만 작동하는 프로토콜로써, LAN에 묶여있는 이더넷 사이에서만 유효한 프로토콜이다. 만약 하나의 호스트가 IP와 이더넷카드 이름을 맵핑 시키기 위해서 ARP 를 보내 었는데, ARP reply 가 없다면, 찾고자하는 IP는 LAN 상에 있는 이더넷카드가 아닌 외부에 있는(internet 등으로 연결된)다른 이더넷카드라는것을 유추할수 있을것이다. 그러면 이 메시지는 Router 로 보내지고 (중간에 Gateway 가존재한다) Router 은 IP수준에서 최종 Router 을 찾아내고, 최종 Router 은 이 메시지를 다시 해당 IP를 포함하고 있는 LAN의 Gateway 로 보내고, GateWay 에서는 목적지 IP로 메시지를 보내게 된다.
그리고 ARP는 기본적으로 Ethernet 프로토콜이다. 즉 IP수준까지를 다루는 Router 을 넘을수가 없도록 되어 있다. Router 을 넘어서 다른 라우터로 전송되기 위해서는 IP수준이상의 프로토콜을 지원받는 패킷이여야만 가능하다.
ARP의 의해 IP주소와 Ethernet 주소가 맵핑 되면, 이것은 cache 에 임시 저장된다. 그래서 동일한 IP를 다시 찾게되면, ARP 패킷을 날리지 않고, cache 에 저장된 내용을 찾게 된다.
from. joinc
라우터는 자신에게 속해있는 모든 컴퓨터 네트웍 카드에... ARP메시지를 보낸다...
"xxx.xxx.xxx.xxx ip가지고 있는 네트웍카드는 응답하시오~!!!"
ip어드레스는 네트웍카드에 물려있기 때문에...
자신이 가지고 있는 ip어드레스가 방금 온 ARP메시지에 들어있는 ip어드레스와 일치한다면...
"나 있소~!!!" 하고 답장을 라우터로 보내게 된다...
그럼 데이타가 그 컴퓨터로 전송이 되는것...
일치하는 ip가 없다면... 다른 라우터로 보내게 된다... 맞나?? ^^
'Hacking > Network' 카테고리의 다른 글
[13일차] IP 헤더의 id 와 flag & fragment offset (0) | 2017.10.12 |
---|---|
[12일차] ARP 스니핑 (0) | 2017.10.10 |
[10일차] ARP 헤더 클래스 만들기 (0) | 2017.09.25 |
[9일차] ARP 헤더 패킷 분석하기 (0) | 2017.09.25 |
[8일차] 이더넷 헤더 클래스 만들기 (0) | 2017.09.21 |
WRITTEN BY
,