ARP 프로토콜은 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC 주소를 IP주로를 이용해서 알아오는 프로토콜이다. 이것을 시각화하기 위해 VMware를 통해 자가 이더넷 통신을 하고 WireShark를 이용해 패킷 캡쳐를 해볼것이다. 

 

같은 네트워크 대역에서 통신을 한다고 하더라도 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP주소와 MAC주소가 모두 필요하다. IP주소는 알고 MAC 주소는 모르더라도 ARP를 통해 통신이 가능하다.

 

ARP Message 구성요소 총 28bytes ( 단위 byte )

hardware type(2계층에서 사용할 프로토콜 타입-> 이더넷 프로토콜0001)=2,

protocol type(IPv4 0800)=2,

hard size(addresslength=06)=1, protocol size(addresslength=04)=1,   //여기까지 왠만하년 고정값 

opCode(ARP Request 000*)=2, send할때는 1 request할때는 2

senderEthernet(시작 Mac주소) =6, senderIP=4

targetEthernet  (도착 Mac주소) =6, targetIP=4

 

ARP message구조
A에서 B로 통신할려할때 message의 구성요소

ARP란? ip주소를 통해 MAC adrress를 알아오는과정 

1.

senderMacAddress와 senderIPAddress와 targetMac은 모르기때문에 00 00 00 00으로 세팅 목적지 B의 TargetIPAdress 저장 

NILayer로 encapsulation함

 2.

이더넷 프레임으로 캡슐화 하기위해 앞에 ARP message와

앞의 FF FF FF(목적지 MacAddress)모르기 때문에 F로 세팅 (2진수로보면 1로 꽉채운거임 - >BroadCast주소가 됌 )!!

이렇게 되면 모두에게 ARP요청을 보내게 된다. 그럼 중간에 2계층장비 SWITCH에서 2계층까지만 deCapsulation한다. 목적지 주소가 BroadCast이므로 네트워크 연결되어 있는 전부에게 다 보낸다.

 

전체한테 보내지고 각 컴퓨터 3계층에서 deCapsulation됌

3.

이제 deCapsulation된 곳에서 TargetIPAddress와 비교한 후 목적지가 일치하지 않으면 패킷 자체를 Drop 버려버림 

목적지IP주소와 자기 IP주소가 같다면 응답 Protocol 아까 sender에서 이제 Opcode만 0001 -> 0002로 바뀌고 본인의 MAC주소를 Packet의 TargetMacAddress에 넣어서 Request보낸다 . 

패킷에 자신의 Mac주소를 담음

4. 

여기서 어디서 받았는지 알기 때문에 HHHHHHHHH로 되어 있는곳을 MAC주소를 담고 목적지 주소와 출발지 수소를 swap한다. 그 다음  2계층 스위치에서 decapsulation한 후에  A에 다시 전달한다.

패킷을 받은 후 ARP 캐시테이블에 저장

ARP CashTable은 통신 했던 컴퓨들의 주소를 남기는 ARP TABLE이다. cmd창에 "arp -a" 명령어로 확인 가능

참고 동영상 

https://www.youtube.com/watch?v=-M_S50Ga384 

 

+ Recent posts