본문 바로가기
Study/Network

[Network] ARP 프로토콜 개념과 실습

by Jamie Lim 2020. 9. 20.

Ethernet(이더넷)이란?

데이터 링크(2계층) 프로토콜 중 하나로 기기 고유의 MAC 주소를 갖고 상호간 데이터를 주고받을 수 있도록 만들어진 프로토콜이다.

 

IEEE 802. Ethernet Frame Format

 

1. Preamble & SFD (Start Frame Delimiter)

  PreambleSFD는 헤더로 인식되지 않으며 단지 Frame의 시작을 알려주기 위한 정보이다. 크기는 항상 7byte(Preamble)1byte(SFC)로 고정되어 있다.

 

2. Ethernet Header

  Destination Address : 목적지(송신) MAC 주소

 

  Source Address : 출발지(수신)의 MAC 주소

   * 다른 프로토콜 구조와 다르게 목적지 MAC 주소가 출발지 MAC 주소보다 앞에 있음

 

  Length : 상위 계층에 사용된 프로토콜이 무엇인지에 대한 정보 (IP : 0x0800, ARP : 0x0806)

 

3. Data

  상위 계층에서 전달받은 데이터 (46 byte – 1500 byte의 크기를 가질 수 있음)

   * 만약 최소 전송 단위인 46byte를 넘기지 못하면 잘못 만들어졌다 생각해 버려지므로 padding을 통해 최소 단위를 채운다.

 

4. Tailer

  Frame Check Sequence (CRC) : 프레임의 오류 확인 (Checksum과 비슷한 역할로 2계층에서만 존재)

 

 

 


ARP 프로토콜이란?

Address Resolution Protocol, 주소 결정 프로토콜

 

네트워크(3계층) 프로토콜 중 하나로 네트워크 상에서 IP 주소를 그에 대응하는 MAC 주소를 가져와준다. 2계층에서 물리적 주소를 사용해 통신하는 경우 목적지 주소를 알아와 캡슐화 하기 위한 목적으로 사용한다.

 

 

출처 - http://egloos.zum.com/wustyle/v/3409644

 

IP를 이용해 MAC 주소를 알아내기 위해 브로드캐스트 방신으로 연결되어 있는 모든 기기들에 Request 메시지를 보내고 ARP Request 메시지를 받은 장시들은 Request를 확인하고 자신의 IP와 같다면 Reply를 보낸다(자신과 IP가 다르다면 무시함). 만약 다른 네트워크에 Request를 보내야 한다면 게이트웨이로 데이터를 전달하기 위해 게이트웨이로 Request를 보낸다.

 

 

 


ARP 패킷

Internet Protocol (IPv4) over Ethernet ARP packet

 

1. Hardware Type (2 byte)

  > 사용 중인 물리 주소(MAC)나 데이터 링크 유형을 정의한다

  > 사용 가능한 전체 물리 주소 유형 필드 값 (이더넷은 1)

 

Type 하드웨어 타입 설명 Type 하드웨어 타입 설명
1 Ethernet 2 Experimental Ethernet
3 Amateur Radio AX.25 4 Proteon ProNET Token Ring
5 Chaos 6 IEEE 802.3 networks
7 ARCNET 8 Hyperchnnel
9 Lanstar 10 Autonet Short Address
11 LocalTalk 12 LocalNet (IBM PCNet or SYTEK LocalNet)
15 프레임 릴레이 16 ATM
17 HDLC 18 광 채널
19 ATM (Asynchronous Transfer Mode) 20 직렬 연결

 

2. Protocol Type (2 byte)

  > 상위 계층에서 어떤 유형의 프로토콜을 사용하는지 정의

  > 일반적으로 IPv4를 사용한다 (0x0800)

 

3. Hardware Address Length (1 byte)

> 하드웨어 주소 값 길이

> 이더넷의 경우 6

 

4. Protocol Address Length (1 byte)

> 상위 계층 프로토콜의 주소 길이

> IPv44

 

5. Opcode (2 byte)

> ARP의 구체적인 동작을 나타냄

동작
1 ARP Request (요청)
2 ARP Reply (응답)
3 RARP Request
4 RARP Reply

 

6. Sender Hardware Address (SHA) (6 byte)

> 출발지(송신)의 MAC 주소

 

7. Sender Protocol Address (4 byte)

  > 출발지(송신)IP 주소

 

8. Target Hardware Address (THA) (6 byte)

> 목적지(수신)의 MAC 주소

  > ARP 요청의 경우 브로드캐스트로 인해 0으로 설정 (FF:FF:FF:FF:FF:FF)

 

9. Target Protocol Address (4 byte)

  > 목적지(수신)IP 주소

 

 

 


ARP 실습

 

실습 환경 : Windows 10 & Ubuntu 18.4 lts (어댑터에 브리지)

 

