電腦怎樣接收網絡數據

電腦怎樣接收網絡數據

電腦接收網絡數據依次經過網卡驅動和協議棧程序,以DM9000A網卡爲例進行介紹接收數據的過程。

網卡在一個數據包到來時,會產生一個硬中斷,網絡驅動程序會執行中斷處理過程:首先申請一個skb結構及pktlen加5大小的內存用於保存數據,然後便將接收到的數據從網卡複製到這個skb的數據部分中。當數據從網卡中成功接收後,調用netifrx進一步處理數據,將skb加入到相應的inputpktqueue隊列中,並調用netifrxschedule,會產生一個軟中斷來執行網絡協議棧的例程。這樣,中斷的上半部已完成,以下的工作則交由中斷的下半部來實現。

下半部的內核守護線程dosoftirq,將執行netrxaction,對數據進行處理。IP層輸入處理程序輪詢處理輸入隊列中的每個IP數據,在整個隊列處理完畢後返回。處理IP選項,驗證IP主機地址和正確性等,並調用相應協議處理程序。