Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
アプリケーションからのデータ送信処理要求は、socketレイヤを経由しinet_sendmsg関数を呼び出す(struct proto_ops inet_dgram_opsインターフェイステーブル経由)ことにより実現される。inet_sendmsg関数は、即udp_sendmsg関数を呼び出す(struct proto ucp_protインターフェイステーブル経由)。
まずucp_sendmsg関数は仮のUDPヘッダを作り上げ、ルーティング情報を取得し(ip_route_output関数)、IPレイヤの送信関数(ip_build_xmit関数)を呼び出す。
ip_build_xmit関数は、IPパケットを生成したのちに送信処理まで行う関数である。ip_build_xmit関数内ではパケット(sk_buff)を確保した後、udp_getfrag関数をコールバックする。
udp_getfrag関数では、確保したパケットにユーザ空間のデータを読み込み、チェックサムの計算を行う。また、先に生成しておいた仮のUDPヘッダの情報をこのパケットに反映させる。(処理の高速化のためにこのような構成にしていると思われる)
以上でUDPレイヤの送信処理は完了である。
(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:45:05, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members