Show page source of internal22-253-受信処理 #25310

[[PageNavi(internal22-navi)]]

{{{ comment
h2w-title:受信処理
}}}
 

= 受信処理 = #SECTION07430000000000000000

下位レイヤがIPパケットを受信すると、IPプロトコルスタック中のip_rcv関数が呼び出される。

ip_rcv関数は、IPパケットのヘッダ整合性チェックや、自ホストに対するIPパケットか転送しなければならないIPパケットであるかの判定を行う(ip_route_input関数)。その後IP拡張オプションがあればそのオプションに対する処理(ip_option_compile関数)なども行う。

IPパケットが自ホスト宛であった場合、ip_rcv関数はip_local_deliver関数を呼び出す。(マルチキャストの場合はip_mr_input関数のこともある)ip_local_deliver関数は、分割(フラグメント化)されたパケットであれば、すぐには上位レイヤに上げずにこの関数内でIPパケットの復元(リアセンブル)を行う(ip_defrag関数)。その後、IPヘッダ内のプロトコルIDをチェックし、プロトコルIDに対応する上位レイヤ(ICMP, UDP, TCPなど)にIPパケットを上げる(inet_protocolテーブルを検索し、上位プロトコルスタックの受信関数を呼び出す)。

IPパケットを覗きみるためのrawアクセス用socketがあれば、受信IPパケットを複製(skb_clone関数)し、raw_rcv関数も呼び出す。

----

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

[[PageNavi(internal22-navi)]]