Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
まず最初にLISTEN状態のソケットが、コネクション確立要求(SYNパケット)を受け取った時の動作を説明する。SYNパケットを受け取るとサーバはSYN_RECV状態のコネクションを生成し、クライアントにSYN+ACKパケットを返送する。
パケットはtcp_v4_rcv, tcp_v4_do_rcv関数を通して入って来る。受信ソケットがTCP_LISTEN状態である場合、まずtcp_v4_hdn_req関数が呼び出されるが、SYNパケットである場合(基本的に)何も処理をしない。その後tcp_rcv_state_process関数を呼び出す。
tcp_rcv_state_process関数は、TCP_LISTEN状態のソケットがSYNパケットを受け取った場合は、tcp_v4_conn_request関数を呼び出す。
tcp_v4_conn_request関数は、SYN要求に対応してSYN_RECV状態のopenreq構造体を生成する。(LinuxにおいてSYN_RECV状態は、ソケットではない)
(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:45:42, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members