📘 [Computer Network] UDP : connectionless transport

고민정·2023년 11월 1일
0

Computer Network

목록 보기
7/12
post-thumbnail

03-1


💡 UDP : Datagram Protocol

  • Datagram messaging servies
    • Demultiplexing : port numbers
      port number를 보고 적절한 application으로 전달한다
    • Detecting corruption : checksums
      checksums로 충돌이 일어날만 한 것(error)를 검사한다
  • Connectionless
    • no handshaking between UDP sender, receiver
      TCP는 정보를 주고받을 때 마다 handshaking이 필요하지만 UDP는 그렇지 않다
    • each UDP segment handled independently of others
      TCP 처럼 congestion control을 하지 않는다
  • Lightweight communication
    • just send and receives messages
    • Avoid overhead of ordered, reliable delivery
      connection이 없기떄문에 headr가 작아지고,
      header가 작아지기 때문에 overhead를 피할 수 있고 빨라진다

💡 UDP : segment header

📌 Adventage of UDP vs TCP

  • faster : no connection set-up delay
    TCP 에서 필요한 connection을 맺지 않기 때문에 그 시간이 줄어든다
  • simple : no connection state at sender, receiver
    TCP connection이 없기 때문에 sender와 receiver를 왕복할 때 드는 RTT 시간이 없어졌다
  • Lightweight : smaller header size (8 byte vs 20 byte)
    사실상 UDP는 demultiplexing 과 error detecting만 하기 때문에 TCP에 비해 하는일이 적다 -> header에 들어갈 내용이 TCP에 비해 없다
  • no congestion control
    UDP can blast away as fast as desired
    receiver의 상황을 고려하지 않고 되는대로 막 보내기 때문에 빠르다

💡 DNS & DHCP uses UDP

UDP는 unreliable하기 때문에 DNS나 DHCP에 정보를 보냈어도 error가 날 수도 있다.

대신 DNS는 webpage IP를 빨리 얻어야하고 DHCP는 사용자가 IP를 빨리 받아내야하기 때문에 TCP 대신 UDP를 사용한다.

그렇기 때문에 우리는 인터넷에 보다 빨리 들어갈 수 있다.


💡 UDP Checksums

Error 는 보내는쪽에서 보낸 데이터와 받는 쪽에서 받은 데이터가 다르면 일어난다.

  • sender
    puts checksum value into UDP checksum field

  • receiver
    compute checksum of received segment
    check if computed checksum equals checksum feild value

For Example

근데 이 두 이진수 리스트들은 뭐지? 무슨 기준으로 어디서 나온 애들일까

1s complement
1 → 0
0 → 1
로 바꾸는 것을 말한다.

두 이진수 데이터를 더한다.
1 1 인경우 올림을 해준다.
올림이 지속될 경우에는 16자리가 아닌 17자리가 나오는 경우가 있는데
이 경우에는 앞의 1을 맨 뒤로 보내서 다시 더해준다.
이렇게 나온 이진수 나열이 sum이다.
checksum은 sum을 1s complement 해준 것이다.

receiver 쪽에서 받은 데이터를 sum + checksum 값을 했을 때, 모든 이진수 나열이 1 1 1 1 ... 1 1 1 로 나와야 한다. ( checksum 은 sum의 1s complement이기 때문에 )

📌 BUT ! checksum이 error detect의 완벽한 방법은 아니다

data에 error가 없지만 있다고 판단할 수 있다.

  • data에 오류가 없지만 checksum의 오류인 경우
    만약 첫번째 줄의 마지막인 0 이 1로 업데이트 되고 ,
    두번째 줄의 마지막 1이 0으로 error 가 났다면
    정상적인 sum의 값인 1과 같아진다.
    이렇게되면 숫자는 바뀌었지만 checksum은 바뀌지 않는다.

이런 경우가 가끔있지만 transfer layer & link layer 에서 checksum error checking 을 해준다.

0개의 댓글