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(특정한 하나만)
3. High-level Data Link Control(HDLC)
- 가장 광범위하게 정의되어 있다.(가장 중요!)
- 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 김영천 교수님)