전공 테트리스/데이터통신 및 네트워크

[네트워크 보안] 3. Link Layer

keemnh 2024. 10. 28. 22:21

※ '네트워크 보안 실습을 통한 학습 (Wenliang Du 지음, 이재광 옮김)'을 바탕으로 작성되었습니다.

 

 

MAC 계층과 공격

MAC 계층 = Link 계층

ARP 프로토콜

 

 

2.1 개요

2.2 네트워크 인터페이스 카드 (NIC)

2.3 이더넷 프레임

2.4 ARP

2.5 ARP 캐시 감염 공격

2.6 ARP 캐시 감염을 이용한 중간자 공격

2.7 요약

 

 

2.1 개요

같은 네트워크에 있는 시스템에 패킷을 전달하는 것은 MAC(Medium Access Control) 계층이라는 데이터 링크 계층 작업

전송매체는 이더넷(Ethernet)(프로토콜)

MAC 계층에서 패킷은 전송매체에 적합한  프레임(frame)

실험 환경 설정

 

⬇️ 사진

 

더보기

패킷이 목적지로 전송될 때 목적지가 같은 네트워크에 있으면 패킷이 직접 전달됨. 목적지가 같은 네트워크에 있지 않은 경우 패킷은 같은 네트워크의 >>라우터<<로 전달됨. 두 경우 모두 같은 네트워크의 시스템에 제공됨. 동일한 네트워크에 있는 기기에 패킷을 전달하는 것은 MAC(Medium Access Control) 계층이라는 데이터 링크 계층 작업

TCP/IP 프로토콜 스택에서 각 계층은 고유한 책임이 있음. 전송 계층은 응용 프로그램 간의 통신에 초점을 맞추고, 네트워크 계층은 서로 다른 네트워크에 있는 시스템 간의 통신에 초점을 맞추지만, MAC 계층은 같은 네트워크에 있는 시스템 간의 통신에 초점을 맞춤. MAC 계층에서 패킷은 전송매체에 적합한 프레임으로 캡슐화되어 데이터를 물리 계층으로 전달함. 가장 일반적으로 사용되는 전송 매체는 이더넷이다.

이 장에서는 물리 및 가상 네트워크 인터페이스, 맥 주소와 이더넷 프레임을 포함하여 맥 계층의 몇 가지 필수 개념에 관해 설명한다. 이 걔층에서 실행되는 ARP 프로토콜에 초점을 맞추고 이 프로토콜에 대한 일반적인 공격을 보여준다. ARP를 이용한 공격으로 인터넷에서 널리 사용되는 중간자 공격(Man In The Middle, MITM)을 시작하는 방법을 보여준다.

실험 환경 설정. 이 장에서 수행하는 실험은 같은 LAN에 연결된 세 대의 컴퓨터를 사용해야 한다. 이들 기기에 대한 컨테이너를 사용할 것이다.

 

 

2.2 네트워크 인터페이스 카드 (NIC)

 

Network Interface Card  (닉)

컴퓨터와 네트워크 사이의 물리 또는 논리 링크  // 하드웨어, 논리=가상의

각 NIC는 하드웨어 주소를 갖는다 : MAC 주소

- 이더넷 MAC 주소는 48비트

 

사진 ⬇️ (ifconfig)

 

ifconfig를 통해 인터페이스의 설정사항을 볼 수 있음

마스크.... /24??

 

⬇️ 사진 (패킷 흐름)

 

네트워크에 패킷 들어오면 MAC 주소의 목적지 주소를 본다.

만약 목적지 주소가 카드의 MAC 주소와 일치하면, 커널로 전송한다.

일치하지 않는다면, 버린다 -> 왜? 이더넷은 사용하는 매체가 브로드캐스트이기 때문

 


- 이더넷은 브로드캐스트 매체 사용

- 데이터가 전달될 때 모든 NIC가 프레임 수신 가능

- 무차별(promiscuous) 모드

- NIC은 주소 일치와 상관없이 네트워크에서 수신한 모든 프레임을 커널에 전달

- 이것이 패킷 스니핑을 가능하게 함.

 

더보기

기기는 네트워크 인터페이스 카드를 통해 네트워크에 연결된다. NIC는 기기와 네트워크 간의 물리 또는 논리적인 링크이다. 각 NIC에는 MAC 주소라는 하드웨어 주소가 있다. 일반적으로 사용되는 근거리 통신망(LAN)인 이더넷과 와이파이는 본직적으로 브로드캐스트 매체이며 이는 기기가 단일 공유 매체에 연결되어 있음을 의미한다. 유선 매체에서 데이터가 전달될 때 네트워크의 모든 NIC는 프레임을 받게 된다. 

 

