成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux TCP/IP協議棧,數據發送接收流程,TCP協議特點

網絡 通信技術
可以毫不夸張的說現如今的互聯網是基于TCP/IP構建起來的網絡。弄懂協議棧的原理,無論對調試網絡IO性能還是解決網絡問題都是有很大幫助的。本片文章就帶領大家來看看內核是如何控制網絡數據流的。

 可以毫不夸張的說現如今的互聯網是基于TCP/IP構建起來的網絡。弄懂協議棧的原理,無論對調試網絡IO性能還是解決網絡問題都是有很大幫助的。本片文章就帶領大家來看看內核是如何控制網絡數據流的。

[[278274]]

TCP特點

我們都非常清楚TCP協議設計的初衷,就是保證數據傳輸的快速,有序,無誤。所以特點總結如下:

  1. 面向連接,可以用五元組來表示一條連接(遠程ip,遠程端口,本地ip,本地端口,傳輸層協議)。
  2. 數據是全雙工的
  3. 數據是有序的,也就是接受的數據一定是按照發送時的順序的。
  4. 流量控制,發送方可以通過接收方滑動窗口大小來動態調整發送數據的大小。
  5. 擁塞控制,發送方通過ACK的狀態結合擁塞算法綜合計算給出窗口大小。

了解完TCP特點字后,我們就來真正的看看數據發送到底是怎樣的過程?

數據發送

我們首先來看張圖:

 

一篇文章:Linux TCP/IP協議棧,數據發送接收流程,TCP協議特點

 

上圖展示的是數據流動的在硬件中的過程,下圖展示的是數據在協議棧的過程:

 

一篇文章:Linux TCP/IP協議棧,數據發送接收流程,TCP協議特點

 

整個過程分為三個大區域:用戶區,內核區,設備。這里所說的設備就是網卡。流程如下:

  1. 用戶應用程序調用write系統調用
  2. 確認文件描述符
  3. 拷貝數據到socket buffer中
  4. 創建tcp片段,計算checksum
  5. 添加IP頭,執行ip路由,計算checksum
  6. 添加以太網協議頭部,執行ARP
  7. 告訴網卡芯片要發送數據了
  8. 網卡從內存中獲取數據發送,發送完成中斷告訴CPU

數據接收

直接看硬件數據流圖:

 

一篇文章:Linux TCP/IP協議棧,數據發送接收流程,TCP協議特點

 

首先網卡把接收到的數據包寫入到它的內存之中。然后對其進行校驗,通過后發送到主機的主存之中。主存中的buffer是驅動分配好的,驅動會把分配好的buffer描述告訴網卡,如果沒有足夠的buffer接受網卡的數據包,網卡會將數據包丟棄。一旦數據包拷貝到主存完成,網卡會通過中斷告知主機OS。

之后驅動會檢查它是否能處理這個新的包。如果能處理,驅動會把數據包包裝成OS認識的結構(linux sk_buffer)并推送到上層。 鏈路層接收到幀后檢查通過的話會按照協議解幀并推送至IP層。

IP層會在解包之后根據包中包含的IP信息決定推送至上層還是轉發到其他IP。如果判斷需要推送至上層,則會解掉IP包頭并推送至TCP層。

TCP在解報之后會根據其四元組找到對應的TCB,之后通過TCP協議處理這個報文。在接收到報文后,會把報文加到接受報文,之后根據TCP的狀態發送一個ACK給對端。

當然上述過程會受到NAT等等Netfilter的作用,這里不談了,也沒深研究過。當然為了性能,大牛們方方面面也做了很多努力,比如大到RDMA、DPDK等大的軟硬件技術,小到zero-copy、checksum offload等;

總結

現代的軟硬件TCP/IP協議棧單鏈接發送速率到1~2GiB/s完全沒有任何問題(經過實測)。如果你想探索更優秀的性能,你可以嘗試RMDA等技術,他們通過繞過內核以減少拷貝等方式優化了性能,當然可能依賴硬件。

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2010-09-08 15:11:36

TCP IP協議棧

2010-06-13 14:54:40

TCP IP協議棧linux

2014-10-15 09:14:24

IP

2021-07-09 08:55:23

LinuxTCPIP

2010-09-08 15:34:27

TCP IP協議棧

2010-09-08 15:24:28

TCP IP協議棧

2010-09-08 15:15:12

TCP IP協議棧

2010-09-27 13:25:58

TCP IP協議棧

2019-08-21 05:48:06

TCPIP協議棧

2022-06-27 08:59:21

數據包TCP/IP協議棧

2010-06-13 13:39:46

TCP IP協議棧

2021-07-06 21:29:16

TCPIP協議棧

2021-05-12 00:07:27

TCPIP協議

2020-12-03 08:37:38

TCPIPARP協議

2010-06-09 13:54:13

TCP傳輸協議

2014-11-21 09:16:23

TCPIP

2010-06-08 13:32:19

TCP IP協議基礎

2010-06-08 14:23:47

TCP IP協議概念

2020-07-09 08:14:43

TCPIP協議棧

2010-09-09 14:43:08

TCP IP協議棧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本三级日产三级国产三级 | 亚洲欧美在线观看 | 精品视频在线免费观看 | 青青久在线视频 | 国产精品视频一二三区 | 免费成人国产 | 国产精品视频一区二区三区, | 精品国产乱码久久久久久闺蜜 | 国产福利视频 | 黄网免费 | 亚洲毛片网站 | 欧美在线观看一区 | 久久www免费人成看片高清 | av黄在线观看 | 中文字幕亚洲在线 | 国产精品福利视频 | 成人在线免费视频 | 成人a在线观看 | av在线免费观看网站 | 国产精品亚洲一区二区三区在线 | 99热首页 | 久久久久国产视频 | 国产视频精品免费 | 日韩精品一区二区三区视频播放 | 久久久一| 黄色在线网站 | av毛片在线免费观看 | 亚洲三区在线观看 | 亚洲精品一区二区三区蜜桃久 | 亚洲视频在线免费观看 | 亚洲一区二区三区久久 | 一区中文字幕 | 国产精品视频播放 | 成人高清视频在线观看 | 亚洲精品乱码久久久久久按摩观 | 日韩视频免费 | 在线观看免费观看在线91 | 欧美精品久久久久久久久久 | 精品三级在线观看 | 国产综合精品一区二区三区 | 国产视频一区在线 |