回覆列表
  • 1 # 影片好笑

    網路資料接收依次經過網絡卡驅動和協議棧程式,以DM9000A網絡卡為例進行介紹接收資料的過程。網絡卡在一個數據包到來時,會產生一個硬中斷,網路驅動程式會執行中斷處理過程:首先申請一個skb結構及pkt_len+5大小的記憶體用於儲存資料,然後便將接收到的資料從網絡卡複製到這個skb的資料部分中。當資料從網絡卡中成功接收後,呼叫netif_rx(skb)進一步處理資料,將skb加入到相應的input_pkt_queue佇列中,並呼叫netif_rx_schedule(),會產生一個軟中斷來執行網路協議棧的例程。這樣,中斷的上半部已完成,以下的工作則交由中斷的下半部來實現。下半部的核心守護執行緒do_softirq(),將執行net_rx_action(),對資料進行處理。IP層輸入處理程式輪詢處理輸入佇列中的每個IP資料,在整個佇列處理完畢後返回。IP層驗證IP首部的校驗和,處理IP選項,驗證IP主機地址和正確性等,並呼叫相應協議(TCP或者UDP等)處理程式。接收的程序在網路協議棧處理完畢後會收到喚醒的訊號,並收到傳送來的網路資料。

  • 中秋節和大豐收的關聯?
  • 杜蘭特是當年的狀元選秀嗎?