[CS] No. 2 - Data Communication : Data Link Control Protocols

NewPlus·2022년 6월 6일
0

Computer Science

목록 보기
2/3

2022.06.06 학과공부. 데이터통신 chapter 7.
Data Link Control Protocols

Summary

  • Flow control
  • Error control
  • High-level Data Link Control(HDLC)

1. Flow control

  • Data를 보내거나 제어를 달성하기 위해 Physical layer에 첨가되어야 한다.
  • 효과적인 데이터 통신을 위한 목표 및 요구사항들

    Frame synchronization
    Flow control
    Error control
    Addressing
    Control and data
    Link management

1-1. Flow Control

  • Transmitter가 Receiver의 처리속도보다 더 빨리 Data를 보내지 못하도록 control해 주는 것(또는 pacing)
  • entity가 받는 entity보다 overwhelming 되는 것을 방지 -> 버퍼 오버플로우 방지
  • Transmission Time : Start bit의 출발시간부터 Last bit의 도착시간까지, 프레임의 비트 수(길이)에 비례, Data Rate(채널의)에 반비례
  • Propagation Time : 거리에 의해 데이터의 출발부터 도착이 결정

1-2. Stop-and-Wait Flow Control

  • 가장 간단한 flow control
  • 내가 전송한 데이터를 잘 받았다는 신호(ACK)가 올때까지 wait
  • large frames을 잘라서 전송(장점 : 1. Error Control(짧은게 에러적음), 2. 재전송 용이, 3. Fairness<공평성,짧게 보내면 끝나면 다른 메시지도 보낼 수 있다.->망잠식 방지>)
  • Processing Time : frame을 받은 후 frame을 check하는 시간(다른 시간에 비해 짧아서 무시함)
  • ACK의 Start bit와 Last bit의 차이 : 상대적으로 큰의미가 없으므로 무시
  • a<1인게 이용률이 더 높다(Frame 길이가 길다), a>1이용률이 낮다(Frame 길이가 짧다)
  • frame size가 클수록, distance가 짧을수록, data rate<채널 용량>이 낮을수록 = a<1(이용률이 크다)
  • U = t(frame)/<t(frame)+2t(propa)> = 1/(1+2a)
  • a = t(propa)/t(frame)
  • 따라서 U를 증가시키려면 a를 감소시킨다 -> a를 감소시키려면 t(frame)은 커야하고, t(propa)는 작아야한다.

1-3. Sliding Windows Flow Control

  • Transmitter는 다수 개(W)의 프레임을 ACK없이 전송할 수 있다!
  • Receiver는 W 만큼의 buffer를 갖는다.
  • ACK에는 예상되는 다음 프레임 번호가 포함된다.
  • 시퀀스 번호(0번부터 1씩 증가)는 필드 크기(k)로 제한된다.
  • frame들은 2^k의 개수의 modulo로 번호가 매겨짐, max window size = 2^k - 1
  • 내가 ACK를 받지 않고도 연속으로 전송할 수 있는 개수는 제한(윈도우 사이즈)
  • Recieve Ready : RR, 잘 받았고 다음 것도 받을 준비 잘됨
  • Receive Not Ready : 잘 받았지만 다음 것 받을 준비는 아직 못 했다. -> Receiver는 ACK frames을 허가 없이 보낼 수 있다.
  • Full-duplex link를 갖는 경우, piggyback ACK를 보낼 수 있다.
    -> Full-duplex : 전이중통신, 하나의 링크에서 동시에 수신과 송신 가능
    -> piggyback ACK : 수신자가 송신자에게 데이터를 보낼때 이전에 수신한 것에 대한 ACK도 붙이는 방식!
  • 3bit(0~7까지 표현) -> 7개까지는 ACK없이도 전송, 수신 가능 -> F0(0번 보냄) -> 6개 전송, 수신 가능 -> B : ACK1 -> A : F1,F2,F3 -> A는 4~7까지 가능 -> B : ACK4 -> 4~2까지 가능

2. Error Control

2-1. Error Control Techniques

  • timer를 작동시키고 timeout으로 error detection
  • ACK로 확인, negative ACK로 재전송 확인
  • Automatic Repeat Request(ARQ) : 에러가 있는 프레임을 받은 경우 행동 -> 신뢰성있는 데이터 전달을 위해, 재전송을 기반으로 하는, 에러제어 방식.
  • ARQ types

    stop-and-wait
    go-back-N(sliding window)
    selective-reject(sliding window)

2-2. stop-and-wait ARQ

  • ACK를 wait -> single frame을 source가 전송 -> frame이 손상되면 삭제 -> ACK를 ACK0 / ACK1(0번 잘 받았고 1번을)등을 사용<ACK 두번 오는거 방지>
  • 장점 : 간단함, 단점 : 비효율적
  • 한번에 갈 수 있는 비트가 2^n(n:전송 프레임 수)-1

2-3. Go-Back-N ARQ

  • 가장 널리 쓰이는 error control 방식
  • Sliding 방식에 기반을 둠
  • 오류가 발생하지 않는 동안 대상은 평소와 같이 들어오는 프레임을 확인
  • ACK 없이도 가능
  • RR(Polling), RNR 사용함.

2-4. Selective-Reject ARQ

  • 오직 선택된 거절 프레임(reject frame)만을 재전송 -> 재전송을 최소화
  • Selective Reject(SREJ)라는 Frame 제공
  • 후속 프레임은 수신기에서 수락되고 buffered
  • Reciever는 반드시 buffer 크기에 맞는지 크기를 관리해야함.
  • 위성 통신 링크와 같이 propagation delays가 긴 경우 유용함.

2-5. ACK의 종류

  • Positive(수신은 됨) : RR, RNR
  • Negative(수신도 안됨) : REJ, SREJ(특정한 하나만)
  • 가장 광범위하게 정의되어 있다.(가장 중요!)
  • Station types

    Primary : 주, 호스트컴
    Secondary : 종, 터미널
    Combined : 혼합, 하나가 주종을 다 기능함->PC간 통신

  • Link Configuration

    Unbalanced : 1 primary, multi-secondary
    Balanced : 2 combined stations, peer to peer

  • Normal Response Mode(NRM) : Primary(전송을 시작)와 Secondary에 해당 -> Unbalanced
  • Asychronous Balanced Mode(ABM) : 각자가 전송할게 있으면 전송을 야기한다, balanced 사용, 폴링 오버헤드가 없음, 대부분 이거 사용, Terminal의 속도는 Host에 비해 느리다
  • Asychronous Response Mode(ARM) : unbalanced 사용, secondary가 primary 허가 없이 전송 가능, 드물게 사용
  • HDLC Frame Structure
  • Flag(01111110, 8bits), Address(여러 군데에서 한 군데로 전송할때 필요, 최소 8bits ~ 8비트 단위로 확장 가능),
    Control(8 or 16 bits), Information(유저데이터, 가변적), FCS(Information이 길면 길수록 32bits, 16 or 32 bits), Flag(8bits)
  • synchronous transmission에서 사용

3-1. Flag Field and Bit Stuffing

  • 01111110은 Flag로 약속 -> 다른 곳에서도 나올 수 있음
  • 0 Insertion : 1이 다섯번 나오면 여기에 무조건 0을 삽입 -> 수신측은 111110이 오면 0을 뗀다.
  • 데이터가 투명하다 -> 0 삽입은 유저가 하지 않음 -> 사용자 관점에선 데이터 투명성이 보장됨.

3-2. Address Field

  • 최소 8비트, 확장 가능
  • 첫 비트 0이면 그다음 8단위로 첫비트 0 -> 한 바이트 사용이면 첫비트 1 -> 끝 바이트에서는 첫비트 1임.
  • Broadcast(모두에게, 11111111), Multicast(특정 집단에게만 전송)

3-3. Control Field

  • Frame Types

    Information : 사용자 정보 or 데이터
    Supervisory : RR,RNR,REJ,SREJ를 정의하기 위함
    Unnumbered : 시퀀스 넘버가 없는 걸 처음에 사용 -> 이것을 정의

  • 첫 비트가 0이면 Information, 10이면 Supervisory, 11이면 Unnumbered
  • Information : N(S)로 Sequence number 전송, N(R)는 ACK, 즉, ACK를 보내면서 데이터도 같이 -> Piggy
  • Supervisory : ACK용도, Send Sequence number(N(S))는 필요 없음, N(R)만 필요, 4경우 -> RR,RNR,REJ,SREJ를 나타냄
  • Unnumbered : M->5bit(종류가 32가지 가능), 시퀀스 넘버는 필요 없음
  • P/F : Polling/Final -> 내가 보낼때는 1로 세트해서 보낼때는 응답하는 입장에선 0으로 보냄
  • 8 또는 16비트 차이 : 16에서는 N(S), N(R)의 길이가 길어짐(3 -> 7bits), ACK없이 127개까지 전송가능, 16bits는 장거리에 이용(이용률을 높여야 효율성이 높다!)

3-4. HDLC Operation

  • 초기화하고 전송하고 끊는다!
  • SARM : Unnembered Frame의 한 종류, SARM은 Asynchronous로 통신하자는 의미, UA까지가 초기화 -> 그다음부터 데이터 전송 -> DISC로 끊기 -> Unnumbered ACK(UA)
  • 다 전송후 더 보낼게 없으면 Supervisory 전송(RR 등)
  • 바쁜 경우 : RNR -> 잘 받았지만 지금은 받을 상황이 안됨 -> RR(지금은 가능?) -> RR 받을때까지 물어봄 -> RR 받으면 -> 데이터 전송 시작
  • 사라진 경우 : 시퀀스가 안 맞음 -> REJ 4 -> 다시 4부터 전송
  • Timeout : RR 받음 -> 사라짐 -> 타임아웃 -> RR, 0, P(폴링해봄) -> RR, 3, F(받을 데이터 확인해줌(3)) -> 그거에 맞게 재전송

출처 : Data and Computer Communication, 대학교 데이터통신 수업(by 김영천 교수님)

profile
매일 매일 새로워지는 나 자신을 꿈꾸며

0개의 댓글