학교
[컴퓨터 네트워크] Chapter 3. Transport Layer (Part1) - (2)
일자 : 24-2 7주차 1차시 (1)
[4] UDP Checksum
목표 : 전송된 세그먼트에서 오류를 감지하는 것. (전송 도중에 데이터의 비트가 변형될 수 있는데, 이를 검출하기 위해 체크섬을 사용한다.)

1) 과정
전송된 데이터
: 2개의 정수와 합계를 보낸다.첫 번째 숫자 : 5
두 번째 숫자 : 6
이 두 숫자의 합 : 11
수신된 데이터
: 만약 에러가 없다면 보낸 값을 받아야 한다. (ex. 5, 6, 11)첫 번째 숫자 : 4
두 번째 숫자 : 6
이 두 숫자의 합 : 11
체크섬 비교
: 만약 보낸 값과 다른 값이 왔다면, 오류가 발생한 것이다수신자는 자신의 방법으로 받은 값들을 더해 체크섬을 계산한다.
송신자가 전송한 값과 비교했을 때 서로 다르므로, 오류가 발생한 것이다.
2) sender
UDP 세그먼트의 내용(UDP 헤더 필드 및 IP 주소 포함)을
16비트 정수의 시퀀스로 처리한다.checksum : 세그먼트 콘텐츠의 덧셈(1의 보수의 합)
UDP checksum 필드에 입력된 checksum 값
3) receiver
수신된 세그먼트의 체크섬 계산
계산된 체크섬이 체크섬 필드 값과 동일한지 체크한다.
같지 않음 : 오류 감지
같음 : 오류감지 되지 않음.
그럼에도 오류가 발생할 수 있을까?
[5] Internet checksum : an example

참고 : 숫자를 더할 떄에는 가장 중요한 비트의 캐리아웃을 결과에 추가해야 한다.
예시에서는 oevrflow가 발생하였고, 1을 해당 값에서 더하여 sum을 구했다.
1) 체크섬의 목적
: 데이터 전송 중 발생할 수 있는 오류를 감지하기 위한 방법이다.
2) 체크섬 계산 방법:
16비트 정수들을 더한다.
덧셈 결과에서 캐리(carry)가 발생하면 결과에 다시 더한다(wraparound).
최종 합계를 비트 단위로 뒤집어(1의 보수) 체크섬을 얻는다.
3) 체크섬의 한계
체크섬은 약한 보호(weak protection) 기능을 제공한다.
특정 비트 변화는 체크섬 값에 영향을 주지 않을 수 있습니다.
예를 들어, 두 숫자의 마지막 두 비트를 서로 바꿔도(0110 → 0101, 1001 → 1010) 최종 체크섬은 변하지 않는다.
4) 주의사항
: 숫자를 더할 때 가장 중요한 비트(most significant bit)에서 발생하는 캐리를 결과에 더해야 한다.
5) 결론
인터넷 체크섬은 간단한 오류 감지 방법이지만, 모든 종류의 오류를 탐지할 수 있는 완벽한 방법은 아니다.
일부 비트 변화는 체크섬으로 탐지되지 않을 수 있어 "약한 보호" 기능을 제공한다.
이러한 특성 때문에 체크섬은 기본적인 오류 감지에는 유용하지만, 더 강력한 오류 감지나 수정이 필요한 경우에는 다른 방법들이 사용된다.
Summary
3. Connectionless transport : UDP
[1] UDP: User Datagram Protocol
개요: 최소한의 기능을 가진 비연결형 프로토콜. 세그먼트 손실 가능.
존재 이유: 연결 설정 필요 없음, 단순함, 작은 헤더 크기, 혼잡 제어 없음.
사용 예시: 스트리밍, DNS, SNMP, HTTP/3.
안정성 필요 시: 애플리케이션 계층에서 보완.
[2] UDP: Transport Layer Actions
UDP 발신자: 메시지 생성 후 IP 계층으로 전달.
UDP 수신자: 세그먼트 수신, 체크섬 확인, 애플리케이션에 전달.
[3] UDP Segment Header
헤더 구성: 8바이트로, 소스 포트, 목적지 포트, 길이, 체크섬 필드 포함.
데이터: 애플리케이션 데이터 포함.
[4] UDP Checksum
목적: 데이터 전송 중 오류 감지.
작동 원리: 송수신자가 각각 체크섬 계산 후 비교.
[5] Internet Checksum Example
체크섬 계산: 16비트 정수 더하기, 캐리 발생 시 wraparound, 1의 보수 사용.
한계: 약한 보호, 특정 비트 변화를 탐지하지 못할 수 있음.
