1P by neo 3달전 | favorite | 댓글 1개

절대 데이터그램을 사용하지 마세요.

TCP vs UDP

  • 인터넷 애플리케이션을 개발할 때 TCP와 UDP 중 하나를 선택해야 함.
  • TCP: 신뢰성 있는 데이터 전송을 보장함.
  • UDP: 신뢰성 없는 데이터 전송을 제공함.
  • 신뢰성 없는 전송이 필요한 경우는 거의 없음.

속성

  • 소프트웨어 엔지니어링은 여러 계층의 추상화 위에 서 있음.
  • 각 계층은 특정 속성을 제공하여 개발자가 모든 것을 처음부터 다시 만들 필요가 없게 함.
  • 개발자는 어떤 계층을 사용할지 선택해야 함.

"신뢰성 없는"

  • 실시간 비디오 프로토콜을 설계하는 모임에서 SUBSCRIBE가 신뢰성 없도록 해야 한다는 의견이 있었음.
  • 실제로 필요한 것은 적시성임.
  • 실시간 비디오에서는 최신 데이터를 우선적으로 전달하는 것이 중요함.

데이터그램

  • 데이터그램(IP 패킷)은 출발지 주소에서 목적지 주소로 전송되는 데이터의 단위임.
  • 데이터그램은 손실되거나 순서가 뒤바뀔 수 있음.
  • 데이터그램을 사용하는 이유는 네트워크 혼잡 시 패킷을 드롭하는 것이 더 나은 선택이기 때문임.

인터넷의 큐

  • 네트워크가 혼잡할 때 패킷을 드롭하는 것이 일반적임.
  • 패킷을 큐에 넣고 나중에 전달하는 것은 버퍼블로트 문제를 일으킬 수 있음.
  • 버퍼블로트는 모든 패킷이 큐에 쌓여 적시성을 해침.

당신, 애플리케이션 개발자

  • UDP를 직접 사용하면 여러 문제에 직면할 수 있음.
  • UDP 위에 자체 전송 프로토콜을 구축하려면 재전송, 혼잡 제어 등을 구현해야 함.
  • QUIC 라이브러리를 사용하는 것이 더 나은 선택임.

적시성

  • 적시성을 달성하기 위해 QUIC를 사용할 수 있음.
    1. 버퍼를 비우기: 혼잡 제어를 통해 큐를 감지하고 전송 속도를 줄임.
    2. 데이터를 스트림으로 분할: 각 스트림은 독립적으로 전송됨.
    3. 스트림 우선순위 지정: 중요한 스트림을 우선적으로 전달함.

데이터그램 방어

  • QUIC와 MoQ는 데이터그램을 지원함.
  • 데이터그램 지원은 실험을 허용하기 위해 중요함.
  • 그러나 데이터그램 사용은 함정일 수 있음.

결론

  • 데이터그램 위에 애플리케이션을 설계하지 말아야 함.
  • UDP 위에 또 다른 비디오 프로토콜을 만들지 말고, Media over QUIC에 참여하는 것이 좋음.

GN⁺의 의견

  1. 적시성의 중요성: 실시간 애플리케이션에서는 데이터의 적시성이 매우 중요함. TCP보다 UDP가 적합할 수 있지만, 혼잡 제어와 같은 추가적인 고려가 필요함.
  2. QUIC의 장점: QUIC는 UDP의 단점을 보완하면서도 높은 성능을 제공함. 특히 실시간 비디오 스트리밍에 적합함.
  3. 버퍼블로트 문제: 네트워크 혼잡 시 패킷을 큐에 쌓는 것은 적시성을 해칠 수 있음. 이를 피하기 위해 혼잡 제어가 필요함.
  4. 데이터그램의 한계: 데이터그램은 실시간 전송에 적합하지만, 신뢰성과 순서 보장이 필요할 때는 QUIC와 같은 프로토콜이 더 나은 선택임.
  5. 기술 선택의 중요성: 애플리케이션의 요구사항에 맞는 적절한 전송 프로토콜을 선택하는 것이 중요함. 잘못된 선택은 성능 저하와 사용자 경험 악화를 초래할 수 있음.
Hacker News 의견
  • TCP의 문제점: TCP는 고대역폭, 저지연이 필요한 환경에서 문제가 많음. 저대역폭, 고지연 네트워크에서도 비효율적임.
  • UDP 사용 사례: 고주파 센서 데이터 스트리밍에 UDP를 사용 중이며, QUIC을 통해 문제를 해결한 사례도 있음.
  • UDP의 용어: UDP를 "신뢰할 수 없는" 대신 "최선의 노력"으로 설명하는 것이 더 적절함.
  • 스트림 추상화의 문제: 스트림 추상화는 프로그램을 취약하게 만들고, 연결 해제 시 복구가 느림. 데이터그램 기반 접근이 더 효율적일 수 있음.
  • UDP 패킷 드롭: 네트워크 혼잡 시 UDP 패킷이 먼저 드롭됨. QUIC의 재전송 문제를 언급함.
  • 클릭베이트 제목: 기사 제목을 원문에서 가져와야 한다는 해커뉴스의 가이드라인을 지키려는 시도.
  • TCP와 UDP의 차이: TCP는 신뢰성을, UDP는 속도와 효율성을 제공함. 각 프로토콜의 특성을 이해하고 사용해야 함.
  • 데이터그램 기반 사용 사례: 로컬 디스커버리, 브로드캐스트, 패키지 캡슐화 등에서 데이터그램 사용이 적합함.
  • 데이터그램 사용 권장: 세션 기반 연결이 일반적이지만, 데이터그램 사용도 유용함. 네트워킹의 저수준 측면을 배울 수 있는 좋은 기회임.