Datagram Socket vs Stream Socket

김건우·2023년 11월 17일
0

Datagram SocketStream Socket은 네트워크 프로그래밍에서 사용되는 두 가지 주요한 소켓 유형입니다. 이들은 데이터 전송 방식과 프로토콜 면에서 차이가 있습니다.

1. Datagram Socket (UDP Sockets)

  • 프로토콜: UDP (User Datagram Protocol)를 사용합니다.
  • 특징:
    • 비연결 지향적: Datagram Socket은 연결을 맺지 않고 데이터를 전송합니다. 즉, 데이터를 보내기 전에 수신자와의 연결을 설정할 필요가 없습니다.
    • 신뢰성 없음: 전송된 데이터의 도착을 보장하지 않으며, 데이터가 순서대로 도착한다는 보장도 없습니다.
    • 속도가 빠름: 연결 설정 과정이 없고, 오버헤드가 적기 때문에 상대적으로 빠른 데이터 전송이 가능합니다.
    • 용도: 실시간 애플리케이션(예: 스트리밍, 온라인 게임)에 적합합니다.

2. Stream Socket (TCP Sockets)

  • 프로토콜: TCP (Transmission Control Protocol)를 사용합니다.
  • 특징:
    • 연결 지향적: Stream Socket은 데이터 전송 전에 통신할 상대방과 연결을 맺습니다. 이 연결은 데이터 전송이 끝날 때까지 유지됩니다.
    • 신뢰성 있음: 데이터는 순서대로, 오류 없이 전송됩니다. 손실된 데이터는 재전송됩니다.
    • 속도보다 신뢰성 중시: 데이터의 정확한 전송을 보장하기 위해 필요한 오버헤드 때문에 Datagram Socket보다 상대적으로 느립니다.
    • 용도: 이메일, 웹 페이지 전송 등 데이터의 정확성이 중요한 애플리케이션에 적합합니다.

주요 차이점

  • 연결의 유무: Stream Socket은 연결 기반, Datagram Socket은 비연결 기반입니다.
  • 데이터 전송의 신뢰성: Stream Socket은 신뢰성 있는 데이터 전송을 제공하는 반면, Datagram Socket은 이를 보장하지 않습니다.
  • 속도와 효율성: Datagram Socket은 더 빠르고 효율적이지만, 오류에 더 취약합니다.

각 소켓 유형은 서로 다른 시나리오와 요구 사항에 맞게 설계되었습니다. 따라서 어떤 유형의 소켓을 사용할지 결정할 때는 애플리케이션의 요구 사항을 고려해야 합니다. 예를 들어, 데이터의 정확한 전송이 중요한 경우 TCP 기반의 Stream Socket을, 빠른 응답 시간이 중요한 경우 UDP 기반의 Datagram Socket을 선택하는 것이 일반적입니다.

profile
정글 3기

0개의 댓글