網路資料報傳送接收全過程

2021-08-24 19:05:31 字數 811 閱讀 8763

linux的網路介面分為四部分:網路裝置介面,網路介面核心,網路協議族,網路介面socket層。

可參考:

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

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

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

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

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

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

鏈路層寫到網絡卡佇列

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

接收:

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

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

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

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

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

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

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

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

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

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

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

網路資料報傳送接收全過程

linux的網路介面分為四部分 網路裝置介面,網路介面核心,網路協議族,網路介面socket層。可參考 網路裝置介面部分主要負責從物理介質接收和傳送資料,實現的檔案在linu driver net目錄下面。網路介面核心部分是整個網路介面的關鍵部位,它為網路協議提供統一的傳送介面,遮蔽各種各樣的物理介...

網絡卡傳送與接收資料報

網絡卡如何傳送資料報 ip報文可以看作乙個包。linux網絡卡驅動程式,將ip包新增14位元組的mac包頭,構成mac包。mac包中含有傳送端和接收端的mac位址資訊。既然是驅動程式建立的mac包頭資訊,當然可以隨便輸入位址資訊的。主機偽裝就是這麼實現的。驅動程式將mac包拷貝到網絡卡晶元內部的緩衝...

網路資料報傳送的過程和DNS過程

在整個資料報傳輸過程當中,傳送 傳送端程序首先呼叫系統呼叫,然後把資料傳送給了socket,然後socket檢查資料型別,呼叫系統呼叫send函式,send函式檢查socket的狀態,協議型別,傳給了傳輸層,傳輸層對應的協議 udp或者是tcp為這些資料建立資料結構 然後加入對應的傳輸層協議頭部,然...