본문 바로가기
CS

22.11.25 / CS특강 / UDP

by 노믹 2022. 11. 29.

UDP란?

UDP(User Datagram Protocol)는 비연결형, 신뢰성이 없는 전송 프로토콜이다.

IP데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공한다.

UDP는 TCP/IP 5계층에서 Transport Layer(전송계층)의 프로토콜이다.

 

UDP의 특징

UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다.

따라서 내용이 전송 중에는 손실 될 수 있고, 전송되는 세그먼트의 순서가 바뀔 수 있다.

UDP는 TCP보다 간단하고 빠르다.

작은 header size를 가지고 있다.

흐름제어를 하지 않기 때문에 전송 속도를 최대한 빠르게 할 수 있다.

수신자와 송신자 간의 핸드셰이킹(handshaking)이 없는 비연결성(connectionless) 성질을 가진다.

  • 핸드셰이킹(handshaking)

주고받기 정보기술 전기통신 및 관련 분야에서 채널에 대한 정상적인 통신이 시작되기 전에 두 개의 실체 간에 확립된 통신 채널의 변수를 동적으로 설정하는 자동화된 협상 과정이다. 채널의 물리적인 확립이 잇따르며, 정상적인 정보 전송 이전에 이루어진다.

 

UDP가 하지 않는 것 = TCP는 하는 것

  • 연결 셋업 / 종료(Connection setup/teardown)
  • 수신 완료했다고 알리기(Acknoledgement)
  • 재전송(Retransmission)
  • Fragmentation
  • 혼잡 제어(Congestion Control)
  • 순서대로 보내기(In-order delivery)
  • PMTU discovery

 

UDP의 주요 기능

-Multiplexing / Demultiplexing

-Checksum(선택적)

 

물리, 데이터링크에서는 MAC 주소로 대상 기기를 찾아내고 네트워크 계층에서는 IP 주소를 이용해 대상 인터페이스(호스트)를 찾아냅니다.

그러면 이제 대상 기기에도 어떤 프로세스에 데이터를 전할 것인가가 필요한데,

이때 전송 계층에 해당하는 UDP가 프로세스의 포트 번호를 가지고 있습니다.

포트번호를 이용해 프로세스의 통로를 식별해줍니다.

 

UDP의 사용처

1. 실시간(Real-time)

제약 조건이 거의 없고 TCP에 비해 매우 빨라, 실시간 전송이 필요한 부분에 대해서 많이 사용한다.

ex) 인터넷 전화, 스트리밍 등등

 

2. 간단한 트랜잭션(Simple transactions)

같은 전송 계층인 프로토콜 TCP와 비교하자면, TCP는 Setup과 종료, ACK 가 필수불가결하기 때문에 복잡한 트랜잭션이 요구됩니다. 하지만 UDP는 요구되지 않습니다.

ex) DNS(반드시 UDP이용), DHCP, SNMP 등등

 

3. 멀티캐스트 / 브로드캐스트 기능

TCP는 전송측과 수신측이 서로 검증이 완료가 돼야 보냅니다.

Point-to-point 방식으로 작동하는 TCP는 멀티캐스트, 브로드캐스트 전송이 모두 불가능합니다.

UDP만이 가능합니다.

ex) IPTV

 

UDP 패킷의 생김새

패킷 길이는 데이터 길이 + UDP 헤더 길이를 뜻한다.(IP 헤더 길이는 제외)

저 위에는 IP 헤더와 IP checksum이 따로 있다.

checksum과 패킷 길이에 대한 정보도 IP헤더에 다 포함이 되어있다.

따라서 사실상 패킷 길이, checksum 또 한 굳이 없어도 통신에는 문제가 없다.

 

UDP Checksum

UDP에서 checksum은 선택적 사용이 가능하다.

checksum 을 쓰지 않는다면, checksum 부분은 전부 0으로 채운다.

 

checksum 실제 계산값이 0이라면?

2의 보수 계산법에서 1111 = 0000 (둘다 0) 이다

그러므로 checksum 결과값이 0인 것(전부 1) 을 구분해주기 위해 전부 1인 것으로 바꾼다.

 

0000 0000 0000 0000 -> checksum 안쓴다.

1111 1111 1111 1111 -> checksum 결과값이 0이다.

 

UDP Pesud-header

UDP는 checksum 을 계산할 때, pseudo-header 를 만들어 계산한다.

pseudo-header 는 직접적인 전송에는 쓰이지 않고, checksum 계산을 위해 사용한다.

IP header 로 부터 Source IP주소, Address IP주소, 프로토콜 종류를 가져오고 UDP header 로 부터 UDP 길이를 가져온다.

 

이 정보들을 통해 checksum 계산을 실시하고, 계산방식은 일반적인 checksum 계산 방식과 같다.

 

DUP Pseud-header의 등장 배경

암호화를 통해 해커로부터 IP주소, 프로토콜, UDP 길이를 바꾸는 것을 막기 위해 고안되었다.