상세 컨텐츠

본문 제목

[network] ARP(주소결정 프로토콜)이란?

programming/network

by 보라돌멩이 2020. 8. 19. 11:31

본문

ARP

"Address Resolution Protocol"

주소결정 프로토콜

 

: OSI 7 Layer에서 Layer3(데이터 링크 계층)에 위치한 프로토콜이며,

IP주소를 기반으로 MAC주소를 알아오는 역할을 함.

2계층에서 물리적 주소를 사용하여 통신하는 경우

목적지 주소를 알아야 Encapsulation을 완성하기 위한 목적으로 씀.

 

 

실제로 Wireshark를 이용하여 패킷을 잡아보면

출발지 주소가 자기 랜카드의 MAC주소,

도착지 주소는 브로드캐스트(255.255.255.255)가 됨.

 

 

예시로

192.168.0.0/24 환경에서 자신의 IP는 192.168.0.2이고,

192.168.0.10의 IP 주소를 가진 PC의 MAC주소를 알려고 할 때

info부분에 "Who has 192.168.0.10?  Tell 192.168.0.2"라고 써 있는걸 볼 수 있음.

이런 식으로 얻어온 ARP 정보는 ARP 테이블에 올라감,

ARP테이블은 캐시 개념이라 일정 시간이 지나면 사라짐.

 

 

 

IP를 이용하여 MAC주소를 알아내기 위해 연결된 모든 장비에게 Request 메세지를 보내고,

ARP Resquest 메세지를 받은 장비들은 누구에게 전달된 Request인지 IP주소를 확인하여

자신의 IP일 경우 Reply를 보내줌.

 

ARP프로토콜은 Request를 보내기 위해 브로트캐스트 방식을 사용

목적지 IP주소가 같은 네트워크일 경우에는 해당 장비를 직접 찾는 Request메세지를 브로드캐스트로 보내고,

다른 네트워크일 경우에는 직접 브로드캐스트를 보낼 수 없으니

Gate-way로 데이터를 전달하기 위해 Gate-way에게 Request를 보냄.

 

 

 실제로 ARP 패킷을 캡쳐한 모습

Wireshark의 Info란을 보면

"who has"로 시작해서 "tell~"끝나는 내용은 ARP의 Request패킷

'who has 172.16.119.2 ? tell 172.16.119.1'라는 Request패킷이 있다면,

172.16.119.2 가 누군지 안다면 172.16.119.1으로 MAC주소를 보내달라는 뜻으로 해석 가능

 

'~ is at ~'내용의 Reply(Response)패킷은

'172.16.119.2 is at 00:0c:29:78:6b:e2'라는 내용이 있다면

네가 물어본 172.16.119.2의 MAC주소는 00:0c:29:78:6b:e2라는

내용으로 해석 가능

 

 

 

ARP Header

Hardware Type

 사용중인 물리 주소나 데이터 링크 유형을 정의

 사용 가능한 전체 물리주소 유형 필드값

 

Protocol Type

 사용중인 프로토콜 주소 유형의 정의

 

Hardware Address Length

 해당 패킷에 사용되는 물리 주소의 길이(byte)를 정의

 

Protocol Address Length

 패킷에 사용되는 프로토콜 주소의 길이를 정의

 

Opcode

 요청이나 응답 패킷인지와 발생하는 주소 해결 유형을 정의

 

Sender Hardware Address

 요청하는 장비의 1,2계층의 물리 주소를 표현

 

Sender Protocol Address

 요청하는 장비의 1,3계층의 논리 주소를 표현

 

Target Hardware Address

 수신하는 장비의 하드웨어 주소를 표시

 

Target Protocol Address

 수신하는 장비의 1,3계층의 논리 주소를 표현

 

 

 

 

 

 

ARP Cache Table

 

ARP로 MAC주소를 알아오는 과정에서 브로드 캐스트 방식을 사용하는데,

브로드캐스트는 많이 일어날 수록 장비의 과부화와 성능저하를 가져오기 때문에 좋지 못함.

그래서 한번 알아온 정보는 ARPtable에 일정시간 동안 저장하고,

통신하고자 하는 목적지의 MAC주소가 ARP table에 저장되어 있는 경우에는 ARP 프로토콜이 동작되지 않음.

 

 

 

 

ARP명령어

 

Ubuntu Linux에서 arp 명령어

 

 

 

ARP종류

1. ARP

 

2. RARP(Reverse Address Resolution Protocol)

 반대의 개념은 RARP

  MAC주소를 가지고 IP주소를 알아내는 프로토콜

 IP를 자동으로 할당받는게 아니라 이미 다른 PC에 할당된 IP의 MAC주소만을 가지고 알아오는 것

 

3.Proxy ARP

 호스트에 게이트웨이가 설정되어 있지 않은 경우에 사용

 라우터가 ARP프레임을 수신했을 때, 해당 네트워크가 자신의 라우팅 테이블에 있으면 자신의 MAC주소를 알려주는 기능

 

4. Inverse ARP

 Frame-Relay 환경에서 송신지 IP와 목적지 DLCI를 맵핑하여 FR MAP에 저장하는데,

처음 연결을 한 경우 해당 목적지 IP에 대한 정보가 없으므로 자신과 연결된 모든 선로로 멀티플렉싱을 해 목적지 IP를 알아내는 것

 

5. Gratuitous ARP

 **Gratuitous (공짜로 얻은, 무상의, 불필요한)

 같은 네트워크에서 IP주소가 중복되는지 확인하고 다른 장치들이 자신의 IP주소를 갱신하도록 주기적으로 IP를 알려주는 역할

 

 

 

 

[출처]

1.

https://namu.wiki/w/ARP

 

ARP - 나무위키

Reverse Address Resolution Protocol ARP와는 반대로 MAC 주소를 가지고 IP 주소를 알아내는 프로토콜이긴 한데, ARP 의 반대 동작을 하는 것은 아니다. 인터넷 초기 하드 디스크가 달리지 않은 단말이 부팅할

namu.wiki

 

2. 

https://bignet.tistory.com/52

 

ARP (주소결정프로토콜)

ARP (Address Resolution Protocol) ARP를 그대로 풀어서 해석하면 주소결정프로토콜 이라는 뜻이다. 일반적으로 통신은 사용자가 어떤 값을 생성하여 전달하거나 어떤 정보를 요청하기 위해 동작을 시킬

bignet.tistory.com

3. 

https://blockdmask.tistory.com/189?category=257298

 

[데통] ARP protocol 에 대해서

안녕하세요. BlockDMask입니다. 오늘은 ARP 프로토콜에 대해 알아보겠습니다. > ARP 프로토콜 이란? ARP Protocol (Address Resolution Protocol - 주소 결정 프로토콜) - 네트워크 상에서 IP 주소를 물리적 네..

blockdmask.tistory.com

 

'programming > network' 카테고리의 다른 글

[network] Wireshark란?  (0) 2020.08.19
[hw] PTP(Precision Time Protocol)  (0) 2020.07.17

관련글 더보기