Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
下位レイヤが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
2000年06月11日 (日) 22時29分57秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:45:07, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members