3 . Data Link Layer


: 데이터 링크 계층 상에 인접한(두 통신기기가 물리적으로 연결되어 있음) 두 통신 기기 사이의 신뢰성 있고 효율적인 통신 알고리즘을 다룬다.


데이터 링크 계층 제공 기능 (efficiency and reliability)

  1. 명확히 정의된 서비스 인터페이스를 네트워크 계층에 제공
  2. 전송 오류 처리
  3. 고속의 송신기에서 송신되어 저속의 수신기가 처리할 수 없는 데이터 흐름 조절 => 이를 위해서 네트워크 계층에 패킷을 송출하기 위해 패킷을 프레임으로 캡슐화

네트워크 계층에 제공하는 서비스

: 송신측 네트워크 계층의 데이터를 수신측 네트워크 계층에 전달

  • 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과 다르면 오류 처리 시도
  1. 바이트 카운트
    프레임 속의 바이트 수를 나타내기 위해 헤더의 한 필드 사용
    image
    • 카운트가 전송 오류로 왜곡될 수 있으므로 거의 쓰이지 않는 방식
  2. Coding violation
    인코딩시 여분 정보(redundancy)를 포함한 네트워크에서만
    • High-low(1) low-high(0)로 사용
      high-high, low-low를 프레임을 구분하는 데에 사용
  3. Flag Bytes
    Flag Byte로 시작하며 Flag Byte로 끝남
    image
    • 바이트 채우기: 플래그 바이트의 비트 형태가 내부 데이터에 존재할 수 있음 -> 데이터 내부에 Flag 바이트가 있는 경우 이스케이프 바이트(ESC) 삽입 -> 수신 측 DL은 네트워크 계층으로 데이터 전달하기 전에 ESC를 제거
  4. Flag Bits
    01111110 으로 시작과 끝을 구별. 연속적인 다섯 개의 비트 1을 만나면 자동적으로 하나의 비트 0 채움 (비트 채우기)
    image
    • 8의 배수가 아니어도 되므로 오버헤드가 적음
    • 802.11과 이더넷에서 사용하고 있음

오류 제어

: 신뢰성 있고 in-order 전송을 위해서 필요한 매커니즘

  • ACKS, NAK: 리시버에게 알려주기 위해, 신뢰성 O 전송
  • Timeout: 채널 에러로 패킷 손실 시, 재전송 위해
  • Sequence number: 수신측에서 원본 프레임과 재전송됨 프레임 구분 위해

흐름 제어 (5장에서 배움)

: 빠른 송신, 느린 수신 어떻게 처리하느냐

  1. Feedback-based 흐름 제어: 수신측은 송신측에 데이터 송출을 계속해도 좋다는 의미의 정보를 주던가
  2. Rate-based 흐름 제어: 피드백 정보 없이 송신측 데이터 전송률을 제한하는 내장된 메커니즘 가짐

3.2 오류 감지와 오류 정정


  1. FEC(Forward Error Correction): 에러를 감지하면 정정하여 기존 데이터로 복구하여 전송 -> 에러 많은 채널 적합(무선)
  2. 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 네트워크의 여러 위치에 있는 라우터를 연결하는데 널리 사용됨.

: 비트 지향형 프로토콜

PPP(Point to Point Protocol)

: 인터넷의 point-to-point를 위한 데이터 링크 프로토콜 제공하는 기능

  1. 프레임 기법: 시작과 끝을 명확하게 구분하고 오류 감지 기능 수행
  2. LCP(Link Control Protocol): 회선을 연결하고 검사하고, 필요 없을 때 회선을 해제함
  3. NCP(Network Control Protocol): 네트워크 계층 옵션을 조정

    • HDLC와 유사하지만 HDLC는 비트 지향, PPP는 문자 지향
    • HDLC는 슬라이딩 윈도우, 확인응답 타임아웃을 지원하는 신뢰성 있는 전송, PPP도 신뢰성 있는 전송을 제공하지만 실제로는 무접속 무응답 서비스를 많이 이용

    image