데이터 링크의 계층은 OSI 7계층 모델에서 2계층에 해당하며 1계층에서 변환된 비트신호를 전달하는 역할 중 여러 기능을 제공합니다.
데이터 링크는 인접한 노드, 통신기기 간에 개설된 통로 혹은 연결로 혹은 통신채널이라고도 합니다.
우리가 전달하고자 하는 데이터의 규칙(프로토콜)에 따라 다양한 개별 데이터 링크를 거치게 됩니다.
데이터 링크를 거치게하기 위해서는 다음과 같은 준비가 필요합니다.
여기서는 항상 통신 상대의 준비상태를 확인, 통신 상대의 기기 지정과 같은 제어가 필요합니다.
상대가 받을 준비가 되어있는지 어느 기기(모바일, PC, 무전기 등..)인지 확인도 필요하겠죠?
1계층에서 전달받은 비트 데이터를 패킷 또는 프레임화된 링크 형식으로 변환합니다.
프레임? 패킷? 많이 어려운 단어입니다.
통상적으로 2계층에서 정의 되고 다양한 프로토콜에 의해 교환되고 운반되는 데이터 단위입니다.
일반적인 형태는 flag, header, 정보 데이터, trailer 등 정보가 참조되어 있지만 프로토콜에 따라 추가되고 수정되어 변환됩니다.
마찬가지로 패킷도 1계층 비트 데이터를 header(머리) + payload(정보/데이터) + trailer(꼬리) 형태로 변환되어 잘라낸 데이터 모음입니다.
header (머리)
: IP헤더, TCP헤더, UDP헤더, MAC 헤더 등 참조, 패킷의 송수신 주소 등 주요 제어 정보들이 포함
trailer (꼬리)
: 패킷 또는 프레임의 끝 부분에 수신측의 에러검출을 돕기 위해 삽입되는 필드입니다.
우리가 사용하는 LAN 카드 환경에서 이더넷 프로토콜을 사용하게 되는데 여기서 FCS(Frame Check Sequence)를 사용하여 데이터의 오류를 확인합니다.
프레임 또는 패킷의 혼동을 피하기 위해서는 일련번호가 부여되어야 합니다.
부여를 하는 이유는 무엇일까요?
만약 1:1 물리적 교환으로 고정되어 있다면 문제가 되지 않지만 다수가 이용하는 네트워크를 거쳐 전달하기 위해서는 전송하는 루트가 고정되어 있지 않을겁니다.
왜일까요??
각기 독립된 네트워크를 유지시켜주는 라우터에서 패킷을 목적지에 이를 수 있는 여러 경로(루트) 중 최적의 경로를 결정하기 때문입니다.
이러한 문제로 패킷들이 한번에 모여서 다니지 않고 나누어져 전송될 수 있으니 일련번호를 부여함으로써 오류를 방지하고 원만하게 전달하게 해줍니다.
만약 패킷이 전달되는 과정 중 D 패킷이 전달이 되지 못했다고 하면 어떻게될까요?
보통 다시 전달할 수 있도록 처리해놨을 것입니다.
그러면 동일한 E 패킷을 다시 전달하게 될텐데 이러한 패킷을 수집하는 과정에서 D, E는 동일한 패킷이므로 중복 패킷이 발생합니다.
이 뿐만 아니라 재패킷화된 패킷을 보내고 다시 송수신을 하게 되면 재패킷된 패킷의 페이로드에 담겨있는 이전의 패킷의 시퀀스 번호가 겹치게 되어 중복 패킷이 발생하게 됩니다.
이러면 불필요한 요청과 응답을 줄 수 있기때문에 처리 속도와 제어 문제를 방지하기 위해 수행하게 됩니다.
데이터 링크 내 노드에서 송수신자의 정보를 밝히고 확인할 수 있습니다.
이렇게 노드간의 식별성을 제공하면서 신뢰할 수 있는 데이터로 변환이 되며 다음 계층인 네트워크 계층에서 신뢰성있는 데이터를 가지고 기능을 수행하도록 도와줍니다.
데이터 링크 계층에 대표적으로 이더넷 프로토콜이 있습니다.
2계층에서 패킷을 전달할 때 헤더라는 부분에서 송수신자의 정보들을 담는다고 했는데 여기서 LAN 으로 네트워크를 통해 전달하는 경우는 이더넷 프로토콜을 사용하게 됩니다.
이더넷 프로토콜에서 사용하는 이더넷 주소는 MAC (Media Access Control) 주소, 하드웨어 주소라고 합니다.
모든 이더넷 장치는 전세계적으로 고유한 주소를 6바이트 크기만큼 할당받게 됩니다.
이 주소가 MAC 주소이며 주소를 알기 전까지는 서로 소통할 수 없습니다.
또한 MAC 주소를 알기 위해서는 ARP프로토콜이란걸 사용하여 IP주소를 물리적 네트워크 주소로 대응시키게 하여 송수신자의 목적지를 확인할 수 있게 됩니다.