ARP

데이터 통신에서는 4개의 주소가 필요하다. 송신처의 IP 주소와 MAC 주소, 수신처의 IP 주소와 MAC 주소송신처

자신의 MAC 주소는 송신할 인터페이스에 고정된 주소를 사용

송신처 IP 주소는 송신할 인터페이스에 수동이나 DHCP에서 설정된 IP 주소를 사용

ARP는 수신처의 MAC 주소를 결정하는데 사용되는것 Address Resolution Protocol

이 IP 주소의 호스트님, 당신의 MAC 주소를 알려 주세요 라고 질문하는 프로토콜

수신처의 IP 주소에 대응한 MAC 주소를 조사하기 위해 질문한다.

  1. 사용자 애플리케이션이 수신처 IP 주소를 결정한다.

  2. 수신처 IP 주소에 대해 MAC 주소를 질문한다.

  3. 그 IP 주소를 가진 컴퓨터는 MAC 주소를 가르쳐준다.

MAC 주소를 알 기위해 ARP 테이블을 참조한다.

  1. 송신을 원하는 컴퓨터는 먼저 자신의 ARP 테이블을 참조한다

  2. ARP 테이블에 수신처 IP 주소가 없을 경우 ARP 요청을 브로드 캐스트한다.

  3. ARP 요청의 수신처를 확인하고 자신인 경우에는 응답한다. 그렇지 않은 경우는 파기한다.

  4. ARP 응답을 받으면 ARP 테이블에 응답 결과를 추가로 기술한다.

MAC 주소는 변경될 수 있기 때문에 ARP 테이블에서 일정 시간이 지나면 데이터가 사라진다.

ARP를 파기하는 이유

  • 인터페이스 고장 등으로 MAC 주소가 변경되어도 대응할 수 있도록 하기 위해

네, 맞습니다! 정확하게 말하면:

ARP는 로컬 네트워크(같은 서브넷) 내에서만 작동합니다.


📌 왜 ARP는 로컬 네트워크에서만 동작하나?

ARP의 목적은 간단합니다:

“같은 네트워크에 있는 상대의 MAC 주소를 알아내기 위해” (예: 192.168.0.20의 MAC 주소가 뭐야?)

ARP는 **L2(데이터 링크 계층)**에서 동작하며, 브로드캐스트(목적지 MAC 주소: FF:FF:FF:FF:FF:FF)로 요청을 보냅니다.


✅ 동작 예시 (같은 서브넷일 때만 가능)

예:

  • 내 IP: 192.168.0.10

  • 목적지 IP: 192.168.0.20 (같은 서브넷: /24)

  • ARP 요청: "192.168.0.20 갖고 있는 장치야, 네 MAC 주소 뭐야?"

  • 브로드캐스트 → 192.168.0.20만 응답

➡️ 같은 브로드캐스트 도메인 내니까 가능


❌ 다른 네트워크일 경우에는?

예:

  • 내 IP: 192.168.0.10/24

  • 목적지 IP: 10.0.0.5

⛔ 내 서브넷이 아니므로, ARP는 10.0.0.5에 직접 절대 보낼 수 없음

→ 대신, 기본 게이트웨이(예: 192.168.0.1)에게 패킷을 전달해야 하므로:

  1. ARP는 게이트웨이의 MAC 주소를 알아내는 데 사용됨

  2. 이후 게이트웨이가 목적지까지 전달


🧠 정리

상황
ARP 사용 여부
설명

같은 서브넷

✅ 사용

목적지 IP의 MAC 주소 직접 알아냄

다른 서브넷

❌ 직접 사용 불가 ✅ 대신 게이트웨이 MAC을 ARP로 알아냄

목적지는 라우터가 대신 찾아줌

✅ 핵심 요약

같은 네트워크(서브넷)가 아니면 MAC 주소를 직접 알아낼 수 없습니다. 그래서 해당 IP에게 직접 ARP 요청을 보내는 것이 아니라, 기본 게이트웨이(라우터)의 MAC 주소를 알아내기 위한 ARP 요청을 보냅니다.


📦 예시 상황

  • 내 PC:

    • IP: 192.168.1.100

    • 서브넷: /24192.168.1.0 ~ 192.168.1.255

    • 게이트웨이: 192.168.1.1

  • 목적지: 8.8.8.8 (Google Public DNS) → 내 서브넷이 아님


🧭 실제 동작 순서

  1. 클라이언트는 8.8.8.8의 IP 주소를 얻음 (예: DNS 응답 등)

  2. 내 IP와 서브넷 마스크를 비교해서 "같은 네트워크가 아니다" 판단

  3. "나는 직접 8.8.8.8에게 전송할 수 없어" → 그래서 기본 게이트웨이 192.168.1.1에게 대신 전달시켜야 함

  4. 내 ARP 캐시에 192.168.1.1의 MAC 주소가 있는지 확인

    • 없으면: 192.168.1.1에게 ARP 브로드캐스트

      "192.168.1.1 갖고 있는 사람, MAC 주소 뭐야?"
  5. 게이트웨이 MAC 주소를 알아낸 뒤, → IP 패킷의 목적지 = 8.8.8.8이더넷 프레임의 목적지 MAC 주소 = 192.168.1.1

➡️ IP 패킷은 그대로 유지되고, ➡️ MAC 주소만 hop-by-hop으로 계속 바뀌면서 전달


🧠 정리된 핵심 개념

항목
설명

ARP 요청은 누구에게 보내는가?

항상 같은 서브넷에 있는 IP에게만

목적지가 다른 서브넷이면?

게이트웨이 IP의 MAC 주소를 ARP로 알아냄

실제 IP 패킷의 목적지는?

최종 목적지 IP 그대로 (8.8.8.8 등)

실제 프레임의 MAC 목적지는?

게이트웨이의 MAC 주소 (라우터가 받아서 다음 hop으로 전달함)


✅ 한 줄 요약

다른 네트워크의 대상에게 직접 ARP를 보내는 것이 아니라, 게이트웨이에게 보내기 위한 MAC 주소를 ARP로 알아내고, IP 패킷은 그대로 유지된 채 라우터를 통해 전달됩니다.


필요하다면 이 흐름을 실제 Wireshark로 찍어서 8.8.8.8로 ping 보낼 때 어떤 ARP 요청이 발생하는지 보여드릴 수도 있어요!

나의 말:

이 메시지는 udp로 전송됨?

ChatGPT의 말:

좋아요! 질문의 맥락상, "이 메시지"는 아마도 ARP 요청 메시지를 말하는 거죠? 그렇다면 정답은 다음과 같습니다:


ARP는 UDP를 사용하지 않습니다.

✅ ARP는 자체적인 L2(데이터 링크 계층) 프로토콜입니다. 즉, IP 계층이나 UDP/TCP 계층 위에서 동작하지 않아요.


📦 계층 구조에서 본 ARP의 위치

scss복사편집┌──────────────┐
│ Application │  ← HTTP, DNS 등 (L7)
├──────────────┤
│   Transport  │  ← TCP, UDP (L4)
├──────────────┤
│   Network    │  ← IP, ICMP (L3)
├──────────────┤
│ Data Link    │  ← Ethernet, ARP (L2)
└──────────────┘
  • ARP는 IP 위도 아니고, UDP 위도 아니며, Ethernet(이더넷 프레임) 위에 직접 탑재됩니다.


🧭 ARP 패킷이 전송되는 방식

  • 이더넷 프레임의 EtherType 필드0x0806이면 → 그 프레임은 ARP 패킷이라는 뜻입니다.

  • 예: ARP 요청 시 프레임 구조

    Ethernet Frame
    ├─ Destination MAC: FF:FF:FF:FF:FF:FF (브로드캐스트)
    ├─ Source MAC: 00:11:22:33:44:55
    ├─ EtherType: 0x0806 (ARP)
    └─ ARP Payload
          ├─ Opcode: 1 (Request)
          ├─ Sender IP: 192.168.0.10
          ├─ Target IP: 192.168.0.1
          └─ ...등

➡️ UDP 헤더는 존재하지 않습니다.


✅ 요약 정리

항목
설명

ARP는 몇 계층에서 동작하나?

L2 (데이터 링크 계층)

UDP나 TCP 위에서 작동하나?

❌ 아니요, IP도 쓰지 않음

전송 방식

이더넷 브로드캐스트 프레임 (0x0806)

포트 번호 존재 여부

❌ 없음 (UDP/TCP 아님)


✅ 한 줄 요약

ARP는 UDP를 사용하지 않고, IP도 사용하지 않으며, 이더넷 프레임에 직접 실려 전송되는 L2 프로토콜입니다.

Last updated