ソケット通信
ソケット通信(socket communication)
ソケットとは、2者間で通信を行う際のプログラム的な端点のこと ソケットからデータが出入りするイメージ
概念的に近いのは電話機、郵便ポスト
ソケット通信
ソケットインターネットとも呼ばれ、主にプログラムの世界とTCP/IP世界を結ぶ特別な出入り口のこと ソケットを通してデータをやり取りする、ネットワーク通信をする
OSはあるプログラム(プロセス)がアクセスしているストリーム一つひとつに固有の番号を付け,その番号をディスクリプタと呼ぶ。
LinuxやUnix系のOSでは、入出力をバイト列として扱う。入出力におけるこのバイト列のことストリームと呼んでいる。
レイヤー
セッション層
通信の開始から終了まで(セッション)をどう管理するか
データの送受信管理
トランスポート層
データを適切なアプリケーションに振り分けるための層
https://gyazo.com/19b316829013cf6d815635ab6b3c9ce5
ライフサイクル
クライアント側とサーバー側のライフサイクルがある
socket()、bind()などはソケットAPI
クライアント側のライフサイクル
socket() ソケットの作成
bind() ソケットを特定のIPアドレスとポートに紐付け
してもしなくもよい...?
connect() リモートソケットに接続
close() 接続を切断
サーバ側のライフサイクル
socket() ソケットの作成
bind() ソケットを特定のIPアドレスとポートに紐付け
listen() 接続の待受を開始
accept() 接続の待機→接続を受信
recv() / send() データの受信/送信
close() 接続を切断
code:memo
はじめ
↓
socket() (1) ソケット生成
↓
bind() (2) ソケット登録
↓
listen() (3) ソケット接続準備
↓
accept() (4) ソケット接続待機 ← 接続要求
↓
recv() / send() (5) 受信/送信 ← データ → クライアント
↓
close() (6) ソケット切断
↓
終わり
https://gyazo.com/f26ba4513c1f183a59a5bf3a5a704f36
実装例
確認用
Q. ソケットとは
Q. ソケット通信とは
Q. クライアント側のライフサイクル
[]() → []() → []()→ []()→ 送受信 → []()
Q. サーバー側のライフサイクル
[]() → []() → []()→ 送受信 → []()
Q. ファイル・ディスクリプタ
Q. ソケットの種類
Q. INETドメイン
Q. UNIXドメイン
参考
関連