Skip to content

Latest commit

 

History

History
145 lines (109 loc) · 6.54 KB

05. ARP 프로토콜.md

File metadata and controls

145 lines (109 loc) · 6.54 KB

통신하기 전 반드시 필요한 ARP 프로토콜

ARP가 하는 일

ARP 프로토콜은 같은 네트워크 대역에서 통신을 하기 위해 IP 주소를 이용해서 MAC 주소를 알아오는 프로토콜

따라서 IP 주소만 입력해도 ARP 프로토콜이 상대방의 MAC 주소를 알아오고, 같은 네트워크 대역에서 MAC 주소를 이용해 통신을 하게 된다.

ARP Spoofing 공격

  • 상대방의 ARP table을 속이는 네트워크 공격
  • 옛날 공격인데 요즘에도 사용됨

ARP 프로토콜의 구조

  • ARP는 28바이트이다.(이더넷은 14바이트임)
  1. 하드웨어 타입
  • 2계층에서 사용하는 프로토콜의 타입
  • 16진수로 0001이 오며 이는 이더넷을 뜻한다 (2계층은 거의 이더넷만 온다고 보면 된다.)
  1. 프로토콜 타입
  • IPv4 프로토콜의 타입인 0800이 온다.
  1. Hardward Address Length
  • 맥주소를 의미하며 맥주소의 길이 6byte가 온다. 06이 들어간다.
  1. Protocol Address Length
  • IPv4 길이가 들어가며 4byte이고 04가 들어간다.
  1. Opcode(Operation code)
  • 어떻게 동작하는 지를 나타내는 코드 값인데 2개 밖에 없다.
  • ARP 프로토콜은 IP 주소를 입력하면 상대방의 MAC 주소를 알아오는 프로토콜이다.
  • 즉, 요청하고 있는지 응답하고 있는 지를 나타낸다. 따라서, 1로 보내면 상대방은 2로 작성해서 보내게 된다. 그러므로 1은 요청, 2는 응답이 되는 것이다.
  • 물어볼 때 1, 응답할 때 2
  1. 출발지의 MAC 주소
  • 6바이트
  • 여기서 주의할 것은, 이더넷만 다른 프로토콜과는 다르게 '목적지의 MAC주소'가 먼저 온다는 것이다.
  • 일반적으로는 출발지의 MAC 주소가 먼저 온다.
  1. Source Protocol Address(IPv4): 4바이트
  2. 목적지의 MAC 주소 : 6바이트
  3. Source Protocol Address(IPv4)(4바이트)

위의 1~4까지는 고정 값이라고 봐도 무방하다. 0001 0800 06 04

ARP 프로토콜의 통신의 과정

IP주소로 MAC 주소를 알아오는 과정

  • 맥 주소를 알아온 다음에 통신이 시작됨
  • 최초에 통신을 할 때 먼저 이 과정이 꼭 필요

같은 LAN 대역 A와 192.168.0.30이 통신하고 싶을 때 어떻게 해야할까? MAC 주소는 모르는 상태임

1. A 컴퓨터가 ARP 요청을 한다.

  • 맥 주소 몰라서 00 00 으로 적음

2. ethernet protocol 인캡슐레이션

  • F로 꽉 채움 (이진 수에서 1로 채운 것과 같음)
  • 브로드 캐스트 주소가 됨
  • 같은 네트워크 대역의 모든 것에게 보냄

3. 스위치 (2계층 장비)

  • 2계층까지만 디캡슐레이션
  • 이더넷 프로토콜 깐 다음 목적지 맥주소 확인해서 보내주는데 현재 브로드 캐스트이기 때문에 같은 네트워크 주소에게 모두 보냄

  • 본인 IP 주소랑 목적지 IP 주소 일치 하지 않는 경우 패킷을 버린다.

4. ARP 응답

  • 목적지 MAC 주소를 포함해서 작성 (aa aa aa aa)
  • 목적지 주소를 알고 있으므로 브로드 캐스트를 할 필요 없다

5. 스위치로 전달

6. A에게 전달

  • 디캡슐레이션을 통해 MAC 주소 확인
  • ARP 캐시 테이블 에 IP와 MAC 주소 등록

ARP 테이블

통신 했던 컴퓨터들의 주소는 ARP(캐시) 테이블에 남는다.

  • 일정 시간이 지나면 없어짐
  • 아니면 수동으로 등록해줘야 함

브로드 캐스트

  • ARP 통신 기준
    • MAC 주소를 확인하기 위해 브로드 캐스트 수행
    • 이더넷 프로토콜을 통해 내부 네트워크 대역 내에서 모든 호스트에게 요청을 보내는 통신 방법
    • 3계층 장비의 경우에 외부 네트워크로 해당 요청을 보내지 않음

ARP 실습

# window 기준
# arp 캐시 테이블 확인
arp -a

와이어샤크를 이용한 패킷 캡쳐

  • Who has ... (ARP request)
  • is at ... (ARP reply)

ARP 요청

ARP 프로토콜

  • Operation Code : 0001 ARP 주소 확인 요청
  • MAC 주소가 비어 있음

이더넷 프로토콜

  • 목적지 주소 : ff:ff:ff:ff:ff:ff, 브로드캐스트 수행
    • 이더넷 프로토콜은 특이하게 목적지 주소를 먼저 작성한다.
  • 상위 프로토콜 타입 : ARP
  • ARP payload 뒤에 0으로 구성된 패딩padding이 붙어있다. 최소 프레임 크기(60 Byte)를 채우기 위함.
    • 이더넷 프로토콜 14 Byte + ARP 프로토콜 28 Byte + padding 18 Byte
    • 와이어샤크에서 2계층 캡슐화 수행 도중 패킷을 캡쳐하는 경우엔 패딩 정보가 빠져있기도 한다.

ARP 응답

ARP 프로토콜

  • Operation Code : 0002 ARP 주소 응답
  • MAC 주소가 채워져 있음

이더넷 프로토콜

  • 목적지 주소 존재, 유니캐스트 수행

참고) 프레임의 크기

  • 최소 60 Byte / 최대는 유동적이나 보통 1514 Byte