junyeokk
Blog
Network·2025. 06. 14

MAC address와 ARP protocol

MAC 주소

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.46.06.png
항목MAC 주소IP 주소
계층링크 계층 (Layer 2)네트워크 계층 (Layer 3)
역할같은 네트워크 내에서 프레임 전송서로 다른 네트워크 간의 라우팅
길이48비트 (6바이트)보통 32비트 (IPv4)
형태16진수 (예: 1A-2F-BB-76-09-AD)10진수 점 표기 (예: 128.119.40.136)
위치성물리적 위치에 독립 (고정됨)위치 기반 (네트워크에 따라 변경)
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.46.36.png
  • MAC (Media Access Control) 주소는 같은 네트워크(LAN) 내에서 프레임이 어느 장치로 가야 하는지를 알려주는 식별자
    • 48비트 주소 (LAN에서 주로 사용)
      • 일반적으로 16진수 12자리로 표현됨
        • ex, 1A-2F-BB-76-09-AD
    • NIC에 영구적으로 저장됨
      • 제조사에서 부여, 고유함
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.46.47.png

ARP (Address Resolution Protocol)

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.47.00.png
  • IP 주소는 아는데 MAC 주소는 모를 때?
    • ex, 137.196.7.14로 IP 패킷을 보내고 싶음
      • 그런데 MAC 주소가 없으면 프레임을 구성할 수 없음
      • 이 떄 사용하는 게 바로 ARP
  • ARP 테이블
    • 모든 호스트와 라우터는 자신만의 ARP 테이블을 가지고 있음
    • 테이블은 IP ↔ MAC 주소 매핑 정보 저장
  • TTL (Time To Live)
    • 이 매핑은 영원히 유지되지 않음
    • 보통 20분 지나면 자동 삭제, ARP 요청을 다시 보냄
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.47.14.png
  • A의 ARP 테이블에 해당 IP가 없으면
    • LAN 전체에 브로드캐스트로 ARP 요청 전송
    • C, D 포함한 모든 노드가 요청을 수신하지만, IP가 일치하는 노드만 응답 (여기서는 B)
    • A는 응답 받은 정보를 자신의 ARP 테이블에 저장
    • 이후 A는 MAC 주소를 써서 프레임 전송 가능
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.47.23.png
  • B가 ARP 응답 전송
    • B는 요청의 목적 IP가 자기 IP와 일치하는 것을 확인
    • 자기 MAC 주소(58-23-D7-FA-20-B0)를 포함한 ARP 응답을 A에게 직접 전송
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.47.37.png
  • A가 응답 받고 ARP 테이블 업데이트
    • A는 응답을 수신한 후 B의 IP-MAC 매핑을 자신의 ARP 테이블에 저장
    • 137.196.7.14 → 58-23-D7-FA-20-B0 (TTL: 500)
  • 아재 A는 해당 MAC 주소를 사용해 프레임 전송 가능

다른 서브넷으로 라우팅하는 addressing

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.47.55.png
  • 시나리오
    • A의 IP: 111.111.111.111, MAC: 74-29-9C-E8-FF-55
    • B의 IP: 222.222.222.222, MAC: 49-BD-D2-C7-56-2A
    • 라우터는 두 개의 인터페이스를 갖고 있음
      • 왼쪽(서브넷 A쪽): IP 111.111.111.110, MAC E6-E9-00-17-BB-4B
      • 오른쪽(서브넷 B쪽): IP 222.222.222.220, MAC 1A-23-F9-CD-06-9B
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.48.07.png
  • 상황 설명
    • A는 IP 주소 111.111.111.111을 가진 호스트
    • B는 다른 서브넷에 있는 호스트로, IP 주소는 222.222.222.222
    • A는 B에게 직접 전송할 수 없어 라우터 R을 거쳐야 함
  • 1: IP 계층에서 IP 데이터그램 생성
    • IP 패킷 정보
      • IP 출발지: A의 IP → 111.111.111.111
      • IP 목적지: B의 IP → 222.222.222.222
  • 2: 링크 계층 (Ethernet 프레임) 생성
    • 링크 계층 정보
      • MAC 출발지: A의 MAC → 74-29-9C-E8-FF-55
      • MAC 목적지: 라우터 R의 MAC → E6-E9-00-17-BB-4B
    • A는 프레임을 R로 전송함 (실제 목적지는 B이지만, 다음 홉은 R임)
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.48.19.png
  • 3: A가 만든 프레임을 R이 받음
    • MAC 출발지: A의 MAC 74-29-9C-E8-FF-55
    • MAC 목적지: 라우터 R의 MAC E6-E9-00-17-BB-4B
    • IP 출발지: A의 IP 111.111.111.111
    • IP 목적지: B의 IP 222.222.222.222
    • 이 프레임이 라우터 R의 인터페이스에 도착함
  • 4: R에서 B에게 전달할 준비를 함
    • 링크 계층에서 MAC 주소 확인
      • 목적 MAC이 자기 것(R의 MAC)이므로 수신
    • 프레임에서 IP 데이터그램 추출
      • 프레임 헤더 제거, IP 계층으로 전달
    • IP 헤더 확인
      • 목적지 IP = B (222.222.222.222)
      • R 자신이 목적지가 아니므로 포워딩 필요
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.48.30.png
  • 5: 포워딩 대상 인터페이스 결정
    • R은 자신의 라우팅 테이블을 봄
    • 목적지 IP가 222.222.222.222므로 적절한 출력 인터페이스를 결정함
    • 여기서는 B와 연결된 인터페이스
  • 6: 새로운 Ethernet 프레임 생성
    • R은 다음 홉인 B로 프레임을 새로 만들어야 함
    • IP 계층 정보는 그대로 유지함
      • 출발지 A → 111.111.111.111
      • 출발지 B → 222.222.222.222
    • 링크 계층 (MAC 주소)은 새롭게 설정
      • 출발지: R의 B쪽 인터페이스 MAC → 1A-23-F9-CD-06-9B
      • 목적지: B의 MAC 주소 → 49-BD-D2-C7-56-2A
    • 라우터는 IP 주소를 그대로 유지하면서, MAC 주소는 다음 홉에 맞게 새로 설정해서 프레임을 다시 만듬
      • IP 계층은 end-to-end (A → B)
      • MAC 계층은 hop-by-hop (A → R, R → B)
%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-14_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_11.53.30.png %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-10_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_6.49.03.png
  • 7: 프레임 수신 및 MAC 주소 확인
  • 8: 프레임에서 IP 데이터그램 추출
    • Ethernet 프레임의 헤더 제거
    • 안에 담긴 IP 데이터그램 추출
    • IP 헤더
      • 출발지: 111.111.111.111 (A)
      • 목적지: 222.222.222.222 (자기 IP)
    • IP 계층도 자신이 목적지임을 확인
  • 9: IP 계층으로 전달
    • 수신된 IP 데이터그램을 상위 계층 (ex, TCP, UDP, 애플리케이션 등)으로 전달
      • 이제 데이터는 완전 도착했고, B는 처리할 준비가 된 상태