探索網路協議棧和網絡卡之間的互動

2022-08-20 23:00:22 字數 2183 閱讀 1857

互動主要分為以下幾個步驟:

1)什麼是套接字

套接字指的實體是通訊控制資訊,控制資訊裡面包含了通訊物件的ip位址,埠號和通訊操作進行狀態。

linux裡面執行如下命令可以看到有多少個套接字:

上面就是所有的套接字以及它所包含的資訊。

建立套接字指的是在記憶體中開闢乙個儲存空間,並向這個空間內寫入初始化的資訊。

如下所示就是python 建立socket的**,可以看到在進行初始化的時候,傳入了

繫結位址和埠資訊。這些都會儲存到控制資訊中。

import

socket

sk =socket.socket()

sk.bind((

"127.0.0.1

",8080))

sk.listen(5)

conn,address =sk.accept()

sk.sendall(bytes(

"hello world

",encoding="

utf-8

"))

所謂的連線就是客戶端和伺服器端交換控制資訊。

負責儲存控制資訊的頭部:

有些控制資訊在通訊的整個過程中都是需要的,這些控制資訊需要儲存在所傳送的包的內部。這些資訊被稱為「頭部」,不同的協議和網路層在處理包的過程中都會加上自己的頭部。

為了便於區分這些頭部被稱為「tcp 頭部」, 乙太網頭部和ip頭部。

在連線和斷開階段由於沒有對應的實際資料,所以傳遞的僅僅是網路包。

tcp的三次握手

連線建立之後,客戶端就可以呼叫write()函式進行資料的傳輸。

對於較小的資料片,協議棧會等到資料填滿後打包傳送,這個資料的容量就是mtu值。

如果應用程式傳送的資料報較小,那麼會影響傳送的效率,協議棧會等到資料達到mtu值之後才會傳送。

當然這個是由程式來控制的。可以選擇不快取而立馬傳送,但是這樣會造成網路的擁擠。

如果資料報過大,超過了mtu值那麼就需要對網路包進行拆分。分成乙個個的小包傳送出去。

這樣網路包就傳送出去了,但是tcp是乙個安全可靠的傳輸協議,必須保證包能夠抵達服務端。

這樣就需要一定的機制來保證。

根據包的平均往返時間來調整ack號的等待時間。

滑動視窗機制的原理,ack值在返回的過程中可能會造成延遲,如果延遲過高,那麼

必然會造成重傳,如果重傳勢必會造成網路更加擁擠。但是如果設定等待網路ack 包

的時間過長也會導致網路速度變慢,因此需要為延遲設定乙個合適的時間。

5 ip與乙太網的包收發操作

包結構網絡卡是物理層裝置,負責將電訊號轉化為數碼訊號。虛擬網絡卡尤其是linux的tap裝置

是對網絡卡的模擬,它並不負責將電訊號轉化為數碼訊號,而是乙個軟體,負責數碼訊號

的傳輸。

tcp協議的目的是保證資料的安全和可靠傳輸,所以它有三次握手和三次揮手的功能。

這整個算是傳輸層的能力。udp也一樣,不過它不具備可靠傳輸的能力。

核心協議棧的ip模組的主要功能是對包進行封裝傳輸。它並不關心tcp做了哪些事情。

舉個例子來說,我們在郵局寄東西的時候,汽車的運輸人員,他們不關心運輸的東西

是什麼,每乙個物品都封裝成了乙個個的包裹,包裹上面有麵單,上面包含了傳送位址和寄出位址。

ip模組在接收到包之後會做兩件事情,新增ip頭部和mac頭部。

mac頭部在ip頭部的前面,由於在處理的時候先處理二層的mac頭部,再

處理三層的ip頭部。

網絡卡有對應的網絡卡驅動程式,網絡卡的內部結構如下圖所示。它的主要功能是

將數碼訊號轉換為電訊號並傳輸出去。

《網路是怎樣連線的》

Linux網路協議棧 多佇列網絡卡原理

背景 近日因公司大促,mysql從伺服器前端共享的一台lvs因流量跑到2gps 而出現 lvs丟包,client端 不停丟擲mysql connect failed異常.故障特徵 大流量時為lvs的cpu其中乙個core使用率100 其他23個core使用率小於10 明顯地 根本原因 lvs使用li...

linux核心網路協議棧 網絡卡報文收發(十六)

linux版本 3.10.103 網絡卡驅動 ixgbev 網絡卡驅動預設採用的是napi的報文處理方式。即中斷 輪詢的方式,網絡卡收到乙個報文之後會產生接收中斷,並且遮蔽中斷,直到收夠了netdev max backlog個報文 預設300 或者收完網絡卡上的所有報文之後,重新開啟中斷。網絡卡啟用...

GPRS模組協議棧和終端協議棧的區分

1.模組 外部 協議棧 即採用at指令收 發資料,由gprs模組組tcp ip協議幀與伺服器通訊,這裡的at指令,資料都是通過乙個串列埠可以實現 2.終端 內部 協議棧 終端自身採用pppd內建tcp ip協議與gprs模組和伺服器通訊 實際物理通訊串列埠只有乙個,要麼用於at指令收發,要麼用於pp...