UDP(User Datagram Protocol)
Today Keys : protocol, 계층, service, port, 포트, 서비스, UDP
본 포스팅은 'IT 엔지니어를 위한 네트워크 입문' [길벗] 서적에 포함된 '3. 네트워크 통신하기'의 내용 3.4.3장의 내용입니다.
UDP
TCP와 달리 UDP는 4계층 프로토콜이 가져야 할 특징이 거의 없습니다.
4계층에서는 신뢰성 있는 통신을 위해 연결을 미리 확립(3방향 핸드셰이크)했고 데이터를 잘 분할하고 조립하기 위해 패킷 번호를 부여하고 수신된 데이터에 대해 응답하는 작업을 수행했습니다.
데이터를 특정 단위(윈도 사이즈)로 보내고 메모리에 유지하다가 ACK 번호를 받은 후 통신 이 잘 된 상황을 파악하고나서야 메모리에서 이 데이터들을 제거했습니다.
중간에 유실이 있으면 시퀀스 번호와 ACK 번호를 비교해가며 이를 파악하고 메모리에 유지해놓은 데이터를 이용해 재전송하는 기능이 있었습니다.
이 기능을 이용해 데이터 유실이 발생하거나 순서가 바뀌더라도 바로잡을 수 있습니다.
이런 특징들은 TCP만 해당됩니다. UDP에는 이런 기능이 전혀 없습니다.
데이터 통신은 데이터 전송의 신뢰성이 핵심입니다.
애플리케이션에서 걱정하지 않고 데이터를 만들고 사용하게 하는 것이 데이터 통신의 목적이지만 UDP는 데이터 전송을 보장하지 않는 프로토콜이므로 제한된 용도로만 사용됩니다.
UDP는 음성 데이터나 실시간 스트리밍과 같이 시간에 민감한 프로토콜이나 애플리케이션을 사용하는 경우나 사내 방송이나 증권 시세 데이터 전송에 사용되는 멀티캐스트처럼 단방향으로 다수의 단말과 통신해 응답을 받기 어려운 환경에서 주로 사용됩니다.
이것은 대부분 음성이나 동영 상과 같이 사람이 청각, 시각적으로 응답 시간에 민감한 경우입니다.
음성, 동영상은 디지털 환경 에서는 연속된 데이터가 아닌 매우 짧은 시간 단위로 잘게 분할한 데이터가 전송되는 형태입니다.
동영상은 1초 동안 30~60회의 정지 영상이 빠르게 바뀌면서 우리 눈에는 마치 움직이는 영상처럼 보이는 원리를 이용합니다.
반대로 실 세계 데이터를 디지털화할 때는 시간을 잘게 쪼개 데이터를 샘플링하는데 이런 데이터들은 다른 일반 데이터처럼 취급하면 시간 지연에 따른 어려움이 있습니다.
중간에 데이터가 몇 개쯤 유실되는 것보다 재전송하기 위해 잠시 동영상이나 음성이 멈추는 것을 더 이상하게 느낄 수 있습니다.
이렇게 데이터를 전송하는 데 신뢰성보다 일부 데이터가 유실되더라도 시간에 맞추어 계속 전송하는 것이 중요한 화상회의 시스템과 같은 서비스인 경우, UDP를 사용하게 됩니다.
UDP는 중간 에 데이터가 일부 유실되더라도 그냥 유실된 상태로 데이터를 처리해버립니다.
30프레임짜리 동영상에서 1프레임이 잘린 29프레임만으로도 사람들의 눈에는 이질감이 별로 없지만 실시간 동영상을 전송하는 경우, 잘린 1개 프레임을 재전송하기 위해 일시적으로 화면이 멈추면 음성과 영상 이 뒤늦게 전달되어 사용자는 네트워크 품질이 떨어진다고 생각하게 됩니다.
UDP는 TCP와 달리 통신 시작 전, 3방향 핸드셰이크와 같이 사전에 연결을 확립하는 절차가 없습니다. 그 대신 UDP에서 첫 데이터는 리소스 확보를 위해 인터럽트(Interrupt)를 거는 용도로 사 용되고 유실됩니다.
그래서 UDP 프로토콜을 사용하는 애플리케이션이 대부분 이런 상황을 인지하고 동작하거나 연결 확립은 TCP 프로토콜을 사용하고 애플리케이션끼리 모든 준비를 마친 후 실제 데이터만 UDP를 이용하는 경우가 대부분입니다.