送受信準備

ソケットを用いた通信を行うためには二つのソケットの間でコネクト状態を作る必要がある。サーバ側ではbind, listen, acceptシステムコール、クライアント側ではconnectシステムコールを発行する(コネクションレスの場合は、listen, acceptは不必要)。各システムコールの実体はそれぞれ、sys_bind関数、sys_listen関数、sys_connect関数、sys_accept関数である。

sys_bind関数は、単にソケット操作関数テーブル(struct proto_ops)を経由し、プロトコル固有のbind関数を呼び出すだけである。

同様に、sys_listen関数はプロトコル固有のlisten関数、sys_connect関数はプロトコル固有のconnect関数を呼び出すだけである。

sys_accept関数は、プトコル固有のaccept関数を呼び出す前に、新しいソケットの生成を行う。socket構造体を確保(sock_alloc)した後、ソケット操作関数テーブルのdupメンバに登録されている関数を呼び出し、socketの複製を生成する(新規ソケットを生成するだけのプロトコルも多い)。

プロトコル固有のaccept処理が完了したら、ファイル構造体を確保しファイルディスクリプタテーブルに登録する(get_fd関数)。

img86.gif

(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST
1