일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HTTP
- DP
- map
- string
- PROJECT
- branch
- localstorage
- html5
- 자바스크립트
- trie
- 이분 탐색
- MySQL
- ERD
- insomnia
- 백준 9527번
- 그래프 탐색
- JavaScript
- Next
- ccw 알고리즘
- router
- 트라이
- MongoDB
- Keys
- 게임 서버 아키텍처
- pm2
- vector insert
- 그리디
- Prisma
- Express.js
- Github
Archives
- Today
- Total
dh_0e
[Network Layer] ARP (Address Resolution Protocol) 본문
Network Programming/Network Layer
[Network Layer] ARP (Address Resolution Protocol)
dh_0e 2025. 4. 22. 22:37Address Mapping (주소 매핑)
논리 주소와 물리 주소
- 호스트와 라우터는 네트워크 계층(IP 계층)에서는 논리 주소(IP 주소)로 식별됨
- 반면 물리 계층(데이터 링크 계층)에서는 물리 주소(MAC 주소)로 식별됨
→ 즉, IP 주소는 범용적이지만, MAC 주소는 로컬 네트워크 한정 주소
정적 매핑 (Static Mapping)
- 논리 주소(IP)와 물리 주소(MAC)를 테이블 형태로 수동 연결
- 문제점: 물리 주소는 변경될 수 있음
→ 테이블이 오래되면 잘못된 정보가 될 수 있음
동적 매핑 (Dynamic Mapping)
- IP 주소를 MAC 주소로 자동으로 변환하는 프로토콜 사용
- 대표적인 프로토콜:
ARP (Address Resolution Protocol): IP 주소 → MAC 주소 변환
RARP (Reverse ARP): MAC 주소 → IP 주소 변환 - RARP는 DHCP 등장 이후 거의 안 씀 (DHCP가 더 유연하고 강력함)
ARP는 논리 주소(IP)를 물리 주소(MAC)로 변환하는 동적 매핑 프로토콜이며, 정적 매핑의 한계를 해결한다.
ARP의 역할
- ARP는 IP 프로토콜로부터 논리 주소(IP 주소)를 입력으로 받아
→ 해당 IP에 대응하는 물리 주소(MAC 주소)를 찾아냄
→ 찾아낸 MAC 주소를 데이터 링크 계층(2계층)으로 넘겨줌
즉, 네트워크 계층과 데이터 링크 계층 사이에서 주소를 변환해 주는 중개자 역할을 수행함.
ARP는 IP 주소를 MAC 주소로 변환해 데이터 링크 계층에 전달하는 역할을 한다.
Packet Format
- ARP 패킷은 다음과 같은 필드들로 구성됨
Hardware Type (하드웨어 유형)
- 어떤 데이터 링크 계층 프로토콜을 사용하는지 명시
→ 예: Ethernet은 1번
Protocol Type (프로토콜 유형)
- 어떤 네트워크 계층 프로토콜을 사용하는지 나타냄
→ 예: IPv4는 0x0800 (16진수)
Source Hardware Address (출발지 MAC 주소)
- 발신자의 물리 주소(MAC)
- 가변 길이 필드
Source Protocol Address (출발지 IP 주소)
- 발신자의 논리 주소(IP)
- 가변 길이 필드
Destination Hardware Address (목적지 MAC 주소)
- 수신자의 MAC 주소
- ARP 요청일 경우 이 부분은 비어 있음
Destination Protocol Address (목적지 IP 주소)
- 수신자의 논리 주소(IP)
우리가 알고자 하는 MAC 주소에 대응되는 IP 주소
ARP 패킷은 발신자와 수신자의 IP 및 MAC 주소 정보를 담아 주소 매핑을 요청하거나 응답하는 구조다.
ARP 캡슐화 (Encapsulation)
- ARP 패킷은 데이터링크 계층 프레임(Ethernet frame)에 직접 담김
- 프레임의 Type 필드를 통해 ARP 패킷임을 표시함
→ 예: Ethernet Type 필드 값이 0x0806이면 ARP
4가지 사용 사례
Case 1: 같은 네트워크 안에서 통신할 때
- 송신자가 같은 네트워크의 다른 호스트에게 패킷을 보내고 싶을 때
- 송신자는 IP 헤더에 있는 목적지 IP 주소를 보고
→ 그 IP에 대응되는 MAC 주소를 ARP를 통해 찾아야 함
Case 2: 다른 네트워크의 호스트에게 전송하려는 경우
- 송신자가 다른 네트워크의 호스트에게 패킷을 보내고 싶을 때
동작 과정
- 송신 호스트는 목적지 IP 주소를 확인하고
- 라우팅 테이블을 조회해서 다음 홉(next hop) 라우터의 IP 주소를 찾음
- 라우팅 테이블이 없다면, 기본 게이트웨이(default router)를 참조함
- 이제 ARP는 목적지 호스트의 MAC 주소를 찾는 게 아니라,
→ 다음 홉 라우터의 IP 주소에 해당하는 MAC 주소를 찾는 것!
Case 3: 라우터 → 다른 네트워크의 호스트로 전송
- 송신자가 다른 네트워크에서 datagram을 받은 경우
→ 이 경우, 라우터는 다음 홉 라우터의 IP 주소를 기준으로 그에 해당하는 MAC 주소를 ARP로 조회
Case 4: 라우터 → 같은 네트워크의 호스트로 전송
- 송신자가 자신과 같은 네트워크에 있는 호스트에게 datagram을 받은 경우
→ 이 경우는 일반적인 ARP 방식처럼 목적지 호스트의 IP 주소에 해당하는 MAC 주소를 ARP로 조회함
다른 네트워크로 데이터를 보내려면, ARP는 목적지가 아닌 다음 홉 라우터의 MAC 주소를 조회한다.
같은 네트워크 안에서 통신 시, 목적지 IP의 MAC 주소를 찾기 위해 ARP 요청을 전송한다.
라우터도 ARP를 사용하며, 목적지에 따라 다음 라우터나 호스트의 MAC 주소를 조회한다.
ARP Cache Update
IP와 MAC 주소의 매핑을 저장하는 임시 테이블
- ARP 요청/응답을 통해 얻은 정보를 캐시에 저장하여
→ 다음 통신 시 중복 요청 없이 빠르게 처리 가능 - 각각의 Host는 각자의 ARO Cache를 가짐
- 매핑 정보는 low level에서 cache화 시킴
요청 대상이 A일 때 (예: B가 A의 MAC 주소를 요청함)
- A는 ARP 요청에서 다음 정보를 추출함:
- 보낸 사람 IP (Sender Proto = B)
- 보낸 사람 MAC 주소 (Sender HW)
- A는 이 정보를 자신의 ARP 캐시에 저장
- A는 자신의 MAC과 IP 주소를 응답(ARP Reply)에 포함하여 보냄
- 이더넷 프레임의 목적지 MAC 주소는 요청자(B)의 MAC 주소로 설정됨
- B는 응답을 받은 후, A의 IP와 MAC 주소의 매핑 정보를 자신의 캐시에 저장
요청 대상이 A가 아닌 경우 (예: B가 C에 대한 요청을 보냄, A가 받음)
- A는 요청의 발신자 정보(B)를 보고 처리함:
- A의 캐시에 B에 대한 정보가 이미 있다면 → 덮어씀
- 없다면 → 무시하고 저장하지 않음
- cmd > arp -a 명령어로 확인 가능
- 현재 시스템이 알고있는 IP <-> MAC 주소 매핑 목록 출력
- 동적(Dynamic): ARP 요청/응답을 통해 자동으로 얻은 정보
- 정적(Static): 시스템이나 운영체제가 고정적으로 설정한 항목
- 동적 항목은 1200초간 유효하고, 정적 항목은 시스템이 고정 등록
ARP 요청/응답 시 상대의 주소 정보를 자동 저장하며, 관련이 없는 요청은 발신자 정보가 없다면 무시하거나 있다면 덮어쓴다.
Proxy ARP
- 라우터가 특정 호스트들을 대신해 ARP 요청에 응답하는 기법 (ARP 기능 확장)
- 주로 서브넷 효과(subnetting effect)를 만들기 위해 사용됨
동작 방식
- 어떤 장비가 호스트 A의 IP 주소를 가진 장치의 MAC 주소를 ARP 요청으로 묻는다
- A가 속한 네트워크에 있는 라우터가 그 요청을 가로채서,
→ 자신의 MAC 주소를 응답(ARP Reply)으로 보냄
→ 즉, "호스트 A는 나야!"처럼 행동함 - 이후 실제 패킷이 오면, 라우터는 진짜 호스트 A로 전달
목적
- 서로 다른 네트워크에 있는 호스트들 간의 통신을
→ 마치 같은 네트워크에 있는 것처럼 위장하여 연결시킴
Example
상황: Mobile Node (이동 노드) A가 다른 네트워크로 이동했을 때
- 모바일 노드 A는 고정된 IP 주소를 계속 사용해야 함 (IP 주소는 그대로)
- 하지만 실제로는 다른 네트워크(외부 네트워크)로 이동함
- 다른 노드 B가 A에게 데이터를 보내기 위해 ARP 요청을 하면
→ A는 없지만, Home Agent가 대신 응답함 (Proxy ARP 역할) - 노드 B는 ARP 응답을 통해
→ A의 IP 주소에 대응하는 MAC 주소를 Home Agent의 MAC으로 저장하게 됨 - 따라서 이후 패킷은 A가 아닌 Home Agent로 전송됨
Proxy ARP는 라우터가 특정 호스트를 대신해 MAC 주소를 응답하여, 다른 네트워크를 하나처럼 보이게 만든다.
Directed ARP
- ARP 캐시에 저장된 항목은 보통 1200초(20분)의 유효 기간을 가짐
- 이 시간이 지나면 캐시에서 삭제될 예정임
동작 방식
- 캐시 항목이 만료되기 직전이면,
- 단일 대상에게 unicast ARP 요청을 보냄
→ 즉, 이 MAC–IP 매핑이 아직 유효한지 물어봄 (아직 이 번호 계속 쓰냐?) - 만약 해당 인터페이스가 ARP 응답(ARP Reply)을 하면
→ 수명이 1200초로 재설정됨 (초기화됨) - 응답이 없으면 → 캐시에서 삭제
Directed ARP는 캐시 만료 전 대상에게 직접 ARP 요청을 보내 응답이 있으면 수명을 연장한다.
'Network Programming > Network Layer' 카테고리의 다른 글
[Network Layer] ICMPv4 (Internet Control Message Protocol Version 4) (0) | 2025.04.23 |
---|---|
[Network Layer] IPv4 Datagrams (1) | 2025.04.22 |
[Network Layer] Delivery and Forwarding of IP Packets (1) | 2025.04.22 |
[Network Layer] IPv4 Address (0) | 2025.04.21 |
[Network Layer] Network Layer 기초 (0) | 2025.04.20 |