# 커널 내의 일반적인 패킷 흐름

프레임이 매체를 통해 도착하면 헤더의 목적지 주소를 확인하는 NIC 내부 메모리에 복사된다. 주소가 카드의 MAC 주소와 일치하면 직접 메모리 액세스(DMA)를 통해 프레임이 커널의 버퍼에 복사된다. 그런 다음 카드는 cpu에 인터럽트를 걸어 새로운 패킷의 가용성을 알리고, cpu는 버퍼의 모든 패킷을 큐로 복사하여 더 많은 수신 패킷을 위한 버퍼 공간을 만든다. 프로토콜에 따라 이 큐의 데이터를 처리하기 위해 커널에 의해 서로 다른 callback handler 함수를 호출한다. 이 핸들러 함수는 패킷을 사용자-공간 프로그램에 통보한다. 

 

# 무차별모드

이더넷은 브로드캐스트 매체이므로 각 카드는 같은 케이블의 모든 트래픽을 볼 수 있다. 앞서 언급했듯이 카드는 프레임이 자신의 것인지 확인한다. 아니면 프레임은 폐기된다. 대부분의 NIC 카드에는 카드의 기본 동작을 변경할 수 있는 무차별 모드라는 모드가 있다. 이 모드에서 동작할 때 NIC는 목적지 MAC 주소가 카드의 자체 주소와 일치하는지에 관계없이, 네트워크에서 수신한 모든 프레임을 커널로 전달한다. 이것은 패킷 스니핑을 가능하게 한다.

 

 

2.2.1 MAC 주소

 

- 하드웨어 주소, 물리 주소, 이더넷 주소

- 콜론으로 구분 된 2개의 16진수로 구성된 6개 그룹    // (4*2)*6 = 48비트

- ifconfig 명령 이용

 

⬇️ 사진 (ifconfig)

 

더보기

각 네트워크 인터페이스 카드에는 MAC 주소라는 고유한 주소가 있다. 하드웨어 주소 또는 물리 주소라고도 한다. 이더넷은 가장 일반적인 유형의 네트워크 이므로  MAC 주소를 이더넷 주소라고도 한다. 

이더넷주소는 일반적으로 콜론으로 구분되는 2개의 16진수로 구성된 6개 그룹으로 인식할 수 있다. ifconfig 명령을 사용하여 네트워크 인터페이스의 MAC 주소를 얻을 수 있다.

 

 

# MAC 주소 기반으로 추적하기

- MAC 주소는 물리 네트워크 인터페이스 카드에 기록됨   // LAN 카드를 제조할 때 주소를 카드에 박아둠

- 요즘에는 대부분의 카드가 주소 변경을 허용함   // sw적으로 사용자가 임의로, 왜? 하나의 네트워크 안에서만 구분이 되면 됨

- 이것은 모바일 장치의 경우 보안 문제를 일으킬 수 있다.

- 사람이 이동할 때 이 모바일 장치는 근처 와이파이 접속점을 계속 스캐닝한다.

- 공격자가 많은 와이파이 접속점의 데이터에 접근할 수 있는 경우 데이터를 상호연관시켜서 결국 MAC 주소를 소유자의 아이디에 연결할 수 있음

- 프라이버시 보호를 위해 애플사는 네트워크를 스캐닝하는 동안 iOS 장치에서 임의의 MAC 주소를 사용하도록 허용함

- 최근 NIC의 MAC 주소 재구성 가능함 

 

더보기

# MAC 주소를 기반으로 추적하기

MAC 주소는 물리 네트워크 인터페이스 카드에 기록된다. 같은 네트워크에 있는 두 개의 네트워크 인터페이스가 같은 주소를 갖는 것을 방지하기 위해 카드를 제조할 때 MAC 주소를 유일하게 만든다. 이것은 모바일 장치의 경우 보안 문제를 일으킬 수 있다. 

오늘날 대부분의 사람은 하나 또는 여러 개의 모바일 장치를 가지고 있다. 사람이 이동할 때 이 모바일 장치는 근처 와이파이 접속점(Access Point)를 계속 스캐닝한다. 스캔하는 동안 네트워크 인터페이스 카드의 MAC 주소가 사용된다. 따라서 와이파이 접속점은 장치의 유일한 MAC 주소를 알게 된다. 

