핸드쉐이킹 (Handshaking)
핵심 인사이트 (3줄 요약)
두 장치 간 통신 준비를 확인하는 프로토콜. 송신자와 수신자가 서로 준비되었음을 확인한 후 데이터 전송을 시작한다. 비동기 통신에서 데이터 손실을 방지한다.
📝 기술사 모의답안 (2.5페이지 분량)
📌 예상 문제
"핸드쉐이킹 (Handshaking)의 개념과 핵심 원리를 설명하고, 비교 분석 및 실무 적용 방안을 기술하시오."
Ⅰ. 개요
1. 개념
핸드쉐이킹(Handshaking)은 두 장치가 통신하기 전 서로 준비되었음을 확인하는 절차다. 신호를 주고받으며 동기화한다.
비유: "전화 통화" - "여보세요?" "네, 들려요?" 후 대화 시작
Ⅱ. 구성 요소 및 핵심 원리
2. 기본 핸드쉐이킹
장치 A (송신) 장치 B (수신)
│ │
│───── Request ──────→│ "데이터 보낼게!"
│ │
│←──── Acknowledge ───│ "준비됐어!"
│ │
│────── Data ────────→│ (데이터 전송)
│ │
│←──── Complete ──────│ "받았어!"
3. 하드웨어 핸드쉐이킹
병렬 포트 (Centronics) 예시:
송신측: 수신측:
┌─────┐ ┌─────┐
│ │── Strobe ───→│ │
│ A │ │ B │
│ │←── Ack ──────│ │
│ │── Data ─────→│ │
└─────┘ └─────┘
1. A가 Strobe 신호 (데이터 준비됨)
2. B가 데이터 읽고 Ack 신호
3. A가 다음 데이터 준비
4. 소프트웨어 핸드쉐이킹
XON/XOFF 프로토콜:
송신측 수신측
│ │
│────── Data ────────→│
│────── Data ────────→│
│ │ (버퍼 거의 참)
│←───── XOFF ─────────│ "잠깐 멈춰!"
│ (전송 중지) │
│ │ (버퍼 처리)
│←───── XON ──────────│ "다시 보내!"
│────── Data ────────→│
5. I2C 핸드쉐이킹
I2C 통신:
Master Slave
│ │
│─── Start ─────────→
│─── Address ───────→
│←── ACK ────────────│ (슬레이브 있음)
│─── Data ──────────→
│←── ACK ────────────│
│─── Stop ──────────→
ACK = Acknowledge (Low)
NACK = Not Acknowledge (High)
6. TCP 3-way 핸드쉐이크
네트워크 연결:
Client Server
│ │
│─── SYN ──────────→│ (연결 요청)
│ │
│←── SYN+ACK ───────│ (요청 수락 + 연결 요청)
│ │
│─── ACK ──────────→│ (수락 확인)
│ │
│═══ 연결 완료 ═════│
Ⅲ. 기술 비교 분석
7. 핸드쉐이킹 vs 폴링
| 특징 | 핸드쉐이킹 | 폴링 |
|---|---|---|
| 동기화 | 신호 기반 | 주기적 확인 |
| 효율 | 높음 | 낮음 |
| 복잡도 | 높음 | 낮음 |
| 지연 | 낮음 | 높음 |
8. 장단점
| 장점 | 단점 |
|---|---|
| 신뢰성 높음 | 오버헤드 |
| 동기화 보장 | 추가 신호선 필요 |
| 흐름 제어 가능 | 구현 복잡 |
Ⅳ. 실무 적용 방안
9. 실무에선? (기술사적 판단)
- 임베디드: GPIO, UART 핸드쉐이킹
- 네트워크: TCP, TLS 핸드쉐이크
- 버스: I2C, SPI Acknowledge
- USB: 열거(Enumeration) 과정
Ⅴ. 기대 효과 및 결론
| 효과 영역 | 내용 | 정량적 목표 |
|---|---|---|
| 성능 향상 | 처리 속도·응답 시간 개선 | 기존 대비 20~40% 향상 |
| 비용 절감 | 운영비·인프라 비용 절감 | 연간 15~30% 절감 |
| 품질/안정성 | 가용성·장애 감소 | UpTime 99.9% 이상 |
※ 참고 표준: 해당 기술 관련 NIST / ISO / IEEE / 과기정통부 가이드라인
어린이를 위한 종합 설명
핸드쉐이킹를 쉽게 이해해보자!
두 장치 간 통신 준비를 확인하는 프로토콜. 송신자와 수신자가 서로 준비되었음을 확인한 후 데이터 전송을 시작한다. 비동기 통신에서 데이터 손실을 방지한다.
왜 필요할까?
기존 방식의 한계를 넘기 위해
어떻게 동작하나?
복잡한 문제 → 핸드쉐이킹 적용 → 더 빠르고 안전한 결과!
핵심 한 줄:
핸드쉐이킹 = 똑똑하게 문제를 해결하는 방법
비유: 핸드쉐이킹은 마치 요리사가 레시피를 따르는 것과 같아. 혼란스러운 재료들을 정해진 순서대로 조합하면 → 맛있는 요리(최적 결과)가 나오지! 🍳