2026. 4. 13. 20:20ㆍUnity/IT 관련 자료
인터넷이라는 거대한 가상 세계에서, 우리는 매일 'IP 주소'라는 가상의 주소를 사용해 데이터를 주고받습니다. 하지만 실제로 데이터가 도착해야 할 곳은 '물리적인 LAN 카드'가 있는 진짜 컴퓨터입니다. 비유하자면, IP 주소는 '지도 위의 위치'라면, MAC 주소는 '진짜 대문 앞'이죠.
지도 위의 위치(IP)를 알더라도, 진짜 집(MAC)으로 배달하려면 누군가가 그 정보를 연결해 주어야 합니다. 바로 그 역할을 수행하는 것이 네트워크계의 비밀 요원, ARP (Address Resolution Protocol)입니다. 오늘은 이 ARP 요원의 활약상을 쉽고 기억에 오래 남게 파헤쳐 보겠습니다.
1. 가상 주소(IP) vs 진짜 주소(MAC)
먼저 기초부터 확실히 다져볼까요? 데이터 통신에는 두 가지 주소가 필요합니다.
- IP 주소 (논리적 주소): 우리가 흔히 쓰는 192.168.0.5 같은 주소입니다. 인터넷이라는 거대한 지도 위에서 내 컴퓨터의 위치를 나타냅니다. (이사를 가면 바뀔 수 있습니다.)
- MAC 주소 (물리적 주소): 00:0A:1B:2C:3D:4E 같은 고유한 번호로, 내 LAN 카드에 박혀있는 진짜 주소입니다. (세상에 단 하나뿐이며, 바뀌지 않습니다.)
데이터는 IP 주소를 보고 길을 찾아가지만, 최종 목적지인 LAN 카드에 도착하려면 반드시 MAC 주소가 필요합니다.

2. ARP의 "누구세요?" 타임 (ARP Request)
자, 이제 데이터를 보내려는 내 컴퓨터(A)가 있다고 상상해 보세요. A는 목적지의 IP 주소(192.168.0.5)는 알지만, 진짜 대문 주소(MAC)는 모릅니다. 이때 ARP 요원이 출동합니다.
ARP 요원은 네트워크라는 동네 전체에 대고 소리를 지릅니다. (이것을 브로드캐스트라고 합니다.)
"네트워크 동네 여러분! IP 주소가 192.168.0.5인 분 누구세요? 제발 진짜 MAC 주소 좀 알려주세요!"

이 소리는 네트워크 안의 모든 컴퓨터가 듣지만, 오직 IP가 192.168.0.5인 컴퓨터(B)만이 귀담아듣습니다.
3. ARP의 "접니다!" 타임 (ARP Reply)
자신의 IP 주소를 부르는 소리를 들은 B는 깜짝 놀라며, A에게만 조용히 답장합니다. (이것을 유니캐스트라고 합니다.)
"네, 접니다! 제 진짜 MAC 주소는 00:AA:BB... 에요."

A는 B의 진짜 주소(MAC)를 전달받고, 기쁜 마음으로 데이터를 안전하게 배달할 수 있게 됩니다. 또한, 이 정보를 ARP 캐시라는 수첩에 저장해두어, 다음에 또 데이터를 보낼 때는 다시 소리 지르지 않아도 되도록 기억해 둡니다.
4. ARP 요원의 신분증 엿보기 (ARP 구조)
그렇다면 ARP 요원은 어떻게 생겼을까요? 데이터 패킷 안에 들어가는 ARP 프레임은 아주 작은 조각들로 이루어져 있습니다.
- Hardware/Protocol Type: 네트워크의 유형(예: 이더넷=1)과 주소 유형(예: IPv4=0x0800)을 나타냅니다.
- Opcode (가장 중요!): 이 프레임이 요청(1, Request)인지 응답(2, Reply)인지를 구분합니다.
- Sender/Target MAC/IP: 보내는 사람과 받는 사람의 두 가지 주소 정보가 모두 담겨있습니다. (요청 시 'Target MAC'은 모르므로 비워둡니다.)

이렇게 작지만 정교한 정보 교환 덕분에 우리는 인터넷이라는 거대한 공간에서 헤매지 않고 목적지로 정확히 데이터를 보낼 수 있는 것입니다.
요약: 잊지 말자!
- ARP: IP 주소는 알지만, MAC 주소를 모를 때 사용한다.
- Request (1): 동네방네 "누구세요?" 소리 지른다 (브로드캐스트).
- Reply (2): 오직 당사자만 조용히 "접니다!" 답한다 (유니캐스트).
- 역할: 논리적 주소(IP)를 물리적 주소(MAC)로 변환한다.
네트워크의 비밀 요원, ARP! 이 글을 통해 확실히 기억하셨길 바랍니다.
'Unity > IT 관련 자료' 카테고리의 다른 글
| 라이더(Rider) 생산성 200% 향상, 모든 개발자가 알아야 할 필수 단축키 'Shift + Shift' (0) | 2025.08.19 |
|---|---|
| TODO 주석, 잊지 말고 활용하세요! IDE가 알려주는 스마트한 코드 관리 비법 (1) | 2025.08.19 |
| Unity Android 빌드 최적화를 위한 Proguard 자동화 최종 가이드: 의존성 분석부터 안정적인 Minify 적용까지 (4) | 2025.08.15 |
| 3D 게임 환경과 지리정보시스템(GIS)의 레벨 오브 디테일(LOD) 처리 방식 비교 분석 (5) | 2025.08.14 |