950. HDLC 비트 스터핑 (Bit Stuffing) - 투명성 데이터 프레임 동기화 플래그 플래그 바이트 오인 방지 통신망 처리 원리
핵심 인사이트: 편지를 쓸 때 '여기부터 편지 시작입니다(01111110)'라고 약속을 정했다. 그런데 편지 본문 우연히 이 암호와 똑같은 '01111110'이라는 글씨가 섞여 있으면 수신자는 "어? 여기서 편지가 끝난 건가?" 하고 오해해서 편지를 찢어버린다. "야! 본문 속에 '1'이 5번 연속 나오면, 무조건 억지로 가짜 '0'을 하나 쑤셔 넣어(Stuffing)! 그러면 절대 '1'이 6개 나오는 약속된 암호랑 겹칠 일이 없잖아!" 도착지에서 그 가짜 '0'만 쏙 빼고 읽으면 원래 편지가 복구되는 데이터 투명성의 마법, 비트 스터핑이다.
Ⅰ. 통신 프레임의 경계(Flag) 인식 문제
데이터 링크 계층(L2)의 대표적인 고전 프로토콜인 **HDLC(High-Level Data Link Control)**는 데이터를 보낼 때 패킷의 시작과 끝을 알리기 위해 특수한 '깃발(Flag)' 비트를 씁니다.
- 플래그(Flag) 패턴:
01111110(즉, 앞뒤로 0이 있고 가운데 1이 연속 6개). - 투명성(Transparency)의 위기: 사용자가 보낸 순수한 데이터(Payload) 안에 우연히 저
01111110이라는 패턴이 똑같이 들어있을 수 있습니다. - 수신 측 장비는 데이터를 읽다가 중간에 저 패턴을 만나면 "아! 여기서 패킷 전송이 끝났구나!"라고 착각하여 뒤에 남은 데이터를 싹 다 버려버리는 치명적 오류가 터집니다.
Ⅱ. 비트 스터핑 (Bit Stuffing)의 개념 🌟
- 개념: 전송할 데이터의 본문(Payload) 안에 플래그(
01111110)와 동일한 패턴이 우연히 발생하여 수신자가 프레임의 끝으로 오인하는 것을 방지하기 위해, 송신 측이 강제로 특정 위치에 더미 비트(0)를 쑤셔 넣고(Stuffing), 수신 측이 이를 다시 뽑아내어(Destuffing) 원본 데이터의 투명성을 보장하는 기술입니다.
Ⅲ. 비트 스터핑의 동작 원리 (무조건 암기) 🌟
1. 송신자 (Stuffing - 쑤셔 넣기)
- 송신자는 전송할 데이터를 1비트씩 훑어봅니다.
- 만약 본문 데이터 중에
1이 연속해서 5번(11111) 나오면, 그 즉시 묻지도 따지지도 않고 그 뒤에 강제로0을 하나 쑤셔 넣습니다. - 예시:
- 원본 데이터:
01111110(플래그와 똑같아 위험함!) - 스터핑 후:
011111010
- 원본 데이터:
- 효과: 이제 본문 안에는 죽었다 깨어나도
1이 6번 연속 나오는 일(01111110플래그 패턴)이 절대 발생하지 않습니다. 수신자가 헷갈릴 확률 0%가 됩니다.
2. 수신자 (De-stuffing - 뽑아내기)
- 수신자는 도착한 데이터를 1비트씩 훑어봅니다.
1이 5번 연속으로 나왔는데, 그 바로 뒤에0이 붙어있다면? "아! 이건 송신자가 억지로 쑤셔 넣은 가짜 비트구나!" 하고 눈치채고 그0을 칼로 쓱 오려내서 버려버립니다.- 가짜 비트
0을 뽑아내면, 원본 데이터가 100% 동일하게 완벽 복원됩니다.
Ⅳ. 시험 출제 포인트 (바이트 스터핑)
- 비트 스터핑(Bit Stuffing): HDLC 같은 비트 단위 프로토콜에서 씁니다. (1이 5개면 0 추가)
- 바이트 스터핑(Byte Stuffing): PPP 같은 바이트(문자) 단위 프로토콜에서 씁니다. 플래그 문자(
0x7E)와 똑같은 글자가 나오면, 그 글자 앞에 '탈출(ESC,0x7D)' 문자를 억지로 끼워 넣어 "이건 플래그가 아니라 진짜 데이터야!"라고 면죄부를 주는 방식입니다.
📢 섹션 요약 비유: 비트 스터핑은 첩보 영화의 **'암호 편지 쓰기'**입니다. 첩보원끼리 "편지에 **'장미꽃'**이라는 단어가 나오면 작전 종료다!"라고 약속(플래그)했습니다. 그런데 첩보원이 일상 편지를 쓰다가 "오늘 길가에 장미꽃이 예쁘더라"라고 썼습니다. 본부가 이걸 보고 "아, 작전 끝났구나!" 오해하고 철수하면 대참사가 납니다. 이를 막기 위해 첩보원은 "편지 본문에 '장미'라는 단어를 쓸 일이 생기면, 무조건 중간에 '가짜(0)' 글자를 넣어 **'장미(가짜)꽃'**이라고 적어라!"라는 룰(비트 스터핑)을 만듭니다. 본부는 편지를 읽다가 '장미(가짜)꽃'이 보이면 '(가짜)' 글자만 지워버리고 원래 뜻으로 이해합니다. 하지만 진짜 작전 종료일 때는 온전한 **'장미꽃'**이라고 적어 보내기 때문에, 본부가 오해 없이 정확하게 작전의 끝(프레임 종료)을 알아채는 멍청하면서도 완벽한 눈속임 규칙입니다.