본문 바로가기

CS/컴퓨터 네트워크

14. Connectionless transport : UDP

UDP : user datagram protocol - RFC768에 잘 정의되어 있음

그냥 순수한 주소만 보고 전달하는 프로토콜

이름은 멋지지만 무책임함 best effort

중간에 패킷 손실 손상우려 있음

잃어버린 건 어쩔 수 없지만 순서가 뒤바껴서 오면 문제가 됨

순서를 재조합해야하거나 버려야하는데 application layer에서 처리하는 게 큰 부담이 될 수 있음

 

udp 는 주로 데이터 손실이 조금 있어도 되는 스트리밍 어플에서 많이 사용

DNS관련 데이터 베이스 업데이트 할때도 사용함 - 인터넷에 큰 무리가 안돼서 그렇다고 함

SNMP는 몇개의 패킷이 네트워크에 오갔는지 모니터링 하는 건데 udp 사용함

udp의 속도는 즐기고 싶지만 reliable하게 하고 싶으면 application layer에서 안정성, 에러 체크하면서 보완해나가면 됨

 

이건 udp에서 쓰는 보내는 단위 segment라고 함

connection없고 simple하고 헤더사이즈도 작고 실제로는 전체 4바이트 인데 8바이트를 사용함

반면에 tcp는 20바이트를 사용한다고함 - tcp에 비해 헤더 사이즈 상당히 작음

그래서 혼잡제어같은 고급기능 제공 안함

payload는 위에 계층에서 내려온 정보를 모두 payload라고 한다는 거 같음

network layer로 가면 application layer와 transport layer에서 준 정보를 모두 합쳐서 payload라고 하는 듯

 

* checksum

flipped bit처럼 에러가 발생하는 걸 탐지하는데 사용함

sender에서는 16비트의 checksum bit를 넣고 1의 보수를 취해서 16비트짜리 checksum연산을 하고 보냄

receiver에서는 checksum 체크하고 value가 정확하게 나오면 에러가 없는거고 제대로 안나오면 drop함

checksum 예제임

두개의 16비트짜리 integer를 보낸다고 할 때

둘을 더하고 맨위에 1이 더 생기면 wrap around해서 다시 보내고 등등 

아무튼 더해서 sum이 나오게 되면 그 sum을 1의 보수로 바꿈 그게 check sum이 되는 거임

receiver에서는 이 연산을 반대로 수행해서 에러가 탐지되거나 payload부분이 변형되었는지 탐지할 수 있음

'CS > 컴퓨터 네트워크' 카테고리의 다른 글

15. reliable data transfer 원리 : RDT(1.0, 2.0, 2.1, 2.2, 3.0)  (0) 2020.04.14
12. 트랜스포트 레이어  (0) 2020.04.14
11. P2P  (0) 2020.04.07
10. DNS  (0) 2020.04.07
9. SMTP, POP3, IMAP  (0) 2020.04.07