같은 LAN 네트워크 안에서는 이더넷 프레임이 오가고, 스위치는 MAC 주소 테이블을 보면서 프레임을 어느 포트로 보낼지 판단했다.
여기까지는 “우리 동네 안에서 물건을 배달하는 방법”에 가깝다.
그런데 실제 인터넷 통신은 대부분 같은 LAN 안에서 끝나지 않는다.
내 컴퓨터에서 브라우저를 열고 어떤 웹사이트에 접속하면, 그 서버는 보통 내 방 안에도 없고, 같은 사무실 스위치에 연결되어 있지도 않다.
다른 지역, 다른 회사, 다른 나라의 네트워크에 있을 수도 있다.
그러면 질문이 생긴다.
같은 LAN을 벗어나 다른 네트워크에 있는 서버까지 가려면 무엇이 필요할까?
MAC 주소는 네트워크 장비를 식별하는 주소다.
특히 이더넷 환경에서는 프레임을 보낼 때 출발지 MAC 주소와 목적지 MAC 주소가 들어간다.
하지만 여기서 중요한 건,
MAC 주소는 같은 LAN 안에서 다음 장비를 찾는 데 주로 사용된다는 점이다.
예를 들어 내 컴퓨터와 같은 스위치에 연결된 다른 컴퓨터로 데이터를 보낸다면, 스위치는 목적지 MAC 주소를 보고 어느 포트로 보낼지 판단할 수 있다.
스위치 입장에서는 이런 식이다.
“이 프레임의 목적지 MAC 주소가 A네.
내 MAC 주소 테이블을 보니까 A는 3번 포트에 있군.
그러면 3번 포트로 보내자.”
이 흐름은 같은 LAN 안에서는 잘 동작한다.
그런데 목적지가 외부 웹 서버라면 이야기가 달라진다.
내 컴퓨터가 example.com 같은 외부 서버에 접속하려고 한다고 해보자.
그 서버의 MAC 주소를 안다고 해서 바로 보낼 수 있을까?
그럴 수 없다.
왜냐하면 그 서버는 내 LAN 안에 있는 장비가 아니기 때문이다.
내 스위치가 전 세계 모든 서버의 MAC 주소를 알고 있을 수도 없고, 알 필요도 없다.
MAC 주소는 마치 “아파트 단지 안에서 몇 동 몇 호로 찾아가는 정보”에 가깝다.
단지 안에서는 유용하지만, 다른 도시의 목적지를 찾아가기에는 부족하다.
다른 도시로 가려면 먼저 도시 이름, 도로망, 경로 같은 더 큰 단위의 주소 체계가 필요하다.
네트워크에서는 그 역할을 IP 주소가 한다.
데이터 링크 계층은 같은 네트워크 안에서 데이터를 전달하는 데 초점이 있다.
이더넷, MAC 주소, 스위치, VLAN 같은 개념들이 여기에 가까웠다.
이 계층의 관심사는 대략 이런 느낌이다.
“같은 LAN 안에서 이 프레임을 누구에게 전달해야 하지?”
“이 MAC 주소는 어느 포트에 있지?”
“이 VLAN 안에서만 브로드캐스트를 보내야겠군.”
즉, 데이터 링크 계층은 가까운 범위의 전달에 강하다.
하지만 인터넷은 하나의 거대한 LAN이 아니다.
수많은 네트워크가 서로 연결된 구조다.
집 네트워크, 회사 네트워크, 통신사 네트워크, 클라우드 사업자 네트워크, 데이터센터 네트워크가 서로 이어져 있다.
이렇게 여러 네트워크를 건너가야 할 때는 단순히 MAC 주소만 보고 판단할 수 없다.
여기서 필요한 계층이 네트워크 계층이다.
네트워크 계층은 말 그대로 네트워크와 네트워크 사이의 이동을 다룬다.
같은 LAN 안에서 끝나는 통신이 아니라,
다른 네트워크에 있는 목적지까지 데이터를 보내기 위해 필요한 계층이다.
네트워크 계층의 핵심 질문은 이렇다.
“이 데이터의 최종 목적지는 어느 네트워크에 있지?”
“그 목적지로 가려면 다음에는 어느 장비로 보내야 하지?”
“지금 내가 직접 보낼 수 있는 곳인가, 아니면 라우터에게 넘겨야 하나?”
여기서 등장하는 대표적인 주소가 IP 주소다.
IP 주소는 다른 네트워크에 있는 목적지를 찾기 위한 주소 체계다.
MAC 주소가 같은 LAN 안에서 다음 장비를 찾는 데 사용된다면,
IP 주소는 더 넓은 범위에서 최종 목적지를 찾기 위해 사용된다.
비유하자면 이렇다.
MAC 주소는 택배 기사가 아파트 단지 안에서 특정 집을 찾는 정보에 가깝고,
IP 주소는 택배가 어느 나라, 어느 도시, 어느 동네로 가야 하는지 알려주는 주소에 가깝다.
인터넷에서 데이터를 보낸다는 것은 결국 여러 네트워크를 거쳐 목적지까지 가는 과정이다.
이때 각 네트워크 장비는 IP 주소를 보고 방향을 판단한다.
내 컴퓨터가 외부 서버로 데이터를 보낼 때도 마찬가지다.
내 컴퓨터는 먼저 생각한다.
“목적지 IP가 내 네트워크 안에 있나?”
“아니라면 내가 직접 보낼 수 없겠네.”
“그러면 일단 밖으로 나가는 장비에게 보내야겠다.”
이때 밖으로 나가는 장비가 보통 라우터이고, 내 컴퓨터 입장에서는 기본 게이트웨이가 된다.
아직 라우터를 깊게 다루지는 않지만, 흐름만 보면 된다.
내 컴퓨터가 외부 네트워크로 가야 한다고 판단하면,
최종 목적지 IP는 외부 서버를 가리키고 있지만, 실제 같은 LAN 안에서 프레임을 넘겨받는 대상은 라우터가 된다.
여기서 중요한 구분이 나온다.
IP 주소는 최종 목적지를 바라보고,
MAC 주소는 지금 당장 같은 LAN 안에서 전달할 다음 장비를 바라본다.
처음에는 IP 주소와 MAC 주소가 둘 다 “주소”라서 헷갈린다.
둘 중 하나만 있으면 되는 것 아닌가 싶기도 하다.
하지만 둘은 역할이 다르다.
외부 서버에 요청을 보낸다고 해보자.
목적지 IP 주소는 외부 서버의 IP 주소다.
이 주소는 데이터가 최종적으로 어디까지 가야 하는지를 나타낸다.
하지만 내 컴퓨터가 그 서버까지 한 번에 프레임을 날릴 수는 없다.
내 컴퓨터가 실제로 직접 통신할 수 있는 범위는 같은 LAN 안이다.
그래서 일단 같은 LAN 안에 있는 라우터에게 프레임을 보내야 한다.
이때 이더넷 프레임의 목적지 MAC 주소는 외부 서버의 MAC 주소가 아니라, 보통 라우터의 MAC 주소가 된다.
정리하면 이런 느낌이다.
“이 IP를 가진 서버까지 가고 싶어.”
“그런데 지금 당장은 저 멀리 있는 서버에게 직접 못 보내.”
“그러니까 우선 우리 LAN의 출구인 라우터에게 넘기자.”
“라우터야, 이 목적지 IP로 가는 길을 찾아줘.”
IP 주소는 목적지를 계속 유지하면서 이동 방향을 잡는 데 사용되고,
MAC 주소는 매 구간마다 다음 장비에게 넘겨주기 위해 사용된다.
이걸 도로 여행으로 비유하면, IP 주소는 최종 목적지 주소이고 MAC 주소는 다음 톨게이트나 다음 환승 지점을 통과하기 위한 정보에 가깝다.
IP는 Internet Protocol의 약자다.
이름 그대로 인터넷에서 데이터를 목적지까지 보내기 위한 핵심 프로토콜이다.
물론 IP 혼자 모든 것을 해결하지는 않는다.
IP는 기본적으로 “어디에서 어디로 보낼 것인가”에 관심이 있다.
출발지 IP 주소와 목적지 IP 주소를 가지고 패킷이 어느 방향으로 가야 하는지 판단할 수 있게 해준다.
여기서 IP가 하는 일을 너무 거창하게 볼 필요는 없다.
IP는 이런 질문에 답하기 위한 규칙에 가깝다.
“이 패킷의 출발지는 어디인가?”
“이 패킷의 최종 목적지는 어디인가?”
“목적지 네트워크로 가려면 어느 쪽으로 보내야 하는가?”
스위치가 MAC 주소 테이블을 보고 같은 LAN 안에서 프레임을 전달했다면,
네트워크 계층의 장비는 IP 주소와 경로 정보를 보고 다른 네트워크로 패킷을 전달한다.
IP 주소에는 대표적으로 IPv4와 IPv6가 있다.
IPv4는 우리가 흔히 보는 형태의 주소다.
예를 들면 이런 식이다.
192.168.0.10
숫자 4개가 점으로 구분된 형태다.
현재도 매우 널리 사용되고 있다.
하지만 IPv4는 만들 수 있는 주소 개수에 한계가 있다.
인터넷에 연결되는 장비가 폭발적으로 늘어나면서 IPv4 주소만으로는 부족해졌다.
그래서 등장한 것이 IPv6다.
IPv6는 IPv4보다 훨씬 더 많은 주소를 표현할 수 있는 방식이다.
형태도 다르다.
예를 들면 이런 느낌이다.
2001:db8::1
IPv6는 주소 공간을 크게 늘려서 더 많은 장비가 고유한 주소를 가질 수 있도록 만든 방식이다.
다만 지금 단계에서는 IPv4와 IPv6의 구조를 깊게 외우기보다,
IP 주소 체계에도 버전이 있고, IPv4의 한계를 보완하기 위해 IPv6가 등장했다 정도로 이해하면 충분할 것 같다.
지금까지의 흐름을 다시 연결해보면 이렇다.
같은 LAN 안에서는 MAC 주소가 중요했다.
스위치는 MAC 주소를 보고 프레임을 어느 포트로 보낼지 판단했다.
하지만 목적지가 다른 네트워크에 있다면 MAC 주소만으로는 부족하다.
그때는 IP 주소를 보고 최종 목적지가 어디인지 판단해야 한다.
내 컴퓨터 입장에서는 먼저 목적지 IP를 확인한다.
“이 목적지가 내 LAN 안에 있나?”
“아니네. 그러면 직접 보낼 수 없겠다.”
“기본 게이트웨이에게 보내자.”
그리고 같은 LAN 안에서 게이트웨이에게 프레임을 보내기 위해 MAC 주소가 다시 필요해진다.
여기서 중요한 건,
네트워크 통신은 어느 한 주소만으로 이루어지는 게 아니라는 점이다.
IP 주소는 최종 목적지를 찾기 위한 큰 지도이고,
MAC 주소는 현재 구간에서 다음 장비에게 전달하기 위한 지역 안내판에 가깝다.
그래서 인터넷 통신은 이런 식으로 움직인다.
“최종 목적지는 이 IP야.”
“지금 구간에서는 이 MAC 주소를 가진 장비에게 넘기자.”
“다음 네트워크로 넘어가면 또 그 구간에 맞는 방식으로 넘기자.”
이렇게 보면 IP와 MAC의 역할이 조금 분리되어 보인다.
MAC 주소는 가까운 곳을 향하고,
IP 주소는 먼 목적지를 향한다.
LAN 안에서의 통신을 이해했다면,
LAN을 넘어가는 순간부터는 IP 주소와 네트워크 계층을 함께 봐야 한다.