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

2021-07-29 14:48:18 字數 880 閱讀 6607

在整個資料報傳輸過程當中,

傳送:

傳送端程序首先呼叫系統呼叫,然後把資料傳送給了socket,然後socket檢查資料型別,呼叫系統呼叫send函式,send函式檢查socket的狀態,協議型別,傳給了傳輸層,傳輸層對應的協議(udp或者是tcp為這些資料建立資料結構),然後加入對應的傳輸層協議頭部,然後交付給網際層,ip層,ip層加上它的頭部,例如ip位址和檢驗和。然後決定是否分片,然後向下交付給資料鏈路層,資料鏈路層進行封裝目的mac和源mac以及crc校驗。然後網絡卡呼叫中斷驅動程式,傳送到網路當中去。

接受:

資料報從網路中到達網絡卡,然後網絡卡接收到資料幀,放入網絡卡的快取當中,向系統傳送中斷請求,執行中斷處理程式,從網絡卡快取當中讀取到資料放入記憶體當中,然後把資料交給資料鏈路層,資料鏈路層進行解包,向上傳遞,ip層在對這個資料報進行差錯檢驗等,此時如果是要接受的就向上層進行傳遞,如果不是,那麼就丟棄或者**,到達傳輸層,進行對應協議交付解包,然後向上到達應用層,交付給對應的協議,放入socket接受佇列當中,然後接收的程序進行系統呼叫,獲得資料,拷貝至程序緩衝區。然後返回使用者態。

我們從一台主機去訪問 www.baidu.com,需要首先知道ip位址,這樣我們就需要通過網域名稱解析,pc1首先發出dns請求,查詢www.baidu.com對應的ip。(網域名稱和唯一的ip位址對應這)

如果此時發現不在同乙個網路,就需要通過路由裝置**,這個時候首先通過arp請求,得到路由器的ip,然後把dns請求封裝成乙太網幀傳送給路由器。

路由器收到乙太網幀,然後**給dns伺服器,這個過程當中路由器可能需要傳送arp請求,得到dns伺服器的mac位址。

當dns收到dns請求,然後這個時候就會把 www.baidu.com 的ip位址傳送給路由器,然後路由器再進行**給pc1

pc1最終收到目的ip位址。

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

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

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

linux的網路介面分為四部分 網路裝置介面,網路介面核心,網路協議族,網路介面socket層。可參考 應用程式呼叫系統呼叫,將資料傳送給socket socket檢查資料型別,呼叫相應的send函式 send函式檢查socket狀態 協議型別,傳給傳輸層 tcp udp 傳輸層協議 為這些資料建立...

網路資料報傳送工具PacketSender中文原始碼

在網上發現了乙個好用的工具packetsender,資料報傳送器。對於寫網路程式來說,有很大的便利性。雖然在linux下,netcat工具也很好用,但是這個也不錯。原本是英文的,給翻譯了一下。這是基於qt開發的。有一些翻譯不對的地方,還請指正。本文由烏合之眾 lym瞎編,歡迎 blog.cnblog...