오류 제어와 흐름 제어
쉽게 말하면
보내는 도중 잡음 때문에 0이 1로 바뀌는 일이 생겨요. 그래서 데이터 끝에 '검산용 숫자'를 붙여 받는 쪽이 틀렸는지 확인하고(오류 검출), 틀리면 다시 보내 달라고 하거나(ARQ) 스스로 고쳐요(해밍 코드). 받는 쪽이 감당할 만큼만 보내도록 속도를 맞추는 것은 흐름 제어예요.
시험용 정의
오류 제어는 전송 중 바뀐 비트를 찾아내고(검출: 패리티, CRC, 체크섬) 바로잡는 것(재전송: ARQ, 직접 정정: 해밍 코드 같은 FEC)이다. 흐름 제어는 받는 쪽이 넘치지 않게 보내는 양을 조절하는 것으로, 정지 대기 방식과 슬라이딩 윈도우 방식이 있다.
비유로 이해하기
택배 검수다. 상자 무게를 송장에 적어 두면(CRC) 받는 쪽이 저울로 확인하고, 다르면 반품·재발송을 요청한다(ARQ). 창고가 좁으면 '한 번에 세 상자까지만'(윈도우)이라고 정해 둔다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| PDU | 계층마다 주고받는 데이터 묶음(Protocol Data Unit). 보낸 PDU마다 ACK를 받아 확인하는 것이 오류 제어의 바탕이다 |
| ACK / NAK | 잘 받았다는 응답 / 잘못 받았다는 응답 |
| ARQ | Automatic Repeat reQuest. 오류가 나면 자동으로 다시 보내 달라고 하는 방식 |
| FEC | Forward Error Correction. 받는 쪽이 재전송 없이 스스로 고치는 방식 |
| 윈도우 | 응답을 기다리지 않고 연달아 보낼 수 있는 프레임 개수 |
오류 검출·정정
| 방법 | 특징 |
|---|---|
| 패리티 검사 | 1의 개수를 짝수(또는 홀수)로 맞추는 비트 하나. 짝수 개 비트가 동시에 바뀌면 못 찾는다 |
| 체크섬 | 데이터를 더한 값을 보내 비교. IP·TCP·UDP 헤더 |
| CRC | 다항식 나눗셈의 나머지를 붙인다. 연속 오류(버스트)도 잘 찾아 이더넷 FCS에 쓴다 |
| 해밍 코드 | 여러 개의 검사 비트로 오류 위치를 찾아 1비트 오류를 스스로 정정 (FEC) |
ARQ 방식
| 방식 | 동작 | 특징 |
|---|---|---|
| 정지 대기 | 하나 보내고 ACK를 받을 때까지 기다린다 | 단순하지만 느리다 |
| Go-Back-N | 여러 개를 연달아 보내고, 오류가 나면 그 프레임부터 뒤의 것을 모두 재전송 | 구현 쉬움, 재전송 낭비 |
| 선택적 재전송 | 오류 난 프레임만 재전송 | 효율 좋음, 받는 쪽에 순서 맞출 버퍼 필요 |
| 적응적(Adaptive) ARQ | 회선 상태에 따라 프레임 길이를 바꾼다 | 효율 높지만 복잡 |
슬라이딩 윈도우
윈도우 크기만큼은 응답 없이 연달아 보내고, ACK가 오면 그만큼 창을 앞으로 민다. 받는 쪽은 여유가 줄면 더 작은 윈도우 크기를 알려 보내는 쪽을 늦춘다. TCP가 이 방식으로 흐름 제어를 한다.
기출에서 더 나온 것
| 말 | 뜻 |
|---|---|
| Loop/Echo | 받은 데이터를 그대로 되돌려 보내 비교하는 오류 검출 방식. 흐름 제어가 아니다 |
| XON/XOFF | 수신 쪽이 보내지 마(XOFF), 다시 보내(XON) 문자로 흐름을 조절하는 방식 |
| 적응적 ARQ | 통신 상태에 따라 프레임 길이를 바꿔 전송 효율을 높이는 ARQ |
시험에 이렇게 나와요
- ARQ 종류 → 정지-대기·Go-Back-N·선택적 재전송·적응적 ARQ (FEC는 재전송이 아니라 스스로 정정)
- 오류 블록부터 모두 다시 보냄 → Go-Back-N / 프레임 길이를 상황에 맞게 바꿈 → 적응적(Adaptive) ARQ
- 흐름 제어 방식 → 정지-대기, 슬라이딩 윈도, XON/XOFF (Loop/Echo는 오류 검출 방식)
- TCP 흐름 제어 → 슬라이딩 윈도
- 보낸 PDU에 대한 ACK로 신뢰성 확보 → 오류 제어
확인 문제
Q1. 오류가 난 프레임 하나만 골라서 다시 보내는 방식은?
- Go-Back-N ARQ
- 정지 대기(Stop-and-Wait) ARQ
- 패리티 검사
- 선택적 재전송(Selective Repeat) ARQ
정답 보기
4번 선택적 재전송(Selective Repeat) ARQ
선택적 재전송은 문제가 된 프레임만 다시 보낸다. Go-Back-N은 오류 난 프레임부터 그 뒤에 보낸 것까지 모두 다시 보낸다.
Q2. 수신 측이 재전송 요청 없이 오류를 스스로 정정할 수 있는 방식은?
- 패리티 검사
- CRC
- 체크섬
- 해밍 코드
정답 보기
4번 해밍 코드
해밍 코드는 FEC로 1비트 오류를 정정한다.
Q3. 1~5번 프레임을 보냈는데 3번에서 오류가 났다. Go-Back-N에서 다시 보내는 프레임은?
- 3번만
- 3, 4, 5번
- 4, 5번
- 1~5번 모두
정답 보기
2번 3, 4, 5번
3, 4, 5번이다. Go-Back-N은 오류가 난 프레임부터 그 뒤를 모두 다시 보낸다. 선택적 재전송(Selective Repeat)이면 3번만 다시 보낸다.
Q4. 이더넷 프레임의 FCS에 쓰이는 오류 검출 방식은?
- 패리티
- 해밍
- CRC
- 체크섬
정답 보기
3번 CRC
CRC(CRC-32)다. 다항식 나눗셈으로 오류를 잘 찾는다. 패리티는 단순 검출, 해밍은 정정까지 한다.
Q5. 흐름 제어 방식이 아닌 것은?
- XON/XOFF
- 슬라이딩 윈도
- 정지-대기
- Loop/Echo
정답 보기
4번 Loop/Echo
Loop/Echo는 받은 데이터를 되돌려 보내 비교하는 오류 검출 방식이다.
Q6. 통신 상태에 따라 프레임 길이를 바꿔 전송 효율을 높이는 ARQ는?
- 정지-대기 ARQ
- 선택적 재전송 ARQ
- 적응적 ARQ
- Go-Back-N ARQ
정답 보기
3번 적응적 ARQ
적응적(Adaptive) ARQ.
헷갈리기 쉬운 O·X
패리티 검사는 2비트가 동시에 바뀐 오류도 항상 찾아낸다.
정답 보기
X 짝수 개 비트 오류는 1의 개수 홀짝이 그대로라 못 찾는다.
흐름 제어는 받는 쪽이 감당할 수 있는 만큼만 보내도록 조절하는 것이다.
정답 보기
O 슬라이딩 윈도우가 대표.
정지 대기 ARQ는 여러 프레임을 연달아 보낸다.
정답 보기
X 하나 보내고 응답을 기다린다.