공격자는 사용자가 누구인지 알 수 없기 때문에 하나의 와이파이 접속점의 데이터만 보는 경우 프라이버시를 위협하지 않는다. 그러나 공격자가 많은 와이파이 접속점의 데이터에 접근할 수 있는 경우 데이터를 상호 연관시켜서 결국 MAC 주소를 소유자의 실제 아이디에 연결할 수 있음이 입증되었다. 

프라이버시를 보호하기 위해 애플사는 네트워크를 스캐닝하는 동안 iOS 장치에서 임의의 MAC 주소를 사용하도록 했으며, 다른 공급업체도 빠르게 따라하고 있다. 이것은 요즘 네트워크 인터페이스 카드의 MAC 주소를 재구성할 수 있기 때문에 가능하다.

 

 

2.2.2 가상 네트워크 인터페이스

 

- 최신 시스템에서 네트워크 인터페이스 카드는 하드웨어일 필요가 없이 소프트웨어가 될 수 있다

- 이 종류의 네트워크 인터페이스를 가상 네트워크 인터페이스(virtual network interface)라고 한다

- 가상 네트워크 인터페이스는 가상 기기, 컨테이너와 클라우드 환경에서 널리 사용된다

- 우리의 실험 설정은 컨테이너를 사용하며, 이 컨테이너 안에 나열된 모든 인터페이스는 가상이다.

 

 

 

# 물리 인터페이스와 가상 NIC

⬇️ 사진

 

 

# 가상 NIC 예 (이런 게 있다 정도만 보기)

 

- 루프백 인터페이스 

⬇️사진

 

// 127.0.0.1 : 고정된 주소 

 

- 더미 인터페이스 (루프백과 비슷, 임의의 ip 주소 설정 가능)

⬇️ 사진

 

// 아까 만든 가상 인터페이스에 임의의 주소 1.2.3.4/24 부여

 

- tun/tap 인터페이스

 

> 가상 사설망 구현에 널리 사용

> 파이프의 다른 쪽 종단이 물리 케이블 대신 사용자-레벨 프로그램    // 물리 인터페이스는 커널과 네트워크 연결

* 사용자-레벨 프로그램 : 패킷의 목적지 주소와 소스 주소를 변형해서 다시 올려주는 형태로 동작

> OS가 나가는 파이프의 한쪽 종단에서 인터페이스로 패킷을 공급하면 패킷 전체가 사용자-레벨 프로그램에 제공

> 다른 방향에서 사용자-레벨 프로그램은 패킷을 생성하고 가상 인터페이스를 통해 커널에 공급

> 사용자-레벨  프로그램은 일반적으로 tun/tap 인터페이스를 통한 상호 작용과 다른 소켓 인터페이스를 통해 커널-레벨 네트워크 스택과 상호 작용

> 이 유형의 인터페이스는 네트워크 터널링을 가능하게 하므로 vpn을 구현하는 데 널리 사용

 * 터널링 : 프로그램에서 주소 치환하여 터널링을 함. 외부에서 내부를 볼 수 없도록 포장하는 것

* vpn : 외부망을 통해서 마치 하나의 네트워크에 있는 것처럼 네트워크를 사용할 수 있는 기술

더보기

최신 시스템에서 네트워크 인터페이스 카드는 하드웨어일 필요가 없다. 이들은 소프트웨어가 될 수 있다. 이 종류의 네트워크 인터페이스를 가상 네트워크 인터페이스라고 한다. 물리 인터페이스가 운영체제와 상호 작용하는 방식을 에뮬레이트한다. os에서는 네트워크 인터페이스가 소프트웨어인지 하드웨어인지에 차이가 없다. os는 이들을 동일하게 취급한다. 인터페이스 구현 내에서 가상 인터페이스는 물리 인터페이스와 크게 다르다.

 

소프트웨어의 이점으로 인해 가상 인터페이스는 새로운 하드웨어를 만들 필요 없이 많은 기능을 구현할 수 있다. 가상 네트워크 인터페이스는 가상 기기, 컨테이너와 클라우드 환경에서 널리 사용된다. 우리의 실험 설정은 컨테이너를 사용하며, 이 컨테이너 안에 나열된 모든 인터페이스는 가상이다.

 

# 물리 인터페이스

