送信処理

アプリケーションからのデータ送信処理要求は、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秒 JST
1