티스토리 뷰

Study/Network

[Networking] UDP service model

생각많은 소심남 2016. 9. 6. 00:18

 UDP(User Datagram Protocol)는 보통 TCP와 같이 전달이 보장(reliability)되어야 하는 connection이 아닌 상태에서 데이터가 전달되는 일종의 프로토콜을 말한다. 당연히 전달이 보장되면 좋을수도 있겠지만, application 내에서 자체적으로 전달 보장을 위한 수단이 있다던가, 아니면 보내는 데이터 자체가 신뢰성을 요구하지 않는 형태라면 굳이 TCP로 보낼 필요가 없다. 

 말했던 것처럼 뭔가 보장에 대한 규칙이 없기 때문에 TCP의 형태보다 훨씬 간단하다. UDP의 Datagram format을 보면 이전 TCP 처럼 뭔가가 encapsulate된 형태로 되어 있다. 

이전에 다뤘던 TCP의 Header를 구성하는게 10개 넘었던 반면에 UDP는 딱 4개로만 되어 있고 각각의 요소는 위와 같다. 

 - Source Port : 추후에 Destination에서 Source로 되돌아 올경우를 위한 포트 주소
 - Destination Port : Source에서부터 전달되기 위한 목적지의 포트 주소
 - Length : Header + Data의 총 사이즈. UDP의 header size는 minimum  8byte이기 때문에 Length의 minimum 값도 8 byte이어야 한다.
 - Checksum : Error를 check 하기 위한 일종의 키 값. 만약 checksum을 사용하지 않을 경우 이 필드는 0으로 채워진다. 


 UDP의 기본 동작은 TCP와 거의 비슷하다. 아래의 경우를 가정해보자.

만약 Host A의 Process 1번이 Host B에 있는 UDP port 177번을 사용해서 Process 1에게 전달하고 싶다고 가정하자. 그러면 위와 같이 Application Layer에서 UDP로 내려온 data가 UDP header와 결합되 UDP datagram을 형성한다.

 UDP datagram은 IP layer에서 또 다른 encapsulation을 거쳐 IP datagram을 변환되고 이 결과가 Host B로 전달된다.

 이 결과가 다시 상위 Application layer가 도달하면서 최종적으로 전달하고자 하는 data 형태로 전달된다. 

 지금 위와 같이 표현되는 과정을 간단히 말하면 UDP datagram을 쪼개서 적절한 application에게 전달되는 것인데, 이런 걸 Demultiplexing이라고 표현하기도 하고, 이때문에 일부 사람들이 UDP를 앞에서 소개했던 용어가 아닌 User Demuliplexing Protocol이라고 말하기도 한다. 

TCP에 나왔던 것처럼 UDP의 특징도 표로 정리할 수 있다. 

- 우선 UDP는 꼭 connection이 형성될 필요가 없다. 이전에 다뤘던 TCP가 connection에 따른 reliability 측면에서 connection이 형성되었었지만, UDP는 그게 없다. 또한 앞에서 봤던 것처럼 header에 뭔가 순서를 나타내는 정보가 없기 때문에 전달되는 data에 있어서도 순서를 따질 필요가 없다. (물론 application이 정확한 정보를 보기 위해서는 resequence 하는 과정이 포함되어야 한다.) 모든 정보가 datagram에 포함되어 있는 것이다. 

 - 계속 언급되는 내용이지만 UDP는 reliability가 없다. 이 말은 datagram이 중간에 손실되거나 없어져도 이를 확인할 방법이 없다는 것이다. TCP에서는 손실되면 다시 보내달라고 상대편에 요청할 수도 있지만, UDP에서는 그게 안된다. (물론 Application Layer에서 재전송을 위한 mechanism이 있을수도 있지만...) 이런 연유로 인해 flow control에 대한 제어도 없다.

 UDP를 활용하는 대표적인 예시가 DNS (Domain Name Service) request인데, 이에 대한 동작 과정은 추후에 다룰 예정이다.


참고)

 - Staford University - Networking - Unit 2-2 : UDP service model 강의자료

'Study > Network' 카테고리의 다른 글

[Network] ICMP Service Model  (0) 2018.01.24
[oFono] Overview  (0) 2017.11.17
[Networking] TCP service model (3)  (0) 2016.08.30
[Networking] TCP service model (2)  (0) 2016.08.30
[Networking] TCP service model (1)  (0) 2016.08.30
[Network] Nash Equilibrium 문제  (0) 2015.03.02
[Network] End-to-end Principle  (2) 2014.02.06
댓글