본문 바로가기

3.구현/보안

ARP Protocol

About ARP Protocol

 
 
ARP 프로토콜은 IP 주소와 MAC 주소를 매핑시켜주는  프로토콜이다. IP를 MAC으로 매핑해주는 것은 ARP, MAC을 IP로 매핑 시켜주는 것은 RARP이다.
 
작성일: 2009.06.02 (http://ospace.tistory.com/), ospace114@엠팔.컴
 
ARP 패킷의 구조는 다음과 같다.
 
ARP 기준으로 작동 방식을 설명하면 다음과 같다.
 
  1. 호스트 A가 D와 통신을 하려고 한다. 먼저 D로 가기 위한 MAC 주소를 획득해야한다. D의 IP주소는 알고 있다.
  2. 호스트 A는 ARP Request 패킷을 생성하고, Sender MAC과 IP주소를 자신의 주소로 채워넣고, Target IP 주소는 D의 IP주소를 채워놓고, Target의 MAC주소는 0으로 지정한다.
  3. 호스트 A는 생성된 ARP 패킷을 네트워크으로 브로드캐스트로  전송한다.
 
\
 
  1. 호스트 D는 수신받은 ARP Request에서 Target IP주소가 자신인 것을 확인하고 ARP처리로 넘긴다.
  2. 호스트 D는 ARP Replay 패킷을 생성하고 Target IP와 MAC주소는 ARP Request의 Sender IP와 MAC주소로 설정하고, Sender IP와 MAC주소를 자신의 주소로 채워넣는다.
  3. 호스트 D는 ARP 패킷을 호스트 A로 유니캐스트로 전송한다.
  4. 호스트 A는 ARP Replay를 가지고 해당 MAC주소로 통신을 시도한다.
 
재미 있는 것은 같은 네트워크에 있는 모든 호스트는 ARP Request를 받지만, 응답을 하는 ARP Replay는 ARP Request를 보낸 호스트만 수신받는다. 최근 스위치가 보편화되면서 근본적으로 ARP Replay의 트래픽 자체가 다른 호스트로 전송되지 않는다.
 
좀더 재미난 것은 다른 네트워크에 있는 호스트 인 경우는 해당 호스트의 MAC 주소를 얻는 것이 아니라 게이트웨이의 MAC주소를 얻게된다. 보통 라우터의 MAC 주소이다.
 
 

참조:

 
http://en.wikipedia.org/wiki/Ethernet
http://en.wikipedia.org/wiki/Address_Resolution_Protocol
 

 

반응형

'3.구현 > 보안' 카테고리의 다른 글

c++를 이용한 byte order 변환  (0) 2011.08.11
Socket에서 비동기 connect 처리하기  (0) 2009.09.21