質問
ソケットタイプのストリーム型、データグラム型とはなんですか。 ほかにどのようなものがありますか |
解答
**ソケットタイプ**は、コンピュータネットワークや通信において、データの送受信の仕組みを指定する概念です。 ソケットの「タイプ」は、通信の性質や目的に応じて選ばれます。 代表的なものとして「ストリーム型」と「データグラム型」があり、それぞれ異なる特徴を持っています。 また、それ以外のソケットタイプもいくつか存在します。 ### **主要なソケットタイプ** #### **1. ストリーム型(SOCK_STREAM)** **特徴** データは**順序保証**され、エラーなく連続的に送信されます。 送信したデータは、相手側に同じ順序で到着します。 **コネクション指向**: 通信を始める前に、送信側と受信側の間で接続を確立する必要があります(TCPのようなプロトコルが使用される)。 信頼性が高い通信を実現。 **用途** Web通信(HTTP/HTTPS) ファイル転送(FTP) リモートログイン(SSH、Telnet) **プロトコル例** **TCP(Transmission Control Protocol)** #### **2. データグラム型(SOCK_DGRAM)** **特徴** データは**独立したパケット(データグラム)**として送信され、順序は保証されません。 再送や順序整列などは行われず、エラーが発生してもそのままになります。 **コネクションレス**: 送信ごとに宛先を指定する必要があり、接続を確立する必要はありません。 軽量で効率的。 **用途** DNSクエリ ストリーミング(リアルタイム性が優先される場合) ゲーム通信(ラグを減らすため) **プロトコル例** **UDP(User Datagram Protocol)** ### **その他のソケットタイプ** #### **3. Rawソケット(SOCK_RAW)** **特徴** データリンク層またはネットワーク層のパケットを直接操作可能。 プロトコルスタックの制御が可能で、カスタムプロトコルの作成やパケットの詳細制御に適している。 通常、システム管理者や特権ユーザーのみが使用可能。 **用途** ネットワークパケットの解析(例: Wireshark) カスタムプロトコルの実装 ICMP(Pingなど)の送信 **プロトコル例** ICMP(Internet Control Message Protocol) #### **4. シーケンスパケット型(SOCK_SEQPACKET)** **特徴** メッセージ単位で送信され、順序が保証されます。 ストリーム型とデータグラム型の中間的な性質を持つ。 各メッセージが独立しており、固定サイズのパケットを扱う場合に便利。 **用途** ローカル通信(UNIXドメインソケットでの特定アプリケーション) 電話システムなどのリアルタイムシステム #### **5. リライアブルデータグラム型(SOCK_RDM)** **特徴** コネクションレスだが、同じデータは1回だけ配信されます。 信頼性とコネクションレスの中間的な特徴を持つ。 実際にはあまり使用されない。 ### **選択基準** **信頼性が必要かどうか** 必要: ストリーム型(TCP) 不要または低遅延が重要: データグラム型(UDP) **順序保証が必要かどうか** 必要: ストリーム型またはシーケンスパケット型 不要: データグラム型 **リアルタイム性が重要かどうか** 重要: データグラム型(例: ビデオ通話) 重要ではない: ストリーム型(例: Webブラウジング) ### **まとめ** **ストリーム型(SOCK_STREAM)**: 信頼性が高く、順序保証が必要な通信に適する(例: TCP)。 **データグラム型(SOCK_DGRAM)**: 軽量でリアルタイム性を重視する場合に適する(例: UDP)。 その他、特定用途に特化したRawソケットやシーケンスパケット型も存在します。 目的や要件に応じて適切なタイプを選択することが重要です。 |
![]() |
![]() |
【下記、広告です。クリックいただけると励みになります。】