Linux 網絡概念介紹

網絡模型

OSI 網絡模型 VS TCP/IP 模型

Linux 網絡概念介紹

Linux 實際按照 TCP/IP 模型,實現了網絡協議棧。服務器

Linux 網絡棧

Linux 網絡概念介紹

網絡包在每一層的處理邏輯,都取決於各層採用的網絡協議。處理過程就是不斷拆包,封包的過程。網絡

Linux 通用 IP 網絡棧

Linux 網絡概念介紹

咱們從上到下來看這個網絡棧,你能夠發現,數據結構

  • 最上層的應用程序,須要經過系統調用,來跟套接字接口進行交互;
  • 套接字的下面,就是咱們前面提到的傳輸層、網絡層和網絡接口層;
  • 最底層,則是網卡驅動程序以及物理網卡設備。

Linux 網絡收發流程

當一個網絡幀到達網卡後,網卡會經過 DMA方式,把這個網絡包放到收包隊列中;而後經過硬中斷,告訴中斷處理程序已經收到了網絡包。接着,網卡中斷處理程序會爲網絡幀分配內核數據結構(sk_buff),並將其拷貝到 sk_buff 緩衝區中;而後再經過軟中斷,通知內核收到了新的網絡幀。併發

接下來,內核協議棧從緩衝區中取出網絡幀,並經過網絡協議棧,從下到上逐層處理這個網絡幀。ide

Linux 網絡概念介紹

網絡包的發送流程瞭解網絡包的接收流程後,就很容易理解網絡包的發送流程。網絡包的發送流程就是上圖的右半部分,很容易發現,網絡包的發送方向,正好跟接收方向相反。性能

  • 首先,應用程序調用 Socket API(好比 sendmsg)發送網絡包。code

  • 因爲這是一個系統調用,因此會陷入到內核態的套接字層中。套接字層會把數據包放到 Socket 發送緩衝區中。blog

  • 接下來,網絡協議棧從 Socket 發送緩衝區中,取出數據包;再按照 TCP/IP 棧,從上到下逐層處理。好比,傳輸層和網絡層,分別爲其增長 TCP 頭和 IP 頭,執行路由查找確認下一跳的 IP,並按照 MTU 大小進行分片。接口

  • 分片後的網絡包,再送到網絡接口層,進行物理地址尋址,以找到下一跳的 MAC 地址。而後添加幀頭和幀尾,放到發包隊列中。這一切完成後,會有軟中斷通知驅動程序:發包隊列中有新的網絡幀須要發送。隊列

  • 最後,驅動程序經過 DMA ,從發包隊列中讀出網絡幀,並經過物理網卡把它發送出去。

性能指標

  • 帶寬,表示鏈路的最大傳輸速率,單位一般爲 b/s (比特 / 秒)。

  • 吞吐量,表示單位時間內成功傳輸的數據量,單位一般爲 b/s(比特 / 秒)或者 B/s(字節 / 秒)。吞吐量受帶寬限制,而吞吐量 / 帶寬,也就是該網絡的使用率。

  • 延時,表示從網絡請求發出後,一直到收到遠端響應,所須要的時間延遲。在不一樣場景中,這一指標可能會有不一樣含義。好比,它能夠表示,創建鏈接須要的時間(好比 TCP 握手延時),或一個數據包往返所需的時間(好比 RTT)。

  • PPS,是 Packet Per Second(包 / 秒)的縮寫,表示以網絡包爲單位的傳輸速率。PPS 一般用來評估網絡的轉發能力,好比硬件交換機,一般能夠達到線性轉發(即 PPS 能夠達到或者接近理論最大值)。而基於 Linux 服務器的轉發,則容易受網絡包大小的影響。

除了這些指標,網絡的可用性(網絡可否正常通訊)、併發鏈接數(TCP 鏈接數量)、丟包率(丟包百分比)、重傳率(從新傳輸的網絡包比例)等也是經常使用的性能指標。

相關文章
相關標籤/搜索