오늘 쓰는 글의 목적은 네트워크 상으로 데이터가 전송되는 하나의 큰 그림 안에서
2계층의 목적은 무엇이고 어떤 역할을 하는지 확실하게 알아보기 위함이다.
먼저 3계층인 네트워크 계층의 목적은 바로 End node to end node
즉, 두 개의 컴퓨터 사이의 데이티 전송이다.
그런데 사실 네트워크 상에 두 개의 컴퓨터는 1 대 1로 연결되어 있는 것이 아니기 때문에 네트워크 상의 여러 노드들을 거쳐서 데이터가 전송된다.
(엔드 노드 : 컴퓨터
/ 노드 : 라우터, 스위치 등 - 1, 2 ,3계층의 네트워크 장비
)
이러한 과정 속에서 2계층의 목적은 바로 하나의 노드에서 다른 하나의 노드로의 데이터 전송
이다.
그렇다면 Node to node의 데이터 전송을 어떠한 방식으로 이루어질까?
이를 이해하기 위해선 3계층의 ARP 프로토콜이 무엇인지 먼저 알 필요가 있다.
앞서 말한 것처럼 네트워크 상의 여러 노드들을 거쳐서 데이터를 전송하기 때문에
3계층에서는 IP 주소와 포트 번호만을 가지고는 목적지에 데이터를 보낼 수 없다.
따라서 다음 노드의 MAC 주소가 추가적으로 필요하게 되고 IP 주소를 이용해 해당 주솟값을 알아내는 것이 바로 이 ARP 프로토콜
이다.
요청 측의 End node(컴퓨터)의 3계층에서 ARP packet을 broadcast
방식으로 모든 노드들에게 보낸다. 그 후 가장 가까운 노드의 Link-layer address
(MAC 주소의 상위 개념)를 응답으로 받게 된다.
이렇게 받은 링크레이어 주소는 위와 같이 프레임 MAC 헤더의 목적지 MAC 주소에 저장된다. 여기서 중요한 점은 바로 목적지 MAC 주소
는 3계층에서의 목적지인 End node의 MAC 주소가 아닌
2계층의 목적지인 다음 노드의 링크드레이어 주소
라는 점이다.
(마지막 단락에서 자세하게 소개.)
이쯤에서 링크레이어 주소가 어떤 것인지 확실하게 짚고 넘어가겠다.
링크레이어 주소는 우리가 익히 알고 있는 MAC 주소의 상위 개념으로 데이터링크 계층에서 사용되는 주솟값을 의미한다. MAC 주소는 디바이스의 유니크한 주솟값을 뜻하지만 링크레이어 주소를 여러 개를 가질 수 있다.
예를 들어, 위 그림을 보면 R1 라우터가 L2, L3, L4 이렇게 3개의 링크레이어 주소를 갖는 것을 볼 수 있다. 이게 가능한 이유는 라우터는 다중 네트워크 인터페이스를 가지고 있기 때문에 각각 네트워크마다 다른 링크레이어 주소를 가지고 있다.
이를 통해 위 그림처럼 프레임의 목적지 링크레이어 주소를 바꿔가면서 적절한 라우터로 데이터를 전송해 나갈 수 있다.
이 과정을 좀 더 자세히 알아보자.
앨리스 컴퓨터에서 밥의 컴퓨터에 데이터를 전송하는 상황을 가정하고 순차적으로 어떤 일이 일어나는지 살펴보겠다.
먼저 앨리스 컴퓨터 (End node)의 3계층에서 ARP 프로토콜을 통해 IP 주소로 다음 노드의 링크레이어 주소를 알아내고 MAC 헤더를 갱신한다.
그런 다음 해당 링크레이어 주소를 갖고 있는 R1 라우터로 1계층을 통해 물리 신호를 전송한다.
그렇게 R1 라우터(3계층 장비)가 신호를 받으면 해당 신호를 디코딩 하여 2계층을 거쳐 3계층으로 전달된다. 3계층에서는 받은 데이터의 IP 주소와 ARP 프로토콜을 통해 다음 노드의 링크레이어 주소를 알아내고 MAC 헤더를 갱신한다.
R2 라우터가 데이터를 받으면 똑같은 방식으로 3계층까지 데이터를 Unpack 해서 ARP 프로토콜을 통해 다음 목적지의 링크레이어 주소를 갱신한다.
다만 이때의 링크레이어 주소가 바로 목적지 End node의 MAC 주소이다!
드디어 직접적으로 목적지 컴퓨터로 1계층을 통해 물리 신호를 전송한다.
밥 컴퓨터로 전달된 신호는 디코딩 되어 2계층, 3계층으로 전달된다.
+ (추가적으로 4계층에 데이터가 전달되면 포트 번호를 통해 listen 하고 있는 Socket을 식별하여 해당 소켓에 데이터를 Write 할 것이고 7계층의 사용자 프로세스(혹은 스레드)는 해당 소켓을 Read 하여 데이터를 전송받을 것이다.)
결론적으로 요약하면 데이터링크 계층의 목적은 Node to node 데이터 전송
이고
2계층은 MAC 헤더에 있는 출발 노드 주소와 목적지 노드 주소까지의 Delivery에만 관여한다.
다만 3계층 장비에 도달할 때마다 ARP 프로토콜을 통해 출발, 목적지 노드 주소를 갱신해 줌으로써 연쇄적인 Node to node delivery
가 일어나고 이를 통해 3계층의 목적인 End node to end node delivery
를 달성한다.
ps. 이 글은 하나 큰 그림에서 2계층이 가지고 하나의 목표에 대해 집중했으며
media access control과 같은 2계층의 중요한 역할도 물론 존재합니다.
Reference :
Computer Networking A Top-Down Approach - James F. Kurose, Keith W. Ross