☁️ UDP란 무엇인가?
UDP는 User Datagram Protocol, 즉 사용자 데이터그램 프로토콜의 약자이다.
이건 인터넷에서 정보를 빠르게 보내는 아주 단순한 방식의 전송 방법이다. 별다른 장치 없이, 말 그대로 “보내기만” 함!
✅ UDP의 특징
- 간단하고 빠름
- 전송 전에 상대랑 “이제 보낼게 준비댐?” 이런 핸드셰이크 과정 없이 바로 전송함
- 편지 보낼 때 우체국 안 가고 그냥 우편함에 넣는 느낌
- 비연결성 (Connectionless)
- 매번 전송할 때 연결을 새로 맺지 않음 → 속도가 빠름
- 보낸 메시지가 중간에 없어질 수도 있고, 순서가 바뀔 수도 있음
- 최선 노력형 서비스
- “할 수 있는 한 최선을 다해서 보내겠음!“의 의미.
- 하지만 도착 보장은 안 함
💡 UDP는 언제 사용될까?
- 스트리밍 서비스: 영상/음악에서 약간의 손실은 괜찮고, 속도가 중요할 때
- DNS 요청: 빠르게 주소를 찾기만 하면 되니까
- 게임, 음성통화 등 → 실시간성이 중요할 때 자주 씀
📦 UDP 헤더 구조
UDP로 보내는 메시지는 이렇게 생겼다
[소스 포트 번호][목적지 포트 번호]
[ 전체 길이 ][ 체크섬 ]
[ 실제 데이터 (내용) ]
- 소스 포트 번호: 누가 보냈는지
- 목적지 포트 번호: 누구한테 보낼 건지
- 길이: 전체 메시지의 크기
- 체크섬: 혹시 데이터가 깨졌는지 확인하기 위한 검사용 숫자!
✅ UDP 체크섬 - 데이터가 중간에 깨졌는지 어떻게 알 수 있을까?
🧪 보내는 쪽 (송신자, sender)
- 메시지(헤더 + 내용)를 16비트 단위로 잘라서 다 더한다.
- 더한 값을 1의 보수 형태로 바꿔서 체크섬에 넣는다.
- → 1의 보수: 0은 1로, 1은 0으로 바꾼 것
🧪 받는 쪽 (수신자, receiver)
- 받은 메시지를 똑같이 더해서 체크섬 계산해봄
- 계산한 값이 보낸 체크섬과 다르면? → 중간에 오류 발생!
🧮 예시로 보기
두 개의 16비트 숫자를 더했는데
1111001100110011
+ 1110101010101010
---------------------
=1101110111011101 → 더한 값
근데 맨 앞 자리가 넘쳤으면 그걸 다시 더해서
→ 최종적으로: 1010001000100001 → 이게 체크섬!
👉 이렇게 보내면, 받는 쪽도 똑같이 계산해서 문제가 없는지 확인할 수 있다.
🎯 왜 UDP를 쓸까?
UDP는 연결도 설정하지 않고, 간단한 구조 덕분에
- 빠르게 전송 가능
- 오버헤드(부가 작업)가 적음
- 실시간성이 중요한 앱에 유리!
하지만…
- 데이터가 손실될 수 있고
- 순서가 꼬일 수 있음
- 재전송을 스스로 안 함
그래서 정말 중요한 데이터(예: 은행 송금)는 TCP를 쓰고,
빠르기만 하면 되는 상황은 UDP를 쓴다.
'CS > Network' 카테고리의 다른 글
| [네트워크] Congestion Contol (0) | 2025.04.22 |
|---|---|
| [네트워크] principles of reliable data transfer (rdt의 원리) (0) | 2025.04.21 |
| [네트워크] multiplexing and demultiplexing (0) | 2025.04.20 |
| [네트워크] Web Cache (0) | 2025.04.19 |
| HTTP와 웹의 작동 원리 (0) | 2025.04.04 |