IP와 MAC 주소

lsy·2022년 12월 22일
0

IP와 MAC 주소가 어떻게 쓰이는 거지?

라우터와 라우터는 라우팅 테이블을 통해 패킷을 교환한다는 것을 알고 있는데, MAC 주소의 개념을 알고 혼란이 왔다.

검색을 해봐도 단편적인 지식만 설명되있어서... 전체 흐름을 파악하기 어려웠다. 검색해서 이해한 것을 적고자 한다.

MAC 주소

MAC 주소는 데이터 링크 계층에서 사용하는 주소다.

MAC 주소는 각 컴퓨터에 설치되어 있는 네트워크 인터페이스 카드(NIC)에 붙여져있다.

즉, 어떤 네트워크안의 기기를 개별적으로 파악하는 주소다.

예를 들어 어떤 네트워크안에 컴퓨터가 3대 있다면, IP 주소로는 컴퓨터 3대를 판별하기 어렵다. 왜냐하면 IP 주소가 변경될 수 있기 때문이다.

따라서 상대적으로 변하기 어려운 MAC 주소를 사용해 패킷의 목적지를 찾는다.

정리하자면, IP 주소로 네트워크를 판별 후, 그 네트워크 안에 어떤 기기에게 패킷을 전해줄지는 MAC 주소를 이용해 결정한다는 것이다.

MAC 주소를 어떻게 사용하는가?

MAC 주소는 패킷을 전송하거나 수신할 수 있는 모든 기기에서 사용한다. 우리가 사용하는 컴퓨터, 라우터, 허브 등 전부 MAC 주소를 사용한다.

라우터1 ←→ 라우터2 ←→ 라우터3

위와 같은 연결 상황에서 모든 라우터는 물리적으로 연결되어 있다.

라우터는 여러 개의 입력, 출력 포트를 가질 수 있으며, 포트당 네트워크 인터페이스가 하나 필요하기 때문에 여러 개의 MAC, IP 주소를 가질 수 있을 것이다.

이에 따라 라우터1은 라우터2와 연결된 포트의 MAC, IP 주소를 알고 있다. 하지만 라우터3의 MAC, IP 주소는 모른다.

라우터2는 라우터1과 라우터3에 연결된 포트의 MAC, IP 주소를 각각 알고 있다.

라우터3은 역시 라우터2와 연결된 포트의 MAC, IP 주소를 알 수 있지만 라우터1의 MAC, IP 주소를 알 수 없다.

다음과 같은 상황을 가정해보자.

라우터1 (포트1) ←→ (포트1) 라우터2 (포트2) ←→ 컴퓨터A
라우터1 (포트1) : IP 192.168.1.1 - MAC Address: 00:00:00:00:00:00
라우터2 (포트1) : IP 192.168.1.2 - MAC Address: 11:11:11:11:11:11
라우터2 (포트2) : IP 10.0.0.1 - MAC Address: 22:22:22:22:22:22
컴퓨터A : IP 10.0.0.2 - MAC Address: 33:33:33:33:33:33

라우터1이 현재 패킷을 전송하고 있는 상황이다. 라우터1은 컴퓨터A까지 패킷을 전송하고자 한다.

그러나 일단 현재 상황에서 라우터1은 컴퓨터A의 IP 주소만 알 뿐이다. 이 패킷을 어디로 보내야할지 모른다.

이 상황에서 라우터1은 다음 목적지로 향하기 위해 해당 목적지로 가는 기기의 MAC 주소를 알아야 한다. 이 때 ARP를 사용해서 다음 목적지의 MAC 주소를 알아낸다.

ARP는 Address Resolution Protocol로 네트워크 상에서 IP 주소를 MAC 주소로 바꾸기 위해 사용하는 프로토콜의 이름이다. ARP에 대한 자세한 내용은 여기서는 일단 다루지 않겠다.

응답을 받아 다음 목적지의 MAC 주소를 알아낸 라우터1은 다음과 같은 패킷을 만든다.

Source IP: 192.168.1.1
Destination IP: 10.0.0.2
Source MAC: 00:00:00:00:00:00
Destination MAC: 11:11:11:11:11:11

그리고 포트1로 패킷을 보낸다.

포트1로 패킷을 받은 라우터2는 목적지 IP가 포트2에 해당한다는 것을 확인한다. 이후 패킷을 다음과 같이 변경한다.

Source IP: 192.168.1.1
Destination IP: 10.0.0.2
Source MAC: 22:22:22:22:22:22
Destination MAC: 33:33:33:33:33:33

눈 여겨 봐야할 점은 Source IP와 Destination IP가 변하지 않았다는 점이다. MAC 주소만 변경됐다.

즉, 목적지 IP 주소를 알고 있는 기기의 MAC 주소를 찾고, 해당 MAC 주소로 패킷을 보내고를 반복해 목적지 IP에 도착하게 하는 것이 결국 패킷의 전송 원리인 것이다.

현재 예시는 라우터였지만, 컴퓨터A <-> 라우터 <-> 컴퓨터B로 상황이 바뀌어도 달라지지 않는다. 이 때도 ARP를 통해 MAC 주소를 찾고, 해당 IP 주소를 가진 기기를 찾을 때까지 다음 기기로 패킷을 계속 넘긴다.

이 때 ARP는 캐싱되기 때문에 매번 ARP를 보내지는 않는다.

Reference

https://www.quora.com/What-is-the-MAC-address-of-a-router

profile
server를 공부하고 있습니다.

0개의 댓글