링크 계층은 연결된 노드 사이에서 안전하게 데이터를 전송하고, 오류 검출 및 패킷 손실을 방지하기 위한 흐름 제어를 담당한다.
특징
- Framing: 데이터그램을 프레임으로 캡슐화하여 헤더와 트레일러를 추가
- 인접 노드 간 신뢰성 있는 전달: 링크 계층은 인접한 노드 간 신뢰성 있는 전달을 제공
- 오류 감지 및 수정 수행
- Flow Control: 인접한 송신 및 수신 노드 간의 전송 간격을 조절
- Error Detection: 신호 약화, 노이즈 등으로 인해 발생하는 오류를 감지
- Error Correction: 재전송 없이 오류를 식별하고 수정
- LLC (Logical Link Control): 흐름 제어, 오류 검출 및 수정 등을 수행하며, 네트워크 계층과의 상호작용을 담당
- MAC (Media Access Control): 특정한 물리적 매체로 데이터를 전송하는 방법을 정의하고, 프레임 내부에 MAC 주소를 사용하여 송신자와 수신자를 식별
- LLC는 상위 계층과의 독립성을 유지하고 프로토콜 간의 호환성을 지원하는 반면, MAC은 특정한 매체에서의 데이터 전송 방식을 결정하기 때문에 종속성을 가진다.
- Even Parity: 데이터에 포함된 1의 개수가 짝수가 되도록 Parity bit를 설정
- Odd Parity: 데이터에 포함된 1의 개수가 홀수가 되도록 Parity bit를 설정
- 한계
- 어떤 비트가 변경되었는지 정확히 식별할 수 없다.
- 짝수 개의 비트가 변경된 경우 오류를 감지할 수 없다.
- 데이터 전송 시 전송 측에서 데이터에 대한 CRC 값을 생성하고, 해당 CRC 값을 데이터의 끝에 첨부하여 전송
- 수신 측에서는 받은 프레임을 약속된 Divisor로 나누어 나머지를 계산
- 나머지가 0이면 오류가 없는 것으로 간주하고, 나머지가 0이 아니라면 오류가 발생한 것으로 간주
- 과정
- Divisor의 비트 수에서 1을 뺀만큼 0을 데이터 끝에 추가
- 보내려는 데이터를 사전에 정의된 Divisor로 XOR 연산을 수행
- 나머지를 데이터 뒤에 추가하여 전송
- 수신자는 받은 데이터를 약속된 Divisor로 나눴을 때, 나머지가 0이면 에러가 없다고 판단