본문 바로가기
네트워크/컴퓨터 네트워크 수업

3-3. Connectionless Transport: UDP

by dustnn 2024. 10. 21.

 

앞서 UDP가 mul/demul 제외하고는 별 기능을 제공하지 않는다고 했다..

 

 

- "connectionless": connection setup 기능 제공하지 않기 때문

* UDP sender-receiver 간 hand-shaking 없음

* UDP datagram은 독립적으로 처리됨

 

- 사용 사례

* streaming multimedia(loss 중요x, rate 중요o)에서 많이 사용

* DNS : 간단한 response 딱 한 번 필요하므로 굳이 TCP 사용할 필요 없음(단계가 너무 많음!!)

* SNMP : 주기적으로 업데이트되기 때문

* HTTP/3 : application 계층에서 다 해주기 때문(reliability, congestion control, error recovery)

 

- source port# & destination port# : mul/demul을 위해 사용

- length : application data 의 길이를 담음

- checksum : UDP segment의 오류가 있는지 없는지 체크 but 처리하지 않고 알려주기만 함

 

=> 이렇게 아무 일도 안 하지만 사용하는 이유는 ?

1. 단순하다. (connectionless)

2. 빠르다.(connection setup delay 없음, congestion control 하지 않고 무작정 밀어넣음)

3. protocol 가벼움

4. header size 작음 => overhead 확률 적음

 

 

UDP: Transport Layer Actions

 

 

UDP checksum

 

오류 검출 필드다. 

 

요약해 먼저 말하자면 sender가 checksum field에 checksum값을 추가하고,

receiver가 checksum값을 계산하고 받은 checksum값과 비교하여 오류가 있는지 알아낸다.

(checksum value = checksum -> 오류없음 / checksum value = checksum -> 오류 발생)

 

 

checksum 구하는 방법(더하고 1의보수 취해주기)

 

1. 16-bit alignment

 

  1110011001100110

  1101010101010101

110111 01110111 011

 

앞의 overflow 1을 wrap around 해서 뒤에 더한다.

 

=> 1011101110111100

 

 

2. one's complement operation

1의 보수를 취해준다. (0은 1로, 1은 0으로)

 

=> 0100010001000011(checksum)