網路包流程

2021-06-28 05:07:00 字數 697 閱讀 3419

傳送:

應用程式呼叫系統呼叫,將資料傳送給socket

socket檢查資料型別,呼叫相應的send函式

send函式檢查socket狀態、協議型別,傳給傳輸層

tcp/udp(傳輸層協議)為這些資料建立資料結構,加入協議頭部,比如埠號、檢驗和,傳給下層(網路層)

ip(網路層協議)新增ip頭,比如ip位址、檢驗和

如果資料報大小超過了mtu(最大資料報大小),則分片;ip將這些資料報傳給鏈路層

鏈路層寫到網絡卡佇列

網絡卡呼叫響應中斷驅動程式,傳送到網路

接收:資料報從網路到達網絡卡,網絡卡接收幀,放入網絡卡buffer,在向系統傳送中斷請求

cpu呼叫相應中斷函式,這些中斷處理程式在網絡卡驅動中

中斷處理函式從網絡卡讀入記憶體,交給鏈路層

鏈路層將包放入自己的佇列,置軟中斷標誌位

程序排程器看到了標誌位,排程相應程序

該程序將包從佇列取出,與相應協議匹配,一般為ip協議,再將包傳遞給該協議接收函式

ip層對包進行錯誤檢測,無錯,路由

路由結果,packet被**或者繼續向上層傳遞

如果發往本機,進入鏈路層

鏈路層再進行錯誤偵測,查詢相應埠關聯socket,包被放入相應socket接收佇列

socket喚醒擁有該socket的程序,程序從系統呼叫read中返回,將資料拷貝到自己的buffer,返回使用者態。

網路收包過程中DMA流程

dma在進行資料傳輸時,會向cpu申請匯流排控制權,此時按理說cpu只能進行計算任務,不能進行io操作。但是實際是,依然能進行io操作。問人,查資料,大概只能說以下理由,dma和cpu對匯流排的控制是分時的,所以並不是dma獨佔,只是同時進行io時,dma優先,cpu要等待 dma收包資料傳輸的過程...

isis receive 收包流程

如下 int isis receive struct thread thread 主要流程 1 收包 rx,呼叫註冊的處理函式,例如isis receive bcast p2p 2 處理報文 handle 3 處理下乙個 read on 處理報文的邏輯如下,static int isis handl...

npm包發布流程

1.npm 是什麼 2.安裝npm npm 不需要單獨安裝,在安裝node的時候,會連帶一起安裝npm。但是,node附帶的npm可能不是最新的版本,可以用以下命令更新到最新版本。npm install npm latest g 安裝完檢視npm版本 npm v 6.0.1 3.npm發布流程 1....