02/02/23 21:59 .net
>>19
ネットワーク屋なんで、Unixカーネルについてはほとんど無知なんだけど、かってに想像するとこんな感じ。
#激しく間違ってる可能性アリ
NICがフレーム受信→
カーネルのメモリ領域にいるNICのドライバ(L2)がL2ヘッダを削除してIPドライバ(L3)に渡す→
IPドライバがL3ヘッダを削除してTCPドライバ(L4)に渡す(フラグメントがあればパケットを再構成)→
TCPドライバは正常なシーケンスのパケットであれば、パケットをキューイング(異常があればエラー訂正や再送要求)→
RWINが埋まる、もしくはPUSHされるれば、データグラムを再構成してアプリに渡す→
アプリケーションはソケットを作ってデータグラムを処理する→
処理不能(ポートをリッスンしているプロセスが無い等)であればソケットが作れない旨をTCPドライバにかえす(TCPドライバはセッションをRSTする)→
こんな感じでは無いかと、、、
いずれにしてもカーネルメモリに存在しているのでは?
常駐しているユーザプロセスとは大分性格が異なるんでしょうけど、、