ARP(Address Resolution Protocol) 주소 변환 프로토콜
RFC 826 에서는 ARP의 개념을 " 장비들이 같은 네트워크에 있는 다른 IP 호스트의 이더넷 하드웨어 주소를 파악하는 데 유용한 방식 " 이라고 설명하고 있다. 상대방의 IP 주소를 이용하여 하드웨어 주소를 알아내는 것이다.
네트워크에서 통신은 IP 주소로만 이루어지는 것처럼 보이지만, 실제로는 하드웨어 주소가 필요하다.
편지주소= IP 주소(서울시 서초구 서초X동 XXX번지)
지리적 주소= MAC 주소(우체국 정문에서 우회전하여 300m 가다가 사거리에서 우회전하여 보이는 큰 빌딩)
중요한 점은 편지주소는 논리적인 주소일 뿐, 실제적으로 편지가 배달될 때는 편지주소 보다는 편지주소에 매칭되는 지리적 주소가 더 중요하다는 말이다.
만약 MAC 주소를 인터넷에 사용한다면 NIC가 바뀔 때마다 컴퓨터의 인터넷 주소는 바뀔 것이며 컴퓨터가 만약 서버라면 인터넷 관련 기관에 다시 등록해야 하는 번거로움이 생길 것이다.
IP 주소와 MAC 주소를 분리하면, NIC가 바뀌어도 IP 주소만 새로 바인딩 시켜주면 끝이다.
IP 주소는 네트워크 ID 부분과 호스트 ID 부분이 나뉘어져 있어서(계층적 주소 라고 함) 네트워크 ID 부분만 보고 라우팅을 하므로 라우팅 테이블의 수가 감소할 것인데(지금은 그렇지도 않은 것 같다)
MAC 주소 같은 수평적 구조를 가지는 주소는 하나씩 라우팅 테이블에 등록된다면 라우터는 동작을 멈추게 될 것이다(초기에는 라우팅에 네트워크 ID를 사용하지 않고 IP 주소를 사용했다고 한다).
ARP 패킷구조
1. Request Packet
sender MAC
sender IP 192.168.0.80
dst address FF-FF-FF-FF-FF-FF (브로드캐스트)
target MAC 00 00 00 00 00 00
target IP 192.168.0.1 (목적지 IP)
op 00 01 (request)
2. Reply Packet
sender MAC 주소 채우고
sender IP 192.168.0.1
dst address (목적지 맥주소) (유니캐스트)
target MAC (보낸 사람의 MAC으로 채우고)
target IP 192.168.0.80 (목적지 IP)
op 00 02 (reply)
ARP Cache
ARP Request를 통하여 얻은 하드웨어 주소는 다음에 또 사용할 수 있으므로 ARP Cache Table에 일정 시간 동안 저장하게 된다.
다음에 데이터를 보낼 때 ARP Cache를 검사하여 있으면 브로드캐스트를 이용하지 않고 바로 보낸다. 브로드캐스트가 줄어서 네트워크의 성능은 향상 된다.
캐시 테이블이 짧게 설정 되는 경우 :
설정 값이 짧으면 네트워크의 호스트들은 지속적으로 ARP Cache Table의 Entry를 교체하게 되고 이로써 많은 브로트캐스트를 전송하게 되며 네트워크의 성능은 떨어지게 된다.
캐시 테이블이 길게 설정 되는 경우 :
어떤 호스트에 다른 IP 주소가 할당될 때 마다 ARP Cache Table에 이전의 하드웨어 주소가 남아 있어서 문제를 일으키게 된다.
일정 시간 동안 저장하게 되는 이유는 호스트의 IP 주소 변경, 혹은 NIC의 교체 등과 같이 IP 주소와 하드웨어 주소의 바인딩 정보가 변경되었을 경우 기존의 ARP Cache Table에 저장된 정보로 통신을 하게 될 경우 통신의 안되는 상황이 발생할 수 있다.
A ----------------- B
A --(데이터)-->>--B
A가 B에게 데이터를 보낼 때
1. 호스트 B가 A와 같은 네트워크인지 다른 네트워크인지를 먼저 알아낸다. (서브넷 마스크)
[같은 네트워크 일 때] ARP캐시 테이블에서 호스트 B의 MAC주소가 있는지 파악 -> 없다면 ARP Process 진행
ARP Process 진행- 네트워크 상에 브로드캐스트로 ARP Request 뿌려진다. (세부 패킷 내용은 사진 참고)
2. 네트워크에 있는 호스트들은 브로드캐스트로 뿌려진 ARP Request를 받고 자신의 ARP캐시 테이블에 추가
3. ARP Request를 받은 호스트 중 해당 호스트 B는 자기 MAC을 ARP Reply 메시지로 유니캐스트 응답한다.
4. ARP Reply 메세지를 받은 호스트 A는 호스트 B의 정보를 ARP캐시 테이블에 추가한다.
5. ARP process는 종료되고 프레임이 호스트 B에 전송된다.
A와 B가 [다른 네트워크 일 때]
1. A는 디폴트 게이트의 MAC 주소를 알아내서 다른 네트워크로 보낸다.
2. 라우터는 B에게 보내준다.
프레임이 이동하는 과정에서 IP주소와 MAC주소는 변화한다.
A-->>--e0(라우터)e1-->>--B
데이터 + IP 주소(호스트 B) + IP 주소(호스트 A) + MAC 주소(호스트 A) + MAC 주소(라우터 e0)
[호스트 A와 라우터 e0 구간]
데이터 + IP 주소(호스트 B) + IP 주소(호스트 A) + MAC 주소(라우터 e0) + MAC 주소(라우터 e1)
[라우터 e0와 라우터 e1 구간]
데이터 + IP 주소(호스트 B) + IP 주소(호스트 A) + MAC 주소(라우터 e1) + MAC 주소(호스트 B)
[라우터 e1와 호스트 B 구간]
호스트 A와 호스트 B 사이에 프레임이 오고갈 때 처음부터 끝까지 IP 주소는 변하지 않고, MAC 주소는 구간마다 변해감을 알 수 있다.
ping통신을 할 때- 라우팅테이블을 보고- 같은네트워크 인지 확인 후- ARP테이블 확인- 등록X-> ARP Request-> mac learning-> 맥테이블 등록->수신된 포트를 제외하고 브로드캐스트->받은 호스트는 ARP등록 후- ARP Reply-> 받고 자신의 ARP테이블 등록
(각 IP 장비의 구현 상황에 따라서 자기 자신이 Target이 아닌 ARP Request를 받았을때, ARP Table에 entry를 등록할 수도 있고 안할 수도 있습니다.)
'네트워크' 카테고리의 다른 글
[네트워크] 이더채널(Ether Channel) 표준 프로토콜 -LACP(Link Aggregation Control Protocol) 정리 -(시스코-주니퍼 LACP 연동 테스트) (0) | 2020.09.04 |
---|---|
[네트워크] VRRP(Virtual Router Redundancy Protocol) 개념 정리 (0) | 2020.09.02 |
[네트워크] IP주소에 대한 정리 (0) | 2020.08.30 |
[네트워크] 화웨이(Huawei) 네트워크 장비 명령어 정리 (Huawei Network Device Command Summary) (0) | 2020.08.27 |
[네트워크] 주니퍼(Juniper) show command 기본 정리 (3) | 2020.08.23 |
댓글