2025年03月08日

ソケットタイプのストリーム型、データグラム型とはなんですか。

sumup-nedMerQvxWQ-unsplash.jpg

質問

ソケットタイプのストリーム型、データグラム型とはなんですか。
ほかにどのようなものがありますか


解答

**ソケットタイプ**は、コンピュータネットワークや通信において、データの送受信の仕組みを指定する概念です。
ソケットの「タイプ」は、通信の性質や目的に応じて選ばれます。
代表的なものとして「ストリーム型」と「データグラム型」があり、それぞれ異なる特徴を持っています。
また、それ以外のソケットタイプもいくつか存在します。


### **主要なソケットタイプ**


#### **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ソケットやシーケンスパケット型も存在します。
目的や要件に応じて適切なタイプを選択することが重要です。





Cyber Nation Network / C.N.N ベスト(低価格盤) [CD]

価格:1797円
(2023/12/2 00:14時点)
感想(0件)


 



ブログランキング・にほんブログ村へ
【下記、広告です。クリックいただけると励みになります。】
posted by モニー at 00:00| Comment(0) | ネットワーク | このブログの読者になる | 更新情報をチェックする