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