- 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 프로토콜을 보내려 하면
- Application process로부터 데이터를 가져와서 Multiplexing 과정에 필요한 header field value를 추가 ( destination port #, IP address)
- 추가된 최종 segment를 network layer에게 넘겨주면, IP datagram으로 캡슐화 한 후 Reciever client에게 전송
- Reciever은 IP로부터 segment를 받아서, UDP checksum을 확인해 오류있는지 확인
- Application layer에 전달할 message를 demultiplexing하고, socket에게 전달
UDP segment architecture
- UDP는 아래 그림처럼 생김
이때 오류를 검출하는 checksum field에 대해 알아보자.
- Sender 측에서, segment 안에 있는 모든 16비트의 합산에 대해 다시 1의 보수를 수행한다.
- 이때 Overflow가 발생하면 wrap around 처리
- 이 결과값이 UDP segment의 checksum field에 append되고
- Reciever도 똑같이 16비트를 합산해보고 송신측에서 보낸 checksum 값과 똑같은지 확인
EX)
문제는, 틀렸단 건 아는데, 뭐가 틀렸는지를 모름 ㅋㅋ : HTTP/3같은 additional function이 들어간 UDP 쓰게됨
'Computer Network > Ch3) Transport layer' 카테고리의 다른 글
Ch3-5) Connection-oriented transport: TCP (1) | 2024.10.27 |
---|---|
Ch3-4) Principles of reliable data transfer (0) | 2024.10.27 |
Ch3-2) Multiplexing and Demultiplexing (0) | 2024.10.27 |
CH3-1) Transport Layer Service (0) | 2024.10.27 |