컴퓨터 네트워크 - week 14 (2)

deutan·2025년 12월 3일

computer-network

목록 보기
14/14

ARP(Address Resolution Protocol)

ARP는 Logical Address(IP 주소)를 Physical Address(MAC)와
Mapping 해주는 역할을 한다.

hop-to-hop delivery를 할 때 필요한 MAC주소를 얻기 위해 사용하는 프로토콜이다.

System A가 System B(141.23.56.23)의 MAC주소를 알아내고 싶다.


이때 ARP Frame을 보내게 된다.
Destination address(B의 MAC)은 모르기 때문에 1로 채워서 Broadcast한다.

이때 연결된 모든 장비들이 Destination IP를 보고 자신이 아니면 응답하지 않고
자신이면 Source Address(A의 IP, MAC)을 보고 자신의 MAC을 알려준다.


ARP 구조이다.

따라서 ARP Request는 broadcast이며
Reply는 unicast가 된다.

ARP 사용에는 4가지의 경우가 존재하는데

1. 같은 네트워크 상의 Host to Host
2. 다른 네트워크로 나가기 위한 Host to Router
3. 네트워크 간의 Router to Router
4. 도착지에서의 Host 전달 Router to Host

처음 A는 B의 MAC을 모르기 때문에 1로 채워 보내고
ARP 정보에는 B의 MAC주소를 0으로 초기화 한다.

B는 들어온 ARP Data를 보고 자신의 MAC주소를 담아 Reply한다.


이렇게 주고 받은 ARP를 저장하고 관리하는 테이블이 Cache-control module이다.

ARP는 크게 3가지 모듈로 동작하는데
1. Output module
2. Input module
3. Cache-control module

여기서 Output, Input은 ARP 기준이다(IP Packet이 아님).
ARP를 보내는 모듈이 Output이 되고 ARP를 받는 모듈이 Input이다.

Cache-control 모듈은 3가지의 State를 가진다.
Resolved(R), Pending(P), Free(F)

R: IP주소에 맞는 MAC 주소를 테이블에 보유
P: Request를 보내고 Reply를 기다리는 상태
F: 비어있는 공간


ARP Output module의 슈도코드이다.
IP Packet을 받아 MAC주소를 알아내기 위해 ARP를 내보내는 역할이다.

살펴보면 IP를 받고 테이블을 쭉 본다.
존재하면 State는 R 또는 P 이다.

R이라면 MAC주소를 Data-Link 계층에 넘겨준다.

P라면 패킷을 queue에 넣는다.

여기서 queue가 나오는 이유는

모든 패킷에 대한 request를 보내는 것이 아니라 한 IP에 대한 Packet들이 들어오면
처음에만 ARP request를 한 후 패킷들은 queue에 집어 넣고 대기시킨다.

만약 테이블에 존재하지 않는다면 F를 P로 바꾸고 패킷들을 queue에 집어 넣는다.

새로은 행이 추가된 것

이때 Table의 queue는 어떤 queue인지 구붑ㄴ
attempt는 request 횟수이다.


위 사진은 Input 모듈이 슈도코드이다.

Input 모듈은 나에게 온 Request이거나
내가 보낸 요청의 Reply이다.

나에게 온 Request이면(If not found)
목적지가 내가 아니더라도 상대방에 대한 정보를 테이블에 저장한다.
목적지가 나라면 Reply 한다.

나에게 온 Reply라면
P를 R로 바꾸고 queue에 있는 패킷들을 꺼내어 전송한다.


이건 Cache-control 모듈 슈도코드이다.

R인 상태는 Time-out 값을 가지고 있는데

이것은 가지고 있는 MAC주소 매핑에 대한 Lifetime이다.

P인 상태는 Attempt를 가지고 있으며 Maximum 을 넘어가면 그냥 없앤다.

Cache-control 모듈은 60초마다 깨어나서
Attempt를 1씩 증가시키고 Timeout을 60만큼 감소시키면서
관리한다.

또한 Input모듈에서 존재하는 IP에 대한 입력이오면
Update the entry를 한다고 써있는데
Timeout값을 900으로 다시 초기화 한다.

profile
Visual Computing and Learning

2개의 댓글

comment-user-thumbnail
2025년 12월 4일

주소 결정 프로토콜에 대한 좋은 글 감사합니다!

1개의 답글