傳送:
應用程式呼叫系統呼叫,將資料傳送給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....