CS/Network

Connectionless Transport : UDP (checksum)

WakaraNai 2021. 10. 16. 01:30
728x90
반응형

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의 보수의 합)

  1. 32 bit를 두 개로 나누면 하나 당 16bit
  2. 두 개를 더함
  3. carry가 발생한다면 따로 떼어서 덧셈
  4. 40 bit 였다면 나머지 8 bit 를 sum에 덧셈
  5. 0은 1로 , 1은 0으로 바꾸어 one’s complement sum을 구함



 

단점

동일한 자리에 1은 0으로 0은 1로 바뀐다면 문제 없다고 계산함

UDP checksum은 발생한 bit error 발생시 이를 고칠수는 없고 모두 발견할 수 없다

 

728x90
반응형

'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