시작하기 전 arp 패킷을 확인 해 패킷이 없음을 확인한다.

 

 * 만약 패킷이 있다면 -d 옵션을 통해 지워준다. 만약 이미 통신을 해본 관계라 arp 테이블에 있다면 처음에 브로드캐스트를 할 필요가 없어져서 해당 패킷을 잡지 못할 것이다.

sudo arp -d ip주소

 

 

1. Windows -> Ubuntu

 

> Windows cmd를 통해 Ubuntuping 보내기

 

 

> 와이어샤크에서 잡은 arp 패킷

 

 

 

> Request 패킷 분석

 

Destination은 목적지 MAC 주소인데 요청 시 브로드캐스트를 이용하므로 ff:ff:ff:ff:ff:ff가 된다

▶ Source는 출발지 MAC 주소로 호스트의 MAC 주소다

▶ Type을 통해 이 패킷이 ARP 프로토콜임을 알 수 있다

 

 

현재 이 패킷은 arp request의 정보를 갖고 있기 때문에 opcode1임을 확인할 수 있다

▶ Sender MAC/IP address에는 송신자 호스트의 MAC/IP가 들어간다

▶ Target IPping을 보낼 때 알고 있기 때문에 IP에 대한 정보는 있지만 아직 MAC은 찾지 못해 정보가 없다

 

 

> Reply 패킷 분석

 

▶ ReplyUbuntu에서 Windows로 보내는 패킷이다

목적지가 호스트로 WindowsMAC 주소임을 볼 수 있다

당연히 출발지는 게스트로 Ubuntu MAC 주소다

 

 

현재 이 패킷은 arp reply의 정보를 갖고 있기 때문에 opcode2임을 확인할 수 있다

▶ Sender MAC/IP address에는 송신자인 우분투의 MAC/IP가 들어간다

▶ Target MAC/IP address에는 수신자인 호스트의 MAC/IP가 들어간다

 

 

> ICMP 패킷 분석

 

 

> Request 패킷 분석

 

▶ Destination은 목적지 MAC으로 호스트에서 우분투에 요청을 하므로 우분투 MAC 주소다

▶ Source는 출발지 MAC으로 호스트의 MAC 주소다

 

 

▶ Source는 출발지 IP를 담고 있으므로 호스트 IP

▶ Destination은 목적지 IP를 담고 있으므로 우분투의 IP

 

 

[ Windows -> Ubuntu ICMP 패킷 ]

 

 

[ Windows -> Ubuntu ARP 패킷 ]

 

 

2. Ubuntu cmd를 통해 Windowsping 보내기

 * 마찬가지로 arp 테이블을 비우고 실습하였다

 

 

> 와이어샤크에서 잡은 arp 패킷

 

 

 

> Request 패킷 분석

 

Destination은 목적지 MAC 주소인데 요청 시 브로드캐스트를 이용하므로 ff:ff:ff:ff:ff:ff가 된다

▶ Source는 출발지 MAC 주소로 우분투의 MAC 주소다

▶ Type을 통해 이 패킷이 ARP 프로토콜임을 알 수 있다

 

 

현재 이 패킷은 arp request의 정보를 갖고 있기 때문에 opcode1임을 확인할 수 있다

▶ Sender MAC/IP address에는 송신자 우분투의 MAC/IP가 들어간다

▶ Target IPping을 보낼 때 알고 있기 때문에 IP에 대한 정보는 있지만 아직 MAC은 찾지 못해 정보가 없다

 

 

> Reply 패킷 분석

 

▶ ReplyWindows에서 Ubuntu로 보내는 패킷이다

목적지는 게스트로 우분투의 MAC 주소임을 볼 수 있다

당연히 출발지는 호스트 WindowsMAC 주소다

 

 

현재 이 패킷은 arp reply의 정보를 갖고 있기 때문에 opcode2임을 확인할 수 있다

▶ Sender MAC/IP address에는 송신자인 우분투의 MAC/IP가 들어간다

▶ Target MAC/IP address에는 수신자인 호스트의 MAC/IP가 들어간다

 

 

* ICMP 패킷은 제대로 전달이 되지 않아 계속해 no response가 떠 생략하도록 하겠다

 

 

[ Ubuntu -> Windows ICMP 패킷 ]

 

 

[ Ubuntu -> Windows ARP 패킷 ]

'Study > Network' 카테고리의 다른 글

AWS  (0) 2020.11.26
Google Cloud Platform 인스턴스 생성하기  (0) 2020.11.09
[Network] TCP 프로토콜 개념 정리  (0) 2020.09.20
[Network] ARP spoofing 개념 정리  (0) 2020.09.20
[Network] 네트워크 아키텍쳐의 종류  (0) 2020.09.14

댓글