ARP
Address Resolution Protocol · 주소 결정 프로토콜
는 같은 링크에서 주소에 대응하는 링크 계층 주소를 알아내는 프로토콜이다. 원격 서버에 보낼 때는 서버의 MAC이 아니라 경로표가 선택한 다음 홉의 MAC을 구한다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- IP 결과를 실제 목적지 주소로 연결해 프레임을 완성한다.
- 학습한 IP와 MAC의 대응을 캐시에 두어 매 패킷마다 브로드캐스트하지 않도록 한다.
- Probe·Announcement와 결합해 주소 충돌 탐지와 소유권 알림에 활용한다.
02어떤 순서로 동작하나
- 게이트웨이 선택
원격 목적지의 경로가 G를 가리키고 유효한 이웃 캐시가 없다면 G의 MAC을 조회한다. 최종 IP 목적지는 원격 서버다.
- Request 브로드캐스트
A는 DA를 ff:ff:ff:ff:ff:ff, 를 192.0.2.10, 를 192.0.2.1로 설정한다. 모르는 대상 MAC인 는 0으로 둔다.
- G가 자신을 식별
G는 가 자기 주소임을 확인하고 보통 A에게 유니캐스트 Reply를 보낸다. Reply의 /는 G의 MAC과 .1이다.
- 응답의 수신자와 캐시
Reply의 /는 A의 MAC과 .10이다. A는 응답을 처리해 .1→G MAC 대응을 저장한다.
- 기다리던 패킷 전송
A는 원격 서버행 IP 패킷을 G의 MAC으로 캡슐화한다. IP 목적지를 게이트웨이 .1로 바꾸는 과정은 아니다.
03먼저 알아둘 용어와 구성요소
- Sender Protocol Address다. 과 의 에서는 송신 측 주소를 담는다.
- Sender Hardware Address다. 메시지에 들어 있는 송신 측 링크 계층 주소다.
- Target Protocol Address다. 과 의 에서는 해석하려는 대상 주소를 담는다.
- 메시지의 동작 코드다. 일반 는 1이고 Reply는 2다.
- Target Hardware Address다. 가 질의하거나 응답하는 대상의 링크 계층 주소다.
- 대상 주소를 사용하는 노드의 를 묻는 메시지다. 보통 같은 링크에 브로드캐스트한다.
- 요청한 주소에 대응하는 를 알려 주는 메시지다. 일반 질의에 대한 응답은 보통 요청자에게 유니캐스트한다.
- 라우터 등이 다른 대상의 주소에 대해 자신의 MAC으로 응답하여 전달을 대신하는 기능이다. 모든 라우터에서 항상 적용되는 동작은 아니다.
- 최근 학습하거나 설정한 주소와 의 대응을 저장하는 표다.
- 패킷을 다음으로 넘겨줄 IP 계층의 대상이다. 원격 목적지로 갈 때는 최종 목적지 대신 라우터의 MAC을 로 알아낸다.
실습: 두 라우터 사이에서 IP와 링크 주소의 역할 나누기
목적지 IP는 끝까지 유지하면서 각 링크의 전달 방식이 바뀌는 과정을 구성도와 첫 홉 명령으로 추적한다.
실습 구성과 전제
- 두 LAN은 192.168.0.0/24와 192.168.2.0/24이며 중간 192.168.1.0/24는 Serial 링크다.
- 명령은 실제 구성도의 정상 동작을 재현하도록 정리한 예시다. 그림만으로 통신 성공을 주장하지 않는다.
주소·마스크로 첫 홉 결정
- PC1의 192.168.0.2/24에서 PC2의 192.168.2.2는 다른 네트워크다. 따라서 PC2를 직접 하지 않고 게이트웨이 192.168.0.1을 찾는다.
- 최종 목적지 PC2와 다음 홉 R2의 192.168.1.2는 서로 다른 역할이다.
textPC1> show ip PC1> ip 192.168.0.2/24 192.168.0.1실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.
원본 크기로 보기 ↗- 양쪽 PC는 서로 다른 /24에 있고 LAN마다 Hub가 있다.
- R1–R2는 Serial 연결이며 양끝 LAN의 Ethernet과 다른 링크다.
확인 기준게이트웨이가 없거나 마스크가 다르면 라우터 설정 이전의 로컬 판단부터 달라진다.
목적지와 반환 경로 연결
- R1은 PC2 LAN을 R2로 보내고 R2는 PC1 LAN으로 돌아가는 경로를 알아야 한다. 기본 경로가 없을 때 한쪽만 등록하면 요청 또는 응답이 끊긴다.
- 경로표의 프리픽스와 은 스위치 MAC 학습표와 별개다.
textR1(config)# ip route 192.168.2.0 255.255.255.0 192.168.1.2 R2(config)# ip route 192.168.0.0 255.255.255.0 192.168.1.1 R1# show ip route R2# show ip route실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.
확인 기준R1·R2에서 서로 반대 LAN의 S 경로와 중간 연결 경로를 확인한다.
ICMP와 링크 헤더 별도 관찰
- LAN에서 는 게이트웨이의 주소를 준비하고 는 IP 안에서 전달된다. 가 없는 이 구성에서는 출발지·목적지 IP가 유지된다.
- MAC은 링크마다 바뀔 수 있다. Serial 구간에 MAC 교체 설명을 그대로 적용하지 않는다.
textPC1> ping 192.168.2.2 Wireshark 표시 필터: arp || icmp구성도의 확인 명령과 표시 필터
확인 기준왕복 응답과 양끝 캡처를 확인한다. 링크가 초록색이라는 사실만으로 성공을 판단하지 않는다.
실습에서 확인한 동작 원리
- 은 다음 홉을 정하고 링크 계층은 그 다음 홉까지 전달한다.
- 요청과 반환 경로를 따로 설명해야 성공 조건을 완성할 수 있다.
동작·명령 참고 문서
실습: ARP Request·Reply와 Linux 이웃 캐시 읽기
10.0.0.5가 10.0.0.3의 MAC을 얻는 패킷에서 두 주소 공간과 캐시 상태를 연결한다.
실습 구성과 전제
- 와 VPCS가 같은 10.0.0.0/24 링크에 연결된 격리 실습이다.
- 캐시를 먼저 기록한다. 이 실습을 위해 운영망의 전체 캐시를 지우지 않는다.
캐시와 명령 환경 확인
- ip neigh의 REACHABLE은 최근 도달성 확인이 있고 STALE은 그 확인이 오래되었다는 뜻이다. STALE 자체를 삭제·통신 불가로 읽지 않는다.
- 사진의 : command not found는 프로그램 오류다. 의 sh 도 IOS show 축약으로 동작하지 않는다.
textip neigh ping -c 3 10.0.0.3 ip neigh같은 링크에 트래픽을 보내고 캐시를 비교하는 재구성 예시
원본 크기로 보기 ↗- 10.0.0.3·ens224·lladdr·REACHABLE 행이 보인다.
- 뒤 조회에는 STALE이 있고 arp 및 sh arp는 셸 오류로 끝난다.
확인 기준명령 오류와 네트워크 장애를 분리한다.
Request의 질문 대상 확인
- 목적지는 Broadcast지만 Target MAC은 0이다. 브로드캐스트 전달은 목적지가 결정한다.
- Sender IP 10.0.0.5가 Target IP 10.0.0.3을 묻는다. 대상 MAC을 아직 몰라 0으로 채운 것은 정상이다.
원본 크기로 보기 ↗- Ethernet Destination은 ff:ff:ff:ff:ff:ff, Opcode는 request (1)이다.
- Sender IP 10.0.0.5, Target IP 10.0.0.3, Target MAC 00:00:00:00:00:00이다.
확인 기준1과 Target IP가 의도한 상대인지 함께 확인한다.
Reply와 캐시 대조
- 10.0.0.3은 자신의 MAC을 Sender 필드에 넣고 10.0.0.5를 Target으로 지정한다. 목적지도 요청자의 MAC이다.
- ip neigh의 MAC과 Reply의 Sender MAC을 비교한다. 성공이 이후 나 응용 서비스 성공까지 보장하지는 않는다.
textip neigh show 10.0.0.3 Wireshark 표시 필터: arp실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.
원본 크기로 보기 ↗- Opcode reply (2), Sender IP 10.0.0.3이 보인다.
- Target IP 10.0.0.5와 Target MAC은 요청한 단말을 가리킨다.
확인 기준Sender/Target 관계가 바뀌고 캐시가 응답 주소와 일치해야 한다.
실습에서 확인한 동작 원리
- 의 IP 필드와 MAC 필드를 분리해서 읽는다.
- 캐시 상태·응답 패킷· 성공은 각각 다른 범위를 증명한다.
동작·명령 참고 문서
실습: /24 호스트 판단과 /25 인터페이스 설정 비교
마스크가 로컬·원격 판단을 바꾸는 이유를 show ip와 인터페이스 출력으로 계산한다.
실습 구성과 전제
- 192.168.3.1/25 설정과 192.168.10.66/24 단말은 별도 사례다. 한 네트워크의 연속 실행으로 합치지 않는다.
- 호스트와 라우터의 주소·마스크를 각각 기록한다.
호스트의 같은 네트워크 계산
- 192.168.10.66/24를 AND하면 192.168.10.0이므로 .130도 같은 링크라고 판단한다. 물리적으로 라우터 너머라는 사실을 자동으로 알아내지는 못한다.
- GATEWAY 0.0.0.0은 기본 게이트웨이가 설정되지 않은 상태다. 이 때문에 .130을 직접 하는 상황을 일반적인 기본 게이트웨이 동작과 구분한다.
textPC1> show ip PC1> show arp실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.
원본 크기로 보기 ↗- IP/MASK는 192.168.10.66/24다.
- GATEWAY 0.0.0.0과 MTU 1500이 별도 항목으로 보인다.
확인 기준PC가 .130의 MAC을 직접 찾는다면 /24 판단과 맞는다.
별도 /25 설정의 범위 계산
- 255.255.255.128은 /25다. 192.168.3.1은 네트워크 .0, 호스트 .1~.126, 브로드캐스트 .127의 범위에 속한다.
- ip address의 두 번째 값은 게이트웨이가 아닌 마스크다. no shutdown 뒤 LINK·LINEPROTO up은 원격 경로 성공까지 의미하지 않는다.
textinterface Ethernet2/0 ip address 192.168.3.1 255.255.255.128 no shutdown end show ip interface brief실제 설정에 맞춘 명령 정리
원본 크기로 보기 ↗- Ethernet2/0에 192.168.3.1 255.255.255.128이 설정된다.
- no sh 뒤 LINK와 LINEPROTO의 up 메시지가 나타난다.
확인 기준/25를 /24로 읽으면 범위가 두 배가 되어 설계와 달라진다.
로컬 판단의 패킷 결과 비교
- .66↔.130 캡처에서 .66이 .130을 하고 라우터 쪽 MAC이 응답한다. 이는 맥락으로 읽어야 한다.
- Echo request의 TTL 64와 reply의 TTL 63은 반대 방향 패킷이다. 두 값만 빼서 한 요청의 홉 수를 확정하지 않는다.
원본 크기로 보기 ↗- Who has 192.168.10.130? Tell 192.168.10.66이 보인다.
- 이후 Echo request/reply에 TTL 64·63이 각각 나타난다.
확인 기준TTL 감소는 같은 방향의 패킷을 다른 관측 지점에서 비교해야 입증된다.
실습에서 확인한 동작 원리
- 주소 자체보다 마스크로 계산한 네트워크가 로컬 판단을 결정한다.
- 인터페이스 up· 응답· 왕복은 서로 다른 성공 증거다.
동작·명령 참고 문서
up/up 뒤에도 ping이 실패한 기록을 단계별로 진단하기
인터페이스 활성화 전후의 실제 실패 기록을 읽고 링크 상태·직접 연결 경로··최종 성공 원인을 분리한다.
실습 구성과 전제
- R1 FastEthernet0/0은 10.5.128.2/22이고 연결 상대는 10.5.128.1/22이다. 같은 /22에 속하므로 정상 connected 경로가 있으면 기본 경로를 사용할 대상이 아니다.
- 구성도에는 내부 서버망 10.5.132.0/22와 R2 연결망 10.5.136.0/22도 있다. 이번 진단 범위는 R1에서 바로 연결된 10.5.128.1까지로 제한한다.
주소 계획에서 같은 망인지 계산한다
- /22의 마스크는 255.255.252.0이고 세 번째 옥텟의 블록 크기는 4다. 10.5.128.1과 .2는 10.5.128.0~10.5.131.255 범위에 함께 들어간다.
- 목적지가 직접 연결된 이웃이므로 R1은 올바른 인터페이스로 를 통해 상대 MAC을 알아낼 수 있어야 한다. 내부 다른 LAN과 문제를 처음부터 섞지 않는다.
원본 크기로 보기 ↗- R1의 f0/0에 10.5.128.2/22, 위쪽 연결 상대에 10.5.128.1/22가 표시된다.
- R1 e2/0의 10.5.132.1/22 서버망과 e2/1의 10.5.136.1/22 R2 연결망은 별도로 그려져 있다.
확인 기준출발지 인터페이스·목적지·마스크를 고정한다. 이름이나 이전·이후 주소를 바꾸어 가며 다른 시험을 같은 결과로 비교하지 않는다.
administratively down을 먼저 해결한다
- 실행 기록에서는 주소를 입력한 뒤 ping 0/5가 반복되고 show ip interface brief에 administratively down/down이 나온다. IP 설정은 인터페이스 활성화 명령을 대신하지 않는다.
- 해당 인터페이스에 no shutdown을 적용한 뒤 LINK와 LINEPROTO up 로그가 나타났다. 이 변경이 해결한 것은 관리적 비활성 상태다.
textshow ip interface brief configure terminal interface FastEthernet0/0 no shutdown end show ip interface brief ping 10.5.128.1실제 실패 기록의 핵심 명령을 사건 순서대로 정리했다.
확인 기준상태가 up/up으로 바뀌었는지 확인한 뒤 동일 출발지·목적지로 시험한다. no shutdown 입력 사실만으로 복구되었다고 적지 않는다.
up/up 뒤의 0/5를 별도 실패로 다룬다
- 기록에는 up/up 뒤에도 Success rate is 0 percent (0/5)가 나온다. 따라서 링크 활성화만으로 통신을 복구했다고 볼 수 없다.
- 이 시점에는 connected 경로, 응답, 상대 주소·마스크, 가상 연결과 필터를 확인해야 한다. 기본 경로를 추가하기 전에 10.5.128.1에 대한 조회가 직접 연결 경로를 선택하는지 본다.
textshow ip route 10.5.128.1 show arp show interfaces FastEthernet0/0 ping 10.5.128.1 source 10.5.128.2실패 시 추가하면 유용한 관찰 명령. 이 출력이 원 기록에 존재하는 것처럼 제시하지 않는다.
확인 기준다음 조회는 원인을 좁히기 위한 재구성이다. 해당 · 출력이 기록에 없으므로 특정 단계가 실제 원인이었다고 확정하지 않는다.
성공 기록은 보존하고 인과관계는 제한한다
- 뒤에는 5/5 성공과 RTT min/avg/max 16/56/84 ms가 남아 있다. 그러나 그 사이 상대 장비와 연결 상태가 모두 기록되지 않아 최종 해결 원인을 하나로 확정할 수 없다.
- 기본 경로를 넣은 직후에도 0/5가 한 번 더 기록되어 있다. 같은 망의 이웃 접근을 기본 경로 추가로 해결했다고 설명하면 실제 사건 순서와 원리를 모두 놓친다.
text관찰 순서 1. FastEthernet0/0: administratively down / down 2. no shutdown → LINK·LINEPROTO up 3. ping: 0/5 4. 기본 경로 추가 뒤에도 ping: 0/5 5. 이후 별도 시험: 5/5, RTT 16/56/84 ms원 실행 기록의 상태·결과를 요약했다. 3~5 사이의 모든 외부 변경이 기록된 것은 아니다.
확인 기준보고서에는 최초 상태, 변경, 바로 뒤의 실패, 나중 성공을 각각 기록한다. 최종 성공만 남기거나 미기록 원인을 채워 넣지 않는다.
실습에서 확인한 동작 원리
- up/up은 연결의 필요 조건이며 IP 이웃 도달 가능성과 같은 뜻이 아니다.
- 시간상 앞선 설정과 나중 성공을 연결하려면 같은 시험 조건과 추가 증거가 필요하다.
04예제로 따라가기
- 같은 의 A=192.0.2.10, B=192.0.2.20이며 서로의 항목이 없다고 하자. MAC은 각각 MAC-A와 MAC-B로 기호화한다. A는 Sender=(192.0.2.10, MAC-A), Target IP=192.0.2.20인 Request를 브로드캐스트한다. Target MAC을 모르는 상태와 목적지 브로드캐스트를 혼동하지 않는다.
- B는 자신이 대상임을 판단하고 A의 IP→MAC-A 대응을 저장한다. 이 순간 B의 캐시는 채워졌지만 A는 아직 MAC-B를 알지 못한다. B는 Sender=(192.0.2.20, MAC-B), Target=(192.0.2.10, MAC-A)인 Reply를 MAC-A로 보낸다. 브로드캐스트 요청의 응답이 반드시 브로드캐스트일 이유는 없다.
- A가 유효한 Reply를 받아 MAC-B를 저장하면 대기 중인 IP 패킷을 MAC-B로 보낼 수 있다. 구현의 큐·재시도 정책에 따라 처음 보낸 응용 요청의 지연은 달라질 수 있다.
05혼동하기 쉬운 점과 확인 기준
- 원격 목적지 IP에 직접 를 반복하면 호스트의 판정이나 정적 on-link 경로를 조사한다. 정상 게이트웨이 경로에서는 원격 서버 대신 다음 홉의 MAC이 필요하다.
- 같은 요청이 반복되는데 대상 쪽에 도착하지 않으면 ·트렁크·포트 상태가 후보가 된다. 대상 캡처에 요청이 있으면 그다음은 대상 주소 설정과 응답 송신 여부다.
- Reply의 Sender IP·MAC, Target IP·MAC, 수신 인터페이스를 대조한다. 응답을 보았다는 사실만으로 자신의 캐시가 해당 응답을 수용했다고 결론내리지 않는다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
RFC 826: Packet format·Generation·Reception
필드와 수신 의사 코드를 이어 읽어 어느 캐시가 언제 갱신되는지 추적한다.
- 목적지와 의 차이
- 이 선택한 다음 홉을 조회
- 기존 항목 병합과 Target의 신규 학습
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.