410 likes | 688 Views
Chapter7 Data Link Control. Flow Control Error Detection Error Control HDLC. Flow Control. Flow Control 수신 엔티티의 용량 이상으로 Data 가 넘치지 않도록 송신 엔티티를 제어하는 기술 만약 , Flow Control 이 없으면 Receiver 의 Overflow 가 발생. 처리율 <전송률. Buffer 에 저장. Flow Control. Flow Control. Flow Control 방법
E N D
Chapter7 Data Link Control Flow Control Error Detection Error Control HDLC
Flow Control • Flow Control • 수신 엔티티의 용량 이상으로 Data가 넘치지 않도록 송신 엔티티를 제어하는 기술 • 만약, Flow Control이 없으면 Receiver의 Overflow가 발생 처리율 <전송률 Buffer에 저장 Flow Control
Flow Control • Flow Control 방법 • Sender에서 보내는 Data가 Receiver의 처리 능력을 초과하지 않도록 맞춰줌 • 수신 데이터를 저장하는 Buffer가 꽉 차지 않도록 함
Flow Control • Fragmentation 하는 이유 • Receiver의 Buffer Size가 제한 • Error Check를 빨리 할 수 있음 • Error 발생시 Retransmission하는 Data의 양이 적음 • Transmission Media를 효율적으로 공유
Flow Control • Fragment의 크기 • 너무 클 때의 문제점 • 전송 매체를 점유하는 경우가 증가 불공평한 매체 사용 • 에러 발생에 의해 다시 전송할 때 부담이 큼 • 너무 작을 때의 문제점 • 전송을 위한 부가정보(헤더 등)의 비중이 커짐
Flow Control • Transmission time • 한 Frame을 송신하는데 걸리는 시간 • Propagation time • Sender가 Receiver에 한 Bit 보내는데 걸리는 시간 Transmission Time Sender Receiver Transmission Media Propagation Time
Flow Control • Frame Transmission Model
Flow Control • Flow Control의 종류 • 정확한 데이터 전송을 위해.. • 일정한 수의 데이터를 보낸 후 잘 받았다는 응답을 받는 형태로 반복 • 한번에 보내는 데이터의 양에 따라 분류 Flow Control Stop-and-Wait Sliding Window 한 번에 하나의 Frame 전송 한 번에 여러 개의 Frame 전송
Flow Control • Stop and Wait • 송신측은 하나의 Frame을 전송 • 수신측은 Frame을 잘 받았으면 ACK 전송 • 송신측은 ACK를 기다림 • 일정 시간 동안 ACK가 오지 않으면 재전송 • 장점 • 구현하기 쉽고 간단 • 단점 • 비효율적 → Frame 수가 적은 경우 사용
Flow Control • Stop and Wait의 동작원리 단점 : ACK가 돌아올 때까지 기다리는 시간낭비 Link의 Utilization이 저하
Flow Control • Stop and Wait의 Link Utilization
Flow Control • Sliding Window Flow Control • 한 번에 여러 개의 Frame 전송 • 송신 Frame의 수는 수신측에서 결정 • 각 Frame에 Sequence number 부여 • ACK에는받고자 하는 다음 Frame의 Sequence number 포함
Flow Control • Sliding Window 동작(Sander Window) • Frame을 송신 - 왼쪽 경계가 이동하여 윈도우 축소 • ACK를 수신 - 오른쪽 경계가 이동하여 윈도우를 확장
Flow Control • Sliding Window 동작(Receiver Window) • Frame을 수신 - 왼쪽 경계가 이동하여 윈도우 축소 • ACK를 송신 - 오른쪽 경계가 이동하여 윈도우를 확장
Flow Control 전송 후 ACK를 받은 Frame Frame 보내면 한 칸 이동 ACK 받으면 한 칸 이동 수신 후 ACK를 보내준 Frame Frame 받으면 한 칸 이동 ACK 보내면 한 칸 이동
Flow Control ACK 보낸 Frame ACK 받은 Frame 1 2 3 4 0,1,2번 잘 받음. 3번 전송 요청. 5 6 8 7 9 10 11 12 RR (Receive Ready) n : 이전 것은 잘 받았으니 n번을 전송해 달라는 의미
Error Detection • Error Control • 수신된 데이터의 에러를 체크하고 정정하기 위한 제어 • Error Detection • Error를 감지하기 위해 송신측에서 특정 비트 정보를 추가해서 전송 • Error가 있으면 재전송 • Error Correction • Error를 감지하면 Error를 정정
Error Detection • Parity Check • 1의 수를 even parity 또는 odd parity로 맞춰줌 • 에러가 여러 bit에서 발생하면 체크하지 못함 1 bit error ! Even Parity 1 0 1 0 0 1 1 1 0 1 0 1 1 1 Even Parity 아니므로 Error ! 2 bit error ! 1 0 1 0 0 1 1 1 0 0 0 0 0 1 Even Parity Error 감지 못함
Error Detection • CRC(Cyclic Redundancy Check) • Mod-2 division에 근거한 오류검출 방식 • 송·수신 간에 “divisor”(n+1 bits)를 공유함 • 송신측 : CRC(n bits) 발생기 • 수신측 : CRC(n bits) 검사기
Error Detection • CRC 연산 방법 • 수신기는 수신된 프레임을 FCS로 나누어 나머지가 없으면 에러가 없는 것으로 간주 • 모듈로-2 연산 • Carry가 없는 2진 덧셈 (exclusive-OR연산)예) 1111 + 1010 -------- 0101 11001 x 11 ------------- 11001 11001 ------------- 101011
Error Detection • CRC의 발생과 검사과정 • Step-1 : n-bit extra “0” • 정보 data의 뒤에 n-bit의 “0”을 첨가 • Step-2 : “divisor” generates CRC • 첨가된 data를 n+1 bit의 “divisor”로 나누어 그 나머지를 CRC로 결정 • Step-3 : CRC attaching • 정보 data 뒤에 첨가된 n-bit “0”대신 n-bit CRC를 첨가 • === 전송(transmission) === • Step-4 : CRC check • 수신정보(정보 data + CRC)를 “divisor”로 나누어 나머지를 구함 • 나머지 = “0” ⇒ ‘ACK’ • 나머지 ≠ “0” ⇒ ‘NAK’
Error Control • Error Control 방법 • Error Control은 Error Detection과 Retransmission을 포함 • Data Link Layer 구현사항 • Stop and Wait ARQ • Sliding Window ARQ Error Control Stop and Wait ARQ Sliding Window ARQ Go back N ARQ Selective Reject ARQ
Error Control • ARQ(Automatic Repeat reQuest) 방식 • 에러 발생시 재전송을 자동으로 요청하는 방식 • 오류검출 • 부정응답(NAK) • 프레임 재전송 • ARQ의 종류 • Stop and Wait ARQ • Go Back N ARQ • Selective Reject ARQ
Error Control • Stop and Wait ARQ • Stop and Wait Flow Control에 손실 혹은 손상된 Frame을 Retransmission할 수 있도록 확장
Error Control • 기본 Stop and Wait에 추가할 사항 • 보낸 Frame을 Buffer에 가지고 있어야 함 • Frame 식별을 위한 교대로 0과 1 번호 사용 • ACK 손실 체크 • Frame의 오류 발견시에 NAK 사용 • Frame 번호에 관계없이 마지막 Frame Retransmission • Timer 사용 • Timeout이 발생하면 Frame 손실로 간주하고 Retransmission • 받은 Frame이 손상된 경우 • ACK가 손상되는 경우
Error Control • Stop and Wait ARQ의 동작원리 • Stop and Wait를 기반으로 함 • Sender의 동작 • 하나의 Frame만 전송 후ACK를 기다림 • 일정 시간 동안 ACK가 없으면 Timeout 되므로 Retransmission • Receiver의 동작 • 0과 1을 번갈아 ACK에 번호를 붙임 • 받은 Frame이 손상된 경우, Frame을 버림
Error Control • Stop and Wait ARQ (손상된 Frame) 1 0 1
Error Control • Stop and Wait ARQ (손실된 Frame)
Error Control • Stop and Wait ARQ (손실된 ACK)
Error Control • Sliding Window ARQ • Sliding Window Flow Control에 손실 혹은 손상된 Frame을 Retransmission할 수 있도록 확장
Error Control • 기본 Sliding Window에 추가할 사항 • 보낸 Frame을 Buffer에 가지고 있어야 함 • Frame의 오류 발견시에 NAK 사용 • NAK 번호는 손상된 Frame 번호만 전송 • Timer 사용 • Timeout이 발생하면 Frame 손실로 간주하고 Retransmission • 받은 Frame이 손상된 경우 • ACK가 손상되는 경우
Error Control • Retransmission 방법에 따라 분류 • Go Back N ARQ • 하나의 Frame이 손실되면 ACK 이후의 모든 Frame을 Retransmission • Selective Reject ARQ • 손상되거나 손실된 Frame만 Retransmission
Error Control • Go Back N ARQ의 동작원리 • Sliding window를 기반으로 함 • Sender의 동작 • 한번에 여러 Frame 전송 • 에러 발생시 에러 발생한 Frame부터 모두 Retransmission • Receiver의 동작 • 에러가 발생하지 않으면 다음으로 받을 Frame의 번호를 ACK에 표시하여 전송 • 에러 발생하면 에러 발생한 Frame의 번호를 포함하여 NAK 전송
Error Control • Go Back N ARQ (손상된 Frame) 손상된 Frame 이후 수신된 Frame은 패기
Error Control • Go Back N ARQ (손실된 Frame) 도착한 Frame의 순서 검사 손상된 Frame 이후 수신된 Frame은 패기
Error Control • Go Back N ARQ (손실된 ACK, NAK) 측정 타이머 가동 마지막 ACK 이후 전송했던 모든 Frame을 재전송
Error Control • Selective Reject ARQ의 동작원리 • Sliding Window를 기반으로 함 • Sender의 동작 • 한 번에 여러 Frame 전송 • 손상되거나 손실된 Frame만 Retransmission • Receiver의 동작 • 에러가 발생하지 않으면 다음으로 받을 Frame의 번호를 ACK에 표시하여 전송 • 에러 발생하면 에러 발생한 Frame의 번호를 포함하여 NAK 전송
Error Control • Selective Reject ARQ (손상된 Frame) 수신 Frame의 완전한 재배치까지 모든 Frame을 유지 Frame2를 다시 받은 후에 ACK5로 응답 재전송 요구된 Frame을 찾아 해당 Frame만 재전송
Error Control • Go Bank N vs Selective Reject • Frame 전송의 효율적인 측면 • Selective Reject ARQ가 유리 • Sender와 Receiver의 구현 측면 • Receiver에서 요구하는 재배열 및 저장 공간의 복잡도 • Sender에서 요구하는 특정 Frame 선택을 위한 추가적인 로직이 필요함 • SelectiveReject ARQ가 불리 • 구현의 단순성 때문에 Go Back N ARQ를 선호