3 . Data Link Layer
: 데이터 링크 계층 상에 인접한(두 통신기기가 물리적으로 연결되어 있음) 두 통신 기기 사이의 신뢰성 있고 효율적인 통신 알고리즘을 다룬다.
3.1 Data Link Layer 설계 쟁점
데이터 링크 계층 제공 기능 (efficiency and reliability)
- 명확히 정의된 서비스 인터페이스를 네트워크 계층에 제공
- 전송 오류 처리
- 고속의 송신기에서 송신되어 저속의 수신기가 처리할 수 없는 데이터 흐름 조절 => 이를 위해서 네트워크 계층에 패킷을 송출하기 위해 패킷을 프레임으로 캡슐화
네트워크 계층에 제공하는 서비스
: 송신측 네트워크 계층의 데이터를 수신측 네트워크 계층에 전달
-
- Unacknowledged connectionless service
- 프레임 수신을 확인 응답하지 않고 전송 LAN과 같은 low error 채널이나 속도가 중요한 실시간 전송에 적합함
-
- Acknowledged connectionless service
- 연결은 설정되지 않았지만 확인 응답을 받음 802.11(wifi)과 같이 신뢰성 없는 채널에서 사용=> DL에서 신뢰성(확인응답)은 최적화지, 필수 아님
-
- Connection-oriented service
- 정확하게 순서대로 수신되었다는 것 보증 가능, 장거리의 비 신뢰성 채널(위성, 장거리 전화회선)
Framing
: 물리 계층에서 온 비트스트림은 오류 존재 O, 오류를 검사하고 교정하는 것이 DL의 역할
- Sender) 비트 스트림(from physical)을 각각 Frame으로 나눈고, 프레임의 checksum 계산해서 실어 보냄
- Receiver) 다시 계산한 Checksum이 프레임 속 checksum과 다르면 오류 처리 시도
-
- 바이트 카운트
- 프레임 속의 바이트 수를 나타내기 위해 헤더의 한 필드 사용
- 카운트가 전송 오류로 왜곡될 수 있으므로 거의 쓰이지 않는 방식
-
- Coding violation
- 인코딩시 여분 정보(redundancy)를 포함한 네트워크에서만
-
- High-low(1) low-high(0)로 사용
- high-high, low-low를 프레임을 구분하는 데에 사용
-
- Flag Bytes
- Flag Byte로 시작하며 Flag Byte로 끝남
- 바이트 채우기: 플래그 바이트의 비트 형태가 내부 데이터에 존재할 수 있음 -> 데이터 내부에 Flag 바이트가 있는 경우 이스케이프 바이트(ESC) 삽입 -> 수신 측 DL은 네트워크 계층으로 데이터 전달하기 전에 ESC를 제거
-
- Flag Bits
- 01111110 으로 시작과 끝을 구별. 연속적인 다섯 개의 비트 1을 만나면 자동적으로 하나의 비트 0 채움 (비트 채우기)
- 8의 배수가 아니어도 되므로 오버헤드가 적음
- 802.11과 이더넷에서 사용하고 있음
오류 제어
: 신뢰성 있고 in-order 전송을 위해서 필요한 매커니즘
- ACKS, NAK: 리시버에게 알려주기 위해, 신뢰성 O 전송
- Timeout: 채널 에러로 패킷 손실 시, 재전송 위해
- Sequence number: 수신측에서 원본 프레임과 재전송됨 프레임 구분 위해
흐름 제어 (5장에서 배움)
: 빠른 송신, 느린 수신 어떻게 처리하느냐
- Feedback-based 흐름 제어: 수신측은 송신측에 데이터 송출을 계속해도 좋다는 의미의 정보를 주던가
- Rate-based 흐름 제어: 피드백 정보 없이 송신측 데이터 전송률을 제한하는 내장된 메커니즘 가짐
3.2 오류 감지와 오류 정정
- FEC(Forward Error Correction): 에러를 감지하면 정정하여 기존 데이터로 복구하여 전송 -> 에러 많은 채널 적합(무선)
- ARQ(Automatic ReQuest): 에러를 감지하면 재전송 -> 에러가 적게 발생하는 곳에서 좋음 (광섬유)
- FEC가 ARQ보다 많이 쓰이는 이유
(1) Real-time에서 오류가 발견된 경우 재전송하여 수신한 경우 playback 보다 늦게 도착해 재전송이 필요 없음
(2) 오류율이 높으면 재전송된 프레임도 오류일 확률 높음
오류 정정 코드
: 여분의 비트를 추가함 m(메시지) + r(여분정보 또는 체크비트) = n(코드워드)
Hamming Distance
: d error를 감지하기 위해선 d+1의 길이가 필요하고 d error를 정정하기 위해선 2d+1이 필요함
-> 이중 오류를 정정하고 사중 오류를 감지할 수 있음
에러 감지 코드 (오류율이 낮은 곳에서)-> 재전송
: Parity, Checksum, CRC
3.3 기본적인 데이터 링크 프로토콜
교재 코드 참고
3.5 데이터 링크 프로토콜의 예
Packet over SONET
:SONET은 물리 계층 프로토콜로, ISP 네트워크의 여러 위치에 있는 라우터를 연결하는데 널리 사용됨.
HDLC(High-level Data Link Control)
: 비트 지향형 프로토콜
PPP(Point to Point Protocol)
: 인터넷의 point-to-point를 위한 데이터 링크 프로토콜 제공하는 기능
- 프레임 기법: 시작과 끝을 명확하게 구분하고 오류 감지 기능 수행
- LCP(Link Control Protocol): 회선을 연결하고 검사하고, 필요 없을 때 회선을 해제함
-
NCP(Network Control Protocol): 네트워크 계층 옵션을 조정
- HDLC와 유사하지만 HDLC는 비트 지향, PPP는 문자 지향
- HDLC는 슬라이딩 윈도우, 확인응답 타임아웃을 지원하는 신뢰성 있는 전송, PPP도 신뢰성 있는 전송을 제공하지만 실제로는 무접속 무응답 서비스를 많이 이용