Linux数据报文接收发送总结3
生活随笔
收集整理的這篇文章主要介紹了
Linux数据报文接收发送总结3
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.3 協議分層
?
大概了解了網卡驅動、硬中斷、軟中斷和ksoftirqd線程之后,我們在這幾個概念的基礎上給出一個內核收包的路徑示意:
?
當網卡上收到數據以后,Linux中第一個工作的模塊是網絡驅動。網絡驅動會以DMA的方式把網卡上收到的幀寫到內存里。再向CPU發起一個中斷,以通知CPU有數據到達。
當CPU收到中斷請求后,會去調用網絡驅動注冊的中斷處理函數。網卡的中斷處理函數并不做過多工作,發出軟中斷請求,然后盡快釋放CPU。
ksoftirqd檢測到有軟中斷請求到達,調用poll開始輪詢收包,收到后交由各級協議棧處理。對于UDP包來說,會被放到用戶socket的接收隊列中。
我們從上面這張圖中已經從整體上把握到了Linux對數據包的處理過程。但是要想了解更多網絡模塊工作的細節,我們還得往下看。
?
?
總結
以上是生活随笔為你收集整理的Linux数据报文接收发送总结3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux数据报文接收发送总结2
- 下一篇: Linux数据报文接收发送总结4