추상적인 수준에서 보면 네트워크는 기본적으로 들어오는 트래픽과 나가는 트래픽을 위한 두 개의 파이프로 구성된다. 이 파이프의 한쪽 끝은 os 커널 내의 네트워크 스택에 연결된다. os는 패킷을 보낼 때 패킷을 나가는 파이프에 공급하고 들어오는 파이프에서 패킷을 받는다. 물리 네트워크 인터페이스의 경우 이 파이프의 다른 쪽 종단은 물리 케이블 또는 무선 송수신기에 연결된다. 즉 실제 네트워크에 연결된다. 그림 a의 물리 인터페이스 참고

가상 인터페이스의 경우 파이프의 다른 쪽 종단은 하드웨어가 아니다. 서로 다른 응용 프로그램에 대해 서로 다른 동작을 에뮬레이트할 수 있는 소프트웨어이다. 

 

# 루프백 인터페이스

이 가상 인터페이스는 대부분 운영체제 안에 있다. IP 주소가 127.0.0.1인 lo(local host)라고 한다.

목적지 주소가 127.a.b.c인 패킷은 이 인터페이스로 보내진다. 여기서 a,b,c는 255보다 작은 수가 될 수 있다. 그림 b에서 볼 수 있듯이 lo 인터페이스의다른 쪽 종단은 루프백 동작을 구현하는 소프트웨어이다. 즉, OS에서 패킷을 수신할 때 패킷이 나가는 파이프의 다른 종단에 도달하면 나가지 않는다. 대신에 들어오는 파이프로 피드백된다. OS에게 이것은 수신된 패킷이 된다. 그래서 인터페이스를 루프백이라고 한다. 컴퓨터가 자신에게 패킷을 보내야 할 때 사용된다.

 

# 더미 인터페이스

리눅스는 이 인터페이스에서 임의의 ip 주소를 설정할 수 있다는 점을 제외하고 루프백 인터페이스와 매우 유사한 dummy라는 가상 인터페이스를 제공한다.

더미 인터페이스는 시스템의 공용 서버에 접속해야 하지만 시험 단계에서 실제 서버에 접속하고 싶지 않은 경우에 유용하다. 더미 인터페이스를 만들고 이 인터페이스에 서버의 ip 주소를 할당할 수 있다. 이렇게 하면 서버의 ip 주소에 접속할 때 실제로는 로컬 컴퓨터에서 실행 중인 서버에 접속하는 것이다.

 

# tun/tap 인터페이스

이 가상 인터페이스는 가상 사설망(VPN) 구현에 널리 사용된다. 이 가상 인터페이스의 독특한 점은 파이프의 다른 쪽 종단이 물리 케이블(네트워크) 대신 사용자-레벨 프로그램이라는 것이다. 그림 c 참고

OS가 나가는 파이프의 한쪽 종단(커널?)에서 인터페이스로 패킷을 공급하면 패킷 전체가 사용자-레벨 프로그램에 제공된다. 다른 방향에서 사용자-레벨 프로그램은 패킷을 생성하고 가상 인터페이스를 통해 커널에 공급할 수 있다. 

사용자-레벨  프로그램은 일반적으로 tun/tap 인터페이스를 통한 상호작용과 다른 소켓 인터페이스를 통해 커널-레벨 네트워크 스택과 상호작용한다. 이 유형의 인터페이스는 네트워크 터널링을 가능하게 하므로 VPN을 구현하는 데 널리 사용된다. 

 

 

 

2.3 이더넷 프레임

 

- 헤더, 페이로드, 검사합(checksum)으로 구성

- 헤더에는 목적지 주소, 발신지 주소, 이더넷 유형 정보 포함됨

- 페이로드에는 최소 46바이트에서 최대 1500바이트의 데이터

- 페이로드가 1500바이트보다 큰 ip 패킷인 경우 ip 프로토콜은 단편화 수행

 

 

더보기

이더넷을 통해 데이터를 보낼 때, 데이터는 이더넷 프레임이라는 단위 안에 위치한다. 각 이더넷 프레임은 헤더로 시작하여 페이로드가 뒤따르고 32비트 순환 중복 검사(CRC) 검사합(checksum)으로 끝난다. 

이더넷 헤더에는 목적지 이더넷 주소, 발신지 이더넷 주소, 이더넷 유형 정보가 포함된다. 처음 두 요소는 발신지와 목적지 주소를 지정하고 세 번째 요소는 페이로드 부분에 포함된 데이터 유형을 지정한다. ip 패킷이 포함된 경우 유형은 0x0800(거의 고정)이다. ARP 패킷이 포함된 경우 유형은 0x0806이다.

 

이더넷 하드웨어에서 설정한 요구 사항으로 인해 이더넷 프레임의 페이로드에는 최소 46바이트에서 최대 1500바이트의 데이터가 있어야 한다. 페이로드가 너무 작으면 46바이트에 도달하도록 패딩된다. 페이로드가 1500바이트보다 크면 더 작은 단편으로 나누어야 한다. 단편화는 바로 위 계층에서 수행된다. 예를 들어 페이로드가 1500바잍보다 큰 ip 패킷인 경우 ip 프로토콜은 단편화를 수행한다.

 

Scapy program

 

- 파이썬을 사용하여 이더넷 프레임을 구성

- scapy 모듈은 이더넷 헤더의 각 필드를 클래스 속성에 매핑하는 Ether라는 클래스를 이미 정의

- Ether 클래스에 대한 속성의 이름, 유형 및 기본값

 

 

⬇️ 사진

 

 

// 이더넷은 브로드캐스트를 해서 데이터가 목적지 주소와 맞아야지만 accept하고 아니면 버림

-> 공격을 위해서는 무차별모드(promiscuous mode)에 들어가야 함. 이 모드에서는 dst 주소를 확인하지 않음.

 

// ls (Ether) = 이더넷 헤더에 존재하는 파라미터 종류 

더보기

파이썬을 사용하여 이더넷 프레임을 구성한다. Scapy 모듈은 이더넷 헤더의 각 필드를 클래스 속성에 매핑하는 Ether라는 클래스를 이미 정의되어 있다. Ether 클래스에 대한 속성의 이름, 유형 및 기본값은 다음과 같다. 

 

 

Promiscuous Mode (무차별 모드)

- 이더넷은 브로드캐스트 medium

- NIC는 MAC 주소를 확인함 (자신인 경우 프레임 accept, 아닌 경우 버림)

- 무차별 모드를 허용하면 destination MAC 주소를 확인하지 않음. local 네트워크에 모든 패킷을 take in 함

- 패킷 스니핑에 좋음

 

 

 

 

2.4  ARP 프로토콜

 

 

LAN에서 통신

- MAC 주소를 알아야 한다

- 그러나 우리는 ip 주소만 알고있다.

- 해당 ip 주소의 MAC 주소를 어떻게 알 수 있는가? 

 

ARP : Address Resolution Protocol

- ip로부터 MAC 찾기

 

ARP Request/Reply

⬇️ 사진

 

 

 

Send ARP Request: Example 1

설정에서 호스트 10.9.0.5로 이동해서 tcpdump를 실행하여 eth0 네트워크 인터페이스에서 네트워크 트래픽을 모니터링

- 그런 다음 다른 호스트 10.9.0.6으로 이동

- 10.9.0.5가 ARP 캐시에 없는지 확인

- "ping 10.9.0.5"를 실행

 

⬇️ 사진

 

더보기

인터넷에서 패킷을 보낼 때 목적지의 ip 주소를 알아야 한다. 라우터는 ip 주소에 따라 패킷을 최종 목적지로 라우팅하는 방법을 결정한다. 그러나 컴퓨터가 같은 로컬 네트워크의 다른 컴퓨터에 패킷을 보낼 때 수신자의 네트워크 인터페이스 카드는 MAC 헤더의 주소만 검사하여 의도한 수신자인지를 결정하기 때문에 수신자의 ip 주소를 아는 것만으로는 충분하지 않다. 따라서 송신자는 헤더에 수신자의 MAC 주소를 배치해야 한다. 문제는 목적지의 ip 주소가 주어지면, 이 주소의 MAC 주소를 어떻게 알 수 있는가?

 

<MAC 주소를 얻는 과정>

이것은 2계층의 프로토콜인 ARP(Address Resolution Protocol)를 통해 수행된다. 프로토콜은 매우 간단하다. 컴퓨터가 주어진 ip 주소 x에 대한 MAC 주소를 찾아야 하는 경우 브로드캐스트 메시지를 전체 네트워크에 "누가 ip 주소 x를 가지고 있습니까? 말씀해 주십시오." 라고 보낸다. 같은 LAN에 있는 모든 컴퓨터는 메시지를 받는다. ip 주소가 x인 사람은 보낸 사람에게 자신의 MAC 주소르 응답한다.

 

실험을 통해 ARP가 실제로 어떻게 동작하는지 살펴보자. 설정에서 호스트 10.9.0.5로 이동해서 tcpdump를 실행하여 eth0 네트워크 인터페이스에서 네트워크 트래픽을 모니터링한다. 그런 다음 다른 호스트 10.9.0.6으로 이동한다. 10.9.0.5가 ARP 캐시에 없는지 확인한 후 "ping 10.9.0.5"를 실행한다. 

ping 패킷(ICMP)이 전송되기 전에 호스트 10.9.0.6은 10.9.0.5의 MAC 주소를 알아야 했기 때문에 네트워크의 모든 기기에게 ARP 요청을 보냈다. 10.9.0.5가 MAC 주소와 함께 ARP 응답을 보낸 것을 볼 수 있다. 그 후 실제 ping 패킷이 전송되었다.

 

2.4.1 ARP 메시지 형식

- ARP 프로토콜은 네트워크 계층 주소를 링크 계층 주소로(또는 그 반대로) 변환하도록 설계

 

⬇️ 그림

 

더보기

ARP 프로토콜은 네트워크 계층 주소를 링크 계층 주소로(또는 그 반대로) 변환하도록 설계되었다. 특정 유형의 주소에 고정되어 있지 않다. 예를 들어 네트워크 계층 주소는 IPv4 또는 IPv6 주소일 수 있다. 주소 유형이 다양하므로 ARP 메시지의 크기는 링크 계층과 네트워크 계층 주소 크기에 따라 다르다. ARP 메시지 헤더에는 각 주소의 길이를 지정하는 두 개의 필드가 있다.

위 그림은 네트워크 계층 주소가 IPv4이고 링크 계층 주소가 이더넷 주소인 경우 ARP 메시지의 형식을 나타낸다. 형식은 요청과 응답 모두 동일하다.

 

ARP 요청(Request)

- 송신자는 송신자의 주소 영역(IP와 MAC 모두)과 타겟 영역의 IP 주소를 채운다.

- 송신자가 정확히 알고 싶어 하는 타겟 MAC 주소는 비어 있다.

- 요청에 대한 운영(operation) 코드는 1이다.

 

 

ARP 응답 (reply)

- 타겟 ip의 소유자는 ARP 요청을 보면 ARP 응답 메시지를 구성하여 송신자 주소 영역에 자신의 정보를 입력하고 ARP 요청에서 타겟 영역으로 송신자 주소 정보를 복사한다.

- 응답을 위한 운영 코드는 2로 설정된다.

 

 

Scapy 프로그램

- 이 장에서는 파이썬을 사용하여 ARP 요청/응답 메시지를 구성한다.

- Scapy 모듈은 이미 ARP 클래스를 정의하여 ARP 메시지의 각 필드를 클래스 속성에 매핑한다.

- ARP 클래스에 대한 속성의 이름, 유형 및 기본값은 다음과 같다.

 

⬇️ 사진

 

 

2.4.2 ARP 캐시

 

- 각 패킷을 보내기 전에 브로드캐스트 ARP 메시지를 보내는 것은 많은 대역폭을 낭비한다.

- 이를 피하기 위해 ARP는 캐시를 이용한다.

- 캐시에 응답을 저장한다.

 

⬇️ 사진

 

더보기

각 패킷을 보내기 전에 브로드캐스트 ARP 메시지를 보내는 것은 많은 대역폭을 낭비한다. 이를 피하기 위해 ARP는 캐시를 이용한다. 응답을 받을 때마다 일정 시간 동안 캐시에 응답을 저장한다. 따라서 다음에 동일한 IP 주소로 다른 패킷을 보내는 경우 다른 ARP 요청 대신에 캐시에서 MAC 주소를 검색한다. 항목이 캐시에 머무를 수 있는 기간은 시스템 설정에 따라 다르다. 

arp 명령을 이용하여 캐시 내용을 나열하고 조작할 수 있다. 다음 실험은 ping 명령 전후의 캐시 내용을 보여준다. 명령 전에는 캐시가 비어 있다. " ping 10.9.0.6"을 실행하면 컴퓨터가 10.9.0.6의 MAC 주소를 모르기 때문에 ARP 요청이 전송된다. 캐시에서 볼 수 있듯이 결과가 캐시되어 있다.

 

 

- arp를 이용하여 ARP 항목을 설정하고 삭제할 수도 있다.

 

더보기

다음에서 10.9.0.7에 대한 ARP 항목을 설정한다. (이 항목은 시간 초과되지 않으며 M 플래그로 표시됨). 또한 arp