Show page source of internal24-257-クライアント側処理 #25210

[[PageNavi(internal24-navi)]]

{{{ comment
h2w-title:クライアント側処理
}}}
 

== クライアント側処理 == #SECTION05871000000000000000

クライアントからのコネクション確立要求は、socketレイヤを経由しinet_stream_connect関数を呼び出す(struct proto_ops inet_stream_opsインターフェイステーブル経由)ことにより実現される。

  1.  inet_stream_connect関数は、まずソケットにポート番号が	割り当てられていない場合適当なポート番号を割り当てる。	tcp_v4_get_port関数	(tcp_protインターフェイステーブルget_portメソッド経由)	でユニークなTCPポート番号を取得する。
  1.  inet_stream_connect関数は、次にtcp_v4_connect関数を呼び出す。	(tcp_protインターフェイステーブル経由)。 
    *  tcp_v4_connect関数は、まずルーティング情報を得る (ip_route_connect関数)。
    *  次にSYNパケット用のパケットを確保し(sock_wmalloc関数)、	パケットの初期化を行う。シーケンス番号初期化には	secure_tcp_sequence_number関数を利用。
    *  その後SYNパケットの送信(tcp_connect関数)を行う。 
      *  SYNパケットの初期化を行なう。
      *  ソケットの状態をTCP_SYN_SENT状態にし、	tcp_v4_hash_connecting関数(tcp_protインターフェイステーブル	hash_connectingメソッド)でTCPポートキャッシュに登録する。
      *  SYNパケットをソケットのwrite_queueにリンクし、 送信要求(tcp_transmit_skb関数)を出す。
      *  再送タイマの起動も行う(tcp_reset_xmit_timer(TIME_RETRANS)関数)。 
  *  あとはコネクトの確立を待つ(inet_wait_for_wait)。	サーバ側からSYNに対応するSYN+ACKが戻って来たとき	起床される。

----

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

[[PageNavi(internal24-navi)]]