하마롱크의 블로그
UDP 본문
TCP와 달리 UDP는 4계층 프로토콜이 가져야 할 특징이 거의 없습니다.
4계층에서는
- 신뢰성 있는 통신을 위해 3방향 핸드셰이크로 연결을 미리 확립했습니다.
- 데이터를 잘 분할하고 조립하기 위해 패킷 번호를 부여하고, 수신된 데이터에 대해 응답하는 작업을 수행했습니다.
- 데이터를 특정 단위(윈도 사이즈)로 보내고 메모리에 유지하다가 ACK 번호를 받은 후 통신이 잘 된 상황을 파악 후 메모리에서 데이터 제거했습니다.
- 중간에 유실이 있으면 시퀀스 번호와 ACK 번호를 비교하여 이를 파악하고, 메모리에 유지해놓은 데이터를 이용해 재전송하는 기능이 있었습니다. 이를 통해 데이터 유실이 발생하거나 순서가 바뀌어도 바로잡을 수 있었습니다.
이러한 특징들은 TCP만 해당되며, UDP에는 전혀 없습니다.
데이터 통신의 핵심은 신뢰성으로, 애플리케이션에서 걱정하지 않고 데이터를 만들고 사용하는 것이 데이터 통신의 목적입니다.
그러나 UDP는 데이터 전송을 보장하지 않은 프로토콜이므로 제한된 용도로만 사용됩니다.
- 음성 데이터나 실시간 스트리밍처럼 시간에 민감한 프로토콜이나 애플리케이션을 사용하는 경우
- 사내방송이나 증권 시세 데이터 전송에 사용되는 멀티캐스트처럼 단방향으로 다수의 단말과 통신하 응답을 받기 어려운 환경
- 데이터를 전송하는 데 신뢰성보다 일부 데이터가 유실되더라도 시간에 맞추어 계속 전송하는 것이 중요한 화상회의 시스템과 같은 서비스의 경우
UDP는 중간에 데이터 일부가 유실되더라도 그냥 유실된 상태로 데이터를 처리해버립니다.
30프레임 동영상에서 1프레임이 잘린 것은 이질감이 별로 없지만, 잘린 1프레임을 재전송하기 위해 일시적으로 화면이 멈추면 사용자는 네트워크 품질이 떨어진다고 생각합니다.
UDP는 TCP와 달리 통신 전에 3방향 핸드셰이크와 같은 사전 연결을 확립하는 절차가 없고 대신 첫 데이터는 리소스 확보를 위해 인터럽트(Interrupt)를 거는 용도로 사용되고 유실됩니다.
그래서 UDP 프로토콜을 사용하는 애플리케이션은 이런 상황을 인지하고 동작하거나, 연결 확립은 TCP 프로토콜을 사용하고, 실제 데이터만 UDP를 사용하는 것이 대부분입니다.
참고
같은 동영상 스트림밍이더라도 넷플릭스나 유튜브와 같이 시간에 민감하지 않은 단일 시청자를 위한 연결은 TCP를 사용합니다. 이때는 원활한 시청을 위해 수 초~수 분의 동영상 데이터를 미리 받아놓고 네트워크에 잠시 문제가 발생하더라도 동영상이 끊기지 않도록 캐시에 저장합니다.
TCP와 UDP 비교
TCP | UDP |
연결지향(Connection Oriented) | 비연결형(Connectionless) |
오류 제어 수행 | 오류 제어 수행 안함 |
흐름 제어 수행 | 흐름 제어 수행 안함 |
유니캐스트 | 유니캐스트, 멀티캐스트, 브로드캐스트 |
전이중(Full Duplex) | 반이중(Half Duplex) |
데이터 전송 | 실시간 트레픽 전송 |
- 전이중 통신(Full Duplex): 두 대의 단말기가 데이터를 송수신하기 위해 동시에 각각 독립된 회선을 사용하는 통신 방식으로, 대표적으로 전화망, 고속 데이터 통신을 들 수 있습니다.
- 반이중 통신(Half Duplex): 한 쪽이 송신하는 동안 다른 쪽에서 수신하는 통신 방식으로, 전송 방향을 교체체하는 방식입니다. 마스터 슬레이브 방식의 센서 네트워크가 대표적입니다.
<참고문헌>
IT 엔지니어를 위한 네트워크 입문