電腦接收網絡數據依次經過網卡驅動和協議棧程序,以DM9000A網卡為例進行介紹接收數據的過程。
網卡在一個數據包到來時,會産生一個硬中斷,網絡驅動程序會執行中斷處理過程:首先申請一個skb結構及pktlen加5大小的内存用于保存數據,然後便将接收到的數據從網卡複制到這個skb的數據部分中。當數據從網卡中成功接收後,調用netifrx進一步處理數據,将skb加入到相應的inputpktqueue隊列中,并調用netifrxschedule,會産生一個軟中斷來執行網絡協議棧的例程。這樣,中斷的上半部已完成,以下的工作則交由中斷的下半部來實現。
下半部的内核守護線程dosoftirq,将執行netrxaction,對數據進行處理。IP層輸入處理程序輪詢處理輸入隊列中的每個IP數據,在整個隊列處理完畢後返回。處理IP選項,驗證IP主機地址和正确性等,并調用相應協議處理程序。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!