본문 바로가기

Computer Network/Ch3) Transport layer

Ch3-3) Connectionless Transport: UDP

 

  • UDP는 transport layer protocol이 할 수 있는 최소한의 기능들만 가지고 동작

→ “best effort” service로, UDP segment가 lost / 다른 app에 전달돼도 알빠노

  • UDP sender,reciever 간에 handshaking 과정도 없음

⇒ 그럼 이런거 왜씀?

  • no connection establish : Simple !
    • 바로 간단하기 떄문이다.
    • UDP 하에서 application process가 data를 UDP에 전달하자마자 UDP는 data를 segment로 만들고, 바로 네트워크 계층에 전달
    • 연결 설정을 위한 delay가 존재하지 않음
  • 또한 Header size도 작음
    • TCP는 헤더로 20바이트, UDP는 8바이트
  • no congestion control
    • 원하는 만큼 빠름
  • 그러나, congestion control 문제를 겪을 수 있음
  • UDP는 다음과 같은 경우에 사용
    • streaming multimedia apps
    • DNS ( small size, sensitive to delay)
    • SNMP (simple network management protocol)
    • HTTP/3
    • Reliability or congestion control이 필요한 경우에는 apllication level에서 추가

EX) UDP transport layer action

 

 

 

  • 만약에, sender가 UDP 프로토콜을 보내려 하면
    1. Application process로부터 데이터를 가져와서 Multiplexing 과정에 필요한 header field value를 추가 ( destination port #, IP address)
    2. 추가된 최종 segment를 network layer에게 넘겨주면, IP datagram으로 캡슐화 한 후 Reciever client에게 전송

 

 

  1. Reciever은 IP로부터 segment를 받아서, UDP checksum을 확인해 오류있는지 확인
  2. Application layer에 전달할 message를 demultiplexing하고, socket에게 전달

UDP segment architecture

  • UDP는 아래 그림처럼 생김
  •  

 

 

이때 오류를 검출하는 checksum field에 대해 알아보자.

 

 

 

  1. Sender 측에서, segment 안에 있는 모든 16비트의 합산에 대해 다시 1의 보수를 수행한다.
    • 이때 Overflow가 발생하면 wrap around 처리
  2. 이 결과값이 UDP segment의 checksum field에 append되고
  3. Reciever도 똑같이 16비트를 합산해보고 송신측에서 보낸 checksum 값과 똑같은지 확인

EX)

문제는, 틀렸단 건 아는데, 뭐가 틀렸는지를 모름 ㅋㅋ : HTTP/3같은 additional function이 들어간 UDP 쓰게됨