ソケット通信
ソケット通信(socket communication)
ソケット通信
ソケットインターネットとも呼ばれ、主にプログラムの世界とTCP/IP世界を結ぶ特別な出入り口のこと
ソケットを通してデータをやり取りする、ネットワーク通信をする
ソケットとは、2者間で通信を行う際のプログラム的な端点のこと
ソケットからデータが出入りするイメージ
概念的に近いのは電話機、郵便ポスト
そもそもソケットとは→ソケット - Google 検索
プログラミングの分野としてはネットワークプログラミングに分類される
ネットワーク通信に用いるファイルディスクリプタ(file descriptor)
OSはあるプログラム(プロセス)がアクセスしているストリーム一つひとつに固有の番号を付け,その番号をディスクリプタと呼ぶ。
LinuxやUnix系のOSでは、入出力をバイト列として扱う。入出力におけるこのバイト列のことストリームと呼んでいる。
レイヤー
OSI参照モデルではセッション層を担当
セッション層
通信の開始から終了まで(セッション)をどう管理するか
データの送受信管理
TCP/IP階層モデルではトランスポート層
トランスポート層
データを適切なアプリケーションに振り分けるための層
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
ref: ソケットの仕組み - IBM Documentation
ソケット通信 実装
ソケット通信(C)
ソケット通信(Python)
ソケットの種類
コマンド
ss
netstat
確認用
Q. ソケットとは
Q. ソケット通信とは
Q. クライアント側のライフサイクル
[]() → []() → []()→ []()→ 送受信 → []()
Q. サーバー側のライフサイクル
[]() → []() → []()→ 送受信 → []()
Q. ファイル・ディスクリプタ
Q. ソケットの種類
Q. INETドメイン
Q. UNIXドメイン
参考
知ったかぶりをしていたソケット通信の基礎を改めて学んでみる - Qiita
TCP/IPとは?通信プロトコルの階層モデルを図解で解説 | ITコラム|アイティーエム株式会社
ソケットの仕組み - IBM Documentation
ソケット
Man page of SOCKET
man socket (2): 通信のための端点(endpoint)を作成する
socket(2) - Linux manual page
Socket()とかBind()とかを理解する - Qiita
ソケット通信メモ(Hishidama's TCP/UDP Socket Memo)
C言語におけるreadとrecv,freadの違い - Qiita
関連
C言語 ファイル操作
poll/epollの違い
WebSocket
#TCP/IP #ネットワーク #プロセス間通信