전송 계층 프로토콜
- 인터넷에서 가장 많이 사용되는 프로토콜
TCP 연결형 통신
UDP 비연결형 통신
UDP (User Datagram Protocol)
process- to process protocol
cf) IP: host to host protocol
비연결성 비신뢰성
기본적인IP전달 서비스에 프로세스간 통신이 추가된 형태
연결성보장과 신뢰성 전송에 소요되는 오버헤드가 없음
간단한 메시지를 송수신하는 데 유리
UDP= 비연결형 IP전달 서비스 +검사합(checksum)기능
UDP의 장점 : 데이터전송이 빠르고 응용프로그램이 간단해짐, 오버헤드가 발생하지않음
UDP의 단점: 메시지손실,중복수신,수신지연,잘못된순서 처리하기위한 신뢰성 제어기능을 제공해야함
UDP 가짜 헤더(pseudo header)
UDP 가짜 헤더는 왜 만들까?
✅ 요약부터!
UDP의 가짜 헤더는 "오류 검사(Checksum)"를 더 정확하게 하기 위해서 만듭니다.
IP 계층의 정보까지 같이 검증하기 위해
전송할 때는 붙지 않지만, 오류 검사할 때만 임시로 만들어서 계산해요.
📦 왜 오류 검사가 필요한데?
UDP는 신뢰성이 낮다고는 하지만,
최소한의 오류 확인(Checksum)은 해요.
- UDP 헤더에는 16비트짜리 Checksum 필드가 있음
- 이걸 계산해서 → 전송
- 수신 측은 받아서 → 다시 계산 → 값이 다르면 오류 발생
🔍 그런데 왜 "가짜 헤더"가 필요할까?
UDP는 자기 헤더와 데이터만 보고 오류 검사를 하면 불완전해요.
왜냐하면…
📌 패킷이 진짜 도착했는지, 올바른 IP 주소로 왔는지는 IP 계층 정보에 달려 있음
즉, IP 계층에서:
- 누가 보냈는지(출발지 IP)
- 누구한테 보내는지(목적지 IP)
- 이게 UDP인지 뭔지(프로토콜 번호)
➡️ 이 정보들이 잘못됐는데, UDP는 몰라요!
그래서 **UDP는 "IP의 핵심 정보도 같이 검사해야겠다!"**고 생각한 거예요.
✅ 그래서 가짜 헤더(Pseudo Header)를 만듭니다
오류 검사할 때, 다음 정보들을 임시로 붙여요:
출발지 IP 주소 | 32비트 |
목적지 IP 주소 | 32비트 |
0 | 8비트 (예약값) |
프로토콜 번호 | 8비트 (UDP는 17) |
UDP 길이 | 16비트 |
➡️ 이걸 UDP 데이터 앞에 임시로 붙여서 체크섬 계산
➡️ 끝나면 버리고, 전송은 UDP 헤더 + 데이터만!
✅ 체크섬(Checksum)이란?
데이터가 전송 중에 손상됐는지를 확인하기 위한 숫자값이에요.
보통 전송하기 전에 계산해서 같이 보내고,
받는 쪽에서 다시 계산해서 비교합니다.
👉 값이 같으면 ✅ 데이터가 "정상"
👉 값이 다르면 ❌ 데이터가 "손상됨"
📦 왜 필요한가요?
데이터는 전기 신호예요⚡
➡️ 전송 중에 신호가 흐트러지거나 1이 0으로 바뀔 수도 있음
➡️ 그러면 데이터가 손상되지만, 눈으로는 모름
➡️ 그래서 수신자가 "이게 맞게 온 건지 아닌지"를 확인해야 함
🎯 어떻게 계산되나요?
간단한 예:
데이터: 1001 1100 1010
- 숫자들을 일정 규칙으로 더함 (보통 16비트 단위로 덧셈)
- 결과값을 뒤집거나 보정해서 체크섬 값 생성
- 이 값을 데이터와 함께 전송
- 받는 쪽은 똑같이 계산해서 비교
✅ 체크섬 어디에 쓰이나?
UDP 헤더 | 오류 확인용 (UDP 가짜 헤더 포함) |
TCP 헤더 | 수신 확인, 재전송 판단 |
IP 헤더 | 헤더 오류 체크 |
파일 저장/압축 | ZIP, ISO 등도 체크섬 있음 (CRC 등) |
프로그램 다운로드 | SHA256, MD5 등으로 체크 |
❗ 한계도 있어요
- 체크섬은 단순 오류(1~2비트 뒤틀림)만 잡아냄
- 암호화, 위조, 해킹 감지는 못함! → 보안용 해시는 SHA, HMAC 등 강력한 해시함수 사용
✅ 예: UDP 헤더 구조에서 체크섬
Source Port | 16비트 |
Destination Port | 16비트 |
Length | 16비트 |
✅ Checksum | 수신 데이터가 맞는지 검사 |
"체크섬 계산 방법도 같이 보내는 거야?"
✅ 정답은 NO!
계산 "방법"은 안 보내고,
👉 계산 "결과값(체크섬 값)"만 보내요.
✅ 왜 계산 방식은 안 보내도 되냐면?
체크섬을 만드는 계산 공식은 전 세계적으로 '표준'이 정해져 있기 때문이에요.
즉,
- 보내는 쪽과 받는 쪽이 "똑같은 계산법"을 알고 있어요 (프로토콜에 포함되어 있음)
- 그래서 "이렇게 계산했어!"라고 말할 필요 없이,
그냥 계산된 **결과값(체크섬)**만 보내면 되는 거예요
🎯 예를 들어서
UDP 패킷을 보낼 때:
- 보내는 쪽:
- UDP 헤더 + 데이터 + (가짜 헤더)로 체크섬 계산
- 나온 값: 예를 들어 0xA1B2
- 이 값을 UDP 헤더의 Checksum 필드에 써서 전송
- 받는 쪽:
- 받은 데이터로 똑같은 방식으로 체크섬 다시 계산
- 계산된 값이 받은 체크섬과 같으면 → 데이터 정상!
- 값이 다르면 → 오류 → 버리거나 재전송 요청
✅ 그래서 프로토콜 문서에 항상 적혀있어요
예: UDP 프로토콜 (RFC 768)
"Checksum은 출발지 IP, 목적지 IP, UDP 길이, UDP 데이터 등을 이 순서대로 더해서 1의 보수로 만든다."
➡️ 이걸 전 세계 컴퓨터가 똑같이 따라함
"가짜 헤더를 만들어서 체크섬 계산을 하고 → 수신 측도 다시 가짜 헤더를 만들어서 비교한다"
✅ 정답입니다!
근데 여기서 바로 질문이 나오는 거죠:
❓ "수신 측은 발신지 IP를 어떻게 알아서 가짜 헤더를 똑같이 만들지?"
정답은:
✅ IP 헤더에 발신지 IP 주소가 이미 포함되어 있기 때문이에요!
📦 구조적으로 보자면…
✅ 네트워크 계층은 이렇게 생겼어요:
➡️ UDP는 IP 위에서 동작하니까, IP 헤더 정보를 읽을 수 있어요!
✅ 수신 측에서의 흐름 정리
- 패킷 도착
- IP 계층에서:
- 출발지 IP (192.168.0.2)
- 목적지 IP (192.168.0.10)
- 프로토콜 번호 (17 = UDP) → ✅ 이걸 전부 가져옴
- UDP 계층에서:
- UDP 헤더 + 데이터 + 위 IP 정보로 가짜 헤더 생성
- 체크섬 다시 계산해서 비교!
🔍 다시 요약
누가 가짜 헤더 만들어요? | 송신 측, 수신 측 모두 (오류 검사용) |
IP 주소는 어디서 가져와요? | ✅ IP 헤더에 포함되어 있음 |
그럼 동일하게 만들 수 있어요? | YES! 구조가 동일하므로 문제 없이 가능 |
"송신 측에도 IP 계층이 있어서 IP 헤더 만들 텐데, 왜 UDP는 그걸 다시 가짜 헤더로 만들어야 하냐?"
✅ 결론부터 말하자면:
IP 헤더는 UDP 계층에서는 직접 접근할 수 없기 때문입니다.
즉, 계산 당시에는 아직 IP 헤더가 '진짜로 만들어지기 전'이기 때문에,
UDP가 필요한 정보를 따로 가짜 헤더로 만들어서 계산하는 거예요.
✅ 송신 과정은 이렇게 돼요:
- UDP 계층에서:
- 데이터를 만들고 헤더도 붙임
- 체크섬을 계산해야 함
- 근데! 체크섬 계산할 때 필요한 정보 중 일부는 IP 계층의 정보임:
- 출발지 IP
- 목적지 IP
- 프로토콜 번호 (17)
- 전체 UDP 길이
- 문제는:
이 시점에는 IP 계층이 아직 IP 헤더를 붙이기 전!
→ UDP는 자기 헤더 안에 없는 정보를 필요로 하지만,
→ 직접 접근해서 가져올 수 없어요.
💡 그래서 하는 방법:
"좋아, IP 계층이 나중에 붙일 정보 중에 내가 필요한 것들만
미리 복사해서 '가짜 헤더'로 만들고 체크섬 계산할게!"
→ 이게 **Pseudo Header (가짜 헤더)**의 이유입니다!
✅ 수신 측도 마찬가지
수신 측은 IP 계층이 먼저 패킷을 받고 →
UDP 계층에 넘겨줄 때 IP 주소 등은 전달되니까
UDP가 같은 방식으로 가짜 헤더 만들어서 체크섬 계산 가능!
📌 그래서 포인트는:
UDP 계층이 직접 IP 헤더 접근 가능? | ❌ 불가능 (계층 분리 원칙) |
그럼 어떻게 해? | ✅ 필요한 정보만 따로 만들어서 "가짜 헤더"로 사용 |
수신 측도 가능해? | ✅ IP 계층에서 정보 전달받아서 동일하게 재계산 가능 |
🎯 한 줄 요약
UDP가 가짜 헤더를 만드는 이유는, 체크섬 계산 시 필요한 IP 계층 정보를 직접 접근할 수 없기 때문에, 필요한 정보만 따로 만들어서 사용하기 위해서입니다.
TCP (Transmission Control Protocol)
연결지향 데이터전송
Segment단위 전송
흐름제어( sliding window, flow control)
오류제어(응답패킷, 시간초과 , 재전송방식)
- 타이머관리
- 체크섬, 순서보장, 중복 패킷 방지
'수업 > 정보통신망' 카테고리의 다른 글
11ㄱ (0) | 2025.04.13 |
---|---|
10ㄱ (0) | 2025.04.13 |
8. TCP/IP : 네트워크계층 (0) | 2025.04.09 |
7ㄱ (0) | 2025.04.08 |
6.데이터 통신의 전송기술(3) 흐름제어 혼잡제어 라우팅 (0) | 2025.04.07 |