Show page source of internal22-285-クライアント側処理 #25492

[[PageNavi(internal22-navi)]]

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

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

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

  1.  inet_stream_connect関数は、まずソケットにポート番号が	割り当てられていない場合適当なポート番号を割り当てる	(inet_autobind関数)。 
    *  inet_autobind関数はtcp_v4_get_port関数でユニークな	TCPポート番号を取得し、tcp_v4_hash関数で	TCPポートキャッシュに登録する。	(tcp_protインターフェイステーブル経由) 
  *  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関数で	TCPポートキャッシュに再登録する。
      *  SYNパケットをソケットのwrite_queueにリンクし、 送信要求(tcp_transmit_skb関数)を出す。
      *  再送タイマの起動も行う(tcp_reset_xmit_timer(TIME_RETRANS)関数)。 
  *  あとはコネクトの確立を待つ(inet_wait_for_wait)。	サーバ側からSYNに対応するSYN+ACKが戻って来たとき	起床される。

----

''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1

[[PageNavi(internal22-navi)]]