OSI参照モデル セッション層

概要

Socketライブラリ
UNIXで使われているネットワーク系ライブラリ
WindowsではWinSock
を用いて、通信相手、対象アプリケーションとの接続~切断までを行う層。

リゾルバ

Socketライブラリにおける名前解決を行う機能。
DNSへの問い合わせを実行する。
ブラウザはWEBサーバーにリクエストを送る際、リゾルバを用いて対象IPを取得する。

ソケット

ネットワークにおけるセッション毎に作成されるセッション情報。
SocketライブラリにおけるSocketを用いてメモリ領域に生成する。
ホテルで例えるとアカウント(顧客情報)。
・自IPアドレス
・自ポート番号
・通信相手IPアドレス
・通信相手ポート番号
・プログラムID
等の情報を保持する。
コマンドライン:netstatで内容を確認する事ができる。

ディスクリプタ

ホテルのアカウント(顧客情報)に対する番号札に当たるユニークな数字
ネットワークにおけるセッションを区別する。
SocketライブラリにおけるSocketを用いてソケットを生成すると、Socketライブラリから返される数値。
コマンドライン:netstatにおいて何行目か?に当たる数値。
以後、通信相手にこの数値を渡して他の通信と区別する為に使用する。

流れ

socket_library

Socket
Socketライブラリにおけるソケットを作成する機能。
成功すると各ソケットを区別する為に、ディスクリプタが返される。

Connect
クライアントからWEBサーバーに対してセッションを作成する機能。
生成したディスクリプタをサーバーに送信する事で、サーバー側でも他通信と区別でき、通信経路が確保される。

Bind
サーバー側にて、通信を許可するIPアドレスとポート番号を設定する機能。
通常WEBサーバーでは全IPに対してデータを送信する為、ここでは(0)=全相手を指定する。

Listen
Bindの設定をTCP/IPソフトに通知し、クライアントからの受信を可能にする機能。

Accept
クライアントからの通信を受け付ける機能。
結果として新しいディスクリプタを作成し、
以後、受け付けた通信相手(クライアント)との通信にはこのディスクリプタを使用する。
ここで使用していたディスクリプタは、「空き」となり別の通信に使用される。

Write
通信が確立された後、相手にデータを送信する機能。
クライアントからでも、サーバーからでも利用する。

Read
通信が確立された後、相手にデータを受信する機能。
クライアントからでも、サーバーからでも利用する。

Close
通信を遮断する機能。

タイムアウト

Connect Timeout
接続時

Read Timeout
リクエスト時