UDP: User Datagram Protocol
UDP에 의해 배송하면 loss 나 out of date 발생 가능
- streaming multimedia를 다뤄서 loss 문제는 상관 없음
- rate에 민감하여 일정하게 보낼 수 있음
handshaking 없음
각 UDP segment는 독립적으로 다뤄짐
UDP use
1 time transaction oriented application, ( 한 번 하고 끝인 경우 )
multimedia streaming이 필요한 application, (비디오 스트리밍)
혹은 periodic message exchange를 (주기적으로 하는 경우)
사용하는 application들은 주로 UDP를 사용
1. streaming multimedia apps (비디오 스트리밍)
2. DNS ( 한 번 하고 끝인 경우 )
- 쿼리에 대한 응답이 오지 않을 때 다시 쿼리하면 됨
3. SNMP (주기적으로 하는 경우)
- 네트워크의 상태 정보를 서버로 보내어 관리
- 주기적으로 데이터를 발생하는 경우, loss 발생하여도 다음 주기에 오기 때문에 문제 없음
!! reliable transfer를 요구하는 상황에서도 UDP를 사용하는 이유
- reliability를 application 자체에서 구현하여 UDP를 사용
- application layer ( = 개발자가 건드릴 수 있는 영역)에서 reliability를 추가
- application-specific error recovery를 하는 것
- overhead가 커지지만 그래도
segment = header + payload
UDP: segment header
mux, demux를 위한 source port, dest port 포함
udp segment의 길이를 length에 적어둠 (payload가 넘쳤는지 보려고)
checksum을 위해 error recovery까지 안 하고, 그저 오류가 있으면 알리거나 버리는 용도
connection을 설립 안 하기에
- 연결 성립 delay X
- protocol이 가볍고 단순
헤더의 크기도 작아서 overhead 낮음
congestion control을 하지 않아서
- application이 데이터를 생성하는 대로 바로 전송 가능
UDP checksum
Goal : transmitted segment 속 error 감지
- 예로 flipped bit라던가
sender
- segment를 16 bit 정수로 쪼갬
- checksum : 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.
- one’s complement sum을 함
- sender가 checksum 값을 UDP checksum 칸에 저장
receiver
- 받은 segment의 checksum 계산
- 자신이 계산한 checksum과 sender가 계산해서 보낸 checksum을 비교
- NO - error
- YES - error X
Internet checksum
+ one’s complement sum ( 1의 보수의 합)
- 32 bit를 두 개로 나누면 하나 당 16bit
- 두 개를 더함
- carry가 발생한다면 따로 떼어서 덧셈
- 40 bit 였다면 나머지 8 bit 를 sum에 덧셈
- 0은 1로 , 1은 0으로 바꾸어 one’s complement sum을 구함
단점
동일한 자리에 1은 0으로 0은 1로 바뀐다면 문제 없다고 계산함
UDP checksum은 발생한 bit error 발생시 이를 고칠수는 없고 모두 발견할 수 없다
'CS > Network' 카테고리의 다른 글
3-4-3 TCP Flow control & Connection Management (0) | 2021.12.03 |
---|---|
Reliable data transfer - TCP (0) | 2021.10.16 |
Transport Layer - MUX, DeMUX (0) | 2021.10.16 |
[Summary] Application Layer (0) | 2021.10.16 |
Socket programming with UDP, TCP (0) | 2021.10.16 |