ecsimsw

Transport layer_UDP 본문

Transport layer_UDP

JinHwan Kim 2019. 7. 23. 17:15

Multiplexing / Demultiplexing

 

   Application layer에서 알맞은 소켓으로 가져와 transport segment (packet) 로 변환하는 것이 multiplexing, 반대로 transport layer에서 적절한 소켓으로 올리는 것을 demultiplexing이라고 한다.

 

   header의 source port, destination port에 의해 결정되고 각각 16비트씩 이므로 이론적으로 2의 16승개의 포트를 갖을 수 있다.

 

UDP 

 

   UDP는 transport 계층 프로토콜이 할 수 있는 최소 기능 수행하는 프로토콜이다. multiplexing/ demultiplexing과 간단한 오류 검사를 제외하고 다른 기능은 전혀 없다.

 

UDP segment

   Udp segment의 header에는 source port와 destination port와 함께 length, check sum field가 존재한다. length는 Data field와 Header의 길이를 저장하는 필드이고, check sum은 전송의 error 여부 확인을 위한 field이다.

 

   Udp의 경우 destination IP와 port 만으로 소켓을 식별한다. 반대로 Tcp의 경우 source ip/port, dest ip/port 를 모두 이용하여 소스 소켓과 목적 소켓을 결정한다. 

 

   ( Udp는 destination port만을 이용해서 소켓을 결정한다고 했는데 왜 source port가 필요한지 궁금하여 간단히 알아보았다. 정확하게 이유는 모르겠지만, 중간에 모든 링크에서 오류 검사를 제공한다는 보장이 없어, 혹시 모를 재전송을 위해 저장한다고 한다. )

 

  >>> why do I need source port on udp  

 

Check Sum

 

   세그먼트가 목적지에 도착했을 때, 데이터 변경 사항이 없는지 체크하기 위한 방식이다.

 

   송신 시 세그먼트 안의 데이터를 16비트 워드 단위로 더하고 이것을 1의 보수를 취하여 header의 check sum field에 저장해뒀다가 수신 시 수신된 데이터와 이를 더해 모든 16비트가 1인지 확인하는 것으로 오류를 체크할 수 있다.

 

8비트 워드로 이뤄진 데이터를 예로 Check_sum 계산.  덧셈 과정에서 생기는 오버플로우는 Wrap around (윤회식 자리 올림)으로 처리한다

 

Note

 

'Computer Science > Network' 카테고리의 다른 글

Pipelining _ Go Back N, Selective Repeat  (0) 2019.07.29
Transport layer_ RDT  (0) 2019.07.23
Socket  (0) 2019.07.11
Introduction to network  (0) 2019.07.09
Computer networking A top-down approach  (0) 2019.07.09
Comments