国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

我發現 Linux 文檔寫錯了,你發現了嗎?

系統 Linux
netstat 工具在獲取 TCP 連接的信息的時候,實際上是讀取了 /proc/net/tcp 文件里的數據,而這個文件的數據是由內核由 net/ipv4/tcp_ipv4.c 文件中的 tcp4_seq_show() 函數打印的。

大家好,我是小林。

周末的時候,有位讀者疑惑為什么 Linux man 手冊中關于 netstat 命令中的 tcp listen 狀態下的 Recv-Q 和 Send-Q 這兩個信息的描述跟我的圖解網絡寫的不一樣?

我看了源碼后,確認了這個 man 手冊寫的不對。沒想到 Linux 的 man 手冊也會出錯。

首先,先給大家介紹下 netstat 命令。netstat 命令是查看網絡狀態很常見的 Linux 命令。比如,如果我們想查看系統中的進程監聽了哪些 TCP 端口,則可以使用下面這個命令 netstat -napt:

接下來,小林帶大家分析,為什么我說 man 手冊寫錯了 netstat 命令中 Recv-Q 和 Send-Q 的描述?

疑惑提出讀者提出的疑惑:

我先給大家翻譯一下,man 手冊(https://man7.org/linux/man-pages/man8/netstat.8.html)是怎么說的:

  • Recv-Q:如果 TCP 連接狀態處于 Established,Recv-Q 的數值表示接收緩沖區中還沒拷貝到應用層的數據大小;如果 TCP 連接狀態處于 Listen 狀態,Recv-Q 的數值表示當前 syn 半連接隊列的大小(自內核版本 2.6.18 起)
  • Send-Q:如果 TCP 連接狀態處于 Established,Send-Q的數值表示發送緩沖區中已發送但未被確認的數據大小;如果 TCP 連接狀態處于 Listen 狀態,Send-Q 的數值表示 syn 半連接隊列的容量(自內核版本 2.6.18 起)。

而我通過查閱內核 2.6.18 版本的源碼,得到的結論如下:

  • Recv-Q:如果 TCP 連接狀態處于 Established,Recv-Q 的數值表示接收緩沖區中還沒拷貝到應用層的數據大小;如果 TCP 連接狀態處于 Listen 狀態,Recv-Q 的數值表示當前 syn 半連接隊列的大小 當前全連接隊列的大小;
  • Send-Q:如果 TCP 連接狀態處于 Established,Send-Q的數值表示發送緩沖區中已發送但未被確認的數據大小;如果 TCP 連接狀態處于 Listen 狀態,Send-Q 的數值表示 syn 半連接隊列的容量

上面被我劃掉的部分,就是我與 man 手冊差異的地方。

什么是 TCP 半連接隊列和全鏈接隊列?

在 TCP 三次握手的時候,Linux 內核會維護兩個隊列,分別是:

  • 半連接隊列,也稱 SYN 隊列;
  • 全連接隊列,也稱 accept 隊列;

服務端收到客戶端發起的 SYN 請求后,內核會把該連接存儲到半連接隊列,并向客戶端響應 SYN+ACK,接著客戶端會返回 ACK,服務端收到第三次握手的 ACK 后,內核會把連接從半連接隊列移除,然后創建新的完全的連接,并將其添加到全連接隊列,等待進程調用 accept 函數時把連接取出來。

如果你想知道 TCP 半連接和全連接溢出會發生什么?可以看看這篇文章:TCP 半連接隊列和全連接隊列滿了會發生什么?又該如何應對?

源碼分析

netstat 工具在獲取 TCP 連接的信息的時候,實際上是讀取了 /proc/net/tcp 文件里的數據,而這個文件的數據是由內核由 net/ipv4/tcp_ipv4.c 文件中的 tcp4_seq_show() 函數打印的。

所以,我們直接看 tcp4_seq_show() 函數是根據什么信息打印出 Recv-Q 和 Send-Q 的數據。

有一個網站可以在線看 Linux 內核代碼:https://elixir.bootlin.com/,每個內核版本的代碼都有,平常我都是在這里看。

這次,我們選擇內核版本為 2.6.18 查看 tcp4_seq_show() 函數的實現,如下:

static int tcp4_seq_show(struct seq_file *seq, void *v)
{
.....

switch (st->state) {
case TCP_SEQ_STATE_LISTENING:
case TCP_SEQ_STATE_ESTABLISHED:
get_tcp4_sock(v, tmpbuf, st->num);
break;
.......
}
...
return 0;
}

我們只分析 tcp 連接狀態為 ESTABLISHED 和 LISTENING 時打印的信息,所以接下來看 get_tcp4_sock 函數。

get_tcp4_sock 函數中,打印信息的代碼如下:

我在圖中標紅了兩行代碼,這兩行代碼分別是 Recv-Q 和 Send-Q 的數據。

我單獨把這兩行代碼抽了出來:

// Send-Q 打印的數據
tp->write_seq - tp->snd_una,

//Recv-Q 打印的數據
(sp->sk_state == TCP_LISTEN) ? sp->sk_ack_backlog : (tp->rcv_nxt - tp->copied_seq),

可以看到, 不管 TCP 連接狀態是什么, Send-Q 都是發送緩沖區中已發送但未被確認的數據大小。

然后針對 Recv-Q ,在 TCP 連接狀態為 LISTEN 時,打印的是 sk_ack_backlog 的值。

那 sk_ack_backlog 的值代表什么意思呢?

下面這個是判斷全連接隊列是否溢出的函數:

可以得知,sk_ack_backlog 其實是當前全連接隊列的大小,也就是經歷三次握手后等待被應用層 accpet() 的連接的數量。

所以,從上面的源碼分析過,得到的結論如下:

  • netstat 命令中的 Recv-Q:如果 TCP 連接狀態處于 Established,Recv-Q 的數值表示接收緩沖區中還沒拷貝到應用層的數據大小;如果 TCP 連接狀態處于 Listen 狀態,Recv-Q 的數值表示當前全連接隊列的大小;
  • netstat 命令中的 Send-Q:表示發送緩沖區中已發送但未被確認的數據大小(不管 TCP 是 Listen 狀態還是 Established 狀態都表示這個意思);

好了,至此就分析完了。

最后

看到這,大家肯定會說:小林你太強了吧,為什么對 Linux 內核源碼那么熟,這都能分析出來。

其實,我并沒有熟讀過 Linux 內核源碼啦,其實只要大家有好奇心,其實你也能分析出來。

我也是通過網上的資料,一點一點分析出來的,并不是直接就在內核源碼里查,不然那真是大海撈針。

我是這樣一步一步查資料分析的:

  • 先網上查下 netstat 源碼,看是根據什么信息打印 Send-Q 和 Recv-Q,然后看到網上有人說是讀 /proc/net/tcp 這個文件;
  • 接著,就網上查 /proc/net/tcp 這個文件是怎么打印的,然后看到網上有人說是由 net/ipv4/tcp_ipv4.c 文件中的 tcp4_seq_show() 函數打印的;
  • 最后,再自己去看 tcp4_seq_show 函數的實現,這個函數的代碼也不多,就幾十行,所以很容易就分析出來了。

你看,其實我也是通過「搜索」一步一步分析出來的,其實并沒有什么難度。

責任編輯:武曉燕 來源: 小林coding
相關推薦

2024-05-20 08:25:55

2022-03-01 21:05:39

TCP網絡協議

2022-04-18 07:42:31

配置機制Spring

2020-09-01 10:32:52

iOS微信新功能

2020-04-14 15:30:00

微信群管理朋友圈

2014-08-21 14:49:32

MIUI 6

2018-07-12 14:03:33

區塊鏈新零售電子商務

2023-06-24 23:11:07

2024-11-05 09:47:08

VGG網絡模型

2021-08-19 15:05:08

微信功能技巧

2020-04-01 08:40:44

Vue.jsweb開發

2024-06-03 11:43:55

2022-03-18 11:50:06

AI模型GPT-3

2021-08-10 22:52:49

微信功能工具

2023-06-20 08:01:09

RoseDB存儲數據

2020-05-18 08:42:23

CSS背景圖像前端開發

2021-02-23 09:06:00

MVCC版本并發

2021-07-10 07:40:27

Excel數據分析大數據
點贊
收藏

51CTO技術棧公眾號

国内精品久久久久久久| 天堂美国久久| 免费美女久久99| 日韩精品中文字幕视频在线| 97超碰在线视| 99精品视频一区| 日韩一区二区高清视频| 2019年精品视频自拍| 精品影院一区二区久久久| 欧美另类网站| 粉嫩av一区二区| 日韩av综合网站| 欧美大片免费高清观看| 欧美日韩精品一区二区天天拍小说| 一本一生久久a久久精品综合蜜| 午夜av成人| 欧美国产激情二区三区| 成人精品久久av网站| 久久久资源网| 日本系列欧美系列| 天堂av一区二区| 亚洲日本视频| 日本国产精品视频| √最新版天堂资源网在线| 中文字幕不卡在线观看| 亚洲xxx视频| 日韩肉感妇bbwbbwbbw| 久久精品视频观看| 国产视频一区在线观看| 久久亚洲免费| 伦理一区二区| 日韩三级在线观看| 91福利国产成人精品照片| 精品乱子伦一区二区三区| 香蕉久久夜色精品国产使用方法| 久久免费成人精品视频| 亚州精品国产| 欧美精品激情在线| 怡红院在线播放| 亚洲天堂开心观看| 色在线中文字幕| 色偷偷噜噜噜亚洲男人| 欧美日韩伦理一区二区| 亚洲女人被黑人巨大进入al| 无码少妇一区二区三区| 免费看成人午夜电影| 欧美午夜精品一区二区三区电影| 久久久久一区二区三区| 美女视频一区二区三区| 日韩欧美一级二级三级久久久| 亚洲mv在线| 亚洲国产日韩综合久久精品| 激情五月俺来也| 国产精品传媒视频| 色琪琪丁香婷婷综合久久| 96精品久久久久中文字幕| 久久高清精品| 日韩av手机在线看| 亚洲欧美日韩在线不卡| 女人和拘做爰正片视频| 9久草视频在线视频精品| 中文字幕日本最新乱码视频| 成人丝袜视频网| 女性女同性aⅴ免费观女性恋| 2023国产精品视频| 妞干网在线观看视频| 国产视频不卡一区| jizzjizzjizz亚洲日本| 一区二区三区精品在线观看| 狠狠狠综合7777久夜色撩人| 91精品国产麻豆| 日韩av福利| 午夜精品久久久久久久99热 | 91精品91久久久中77777| 九一在线视频| 51午夜精品国产| 成人亚洲欧美| 国产69精品99久久久久久宅男| 免费黄色成人| 国产丝袜不卡| 国产一区二区在线视频| 老熟妇仑乱视频一区二区| 中文字幕亚洲成人| 日韩精品视频无播放器在线看 | www.26天天久久天堂| 久久久av网站| 免费看日本一区二区| 久久精品女人的天堂av| 精品一区二区影视| 亚洲色图久久久| 欧美视频在线免费| 欧美一区久久久| 人人爽久久涩噜噜噜网站| 久久亚洲国产精品一区二区| 男女av免费观看| 日本福利一区二区| 四虎国产精品免费久久| 国产精品日日做人人爱| 国产在线精品国自产拍免费| 免费观看一二区视频网站| 亚洲精品一区在线观看| 无码日韩精品一区二区免费| 日韩av高清| 亚洲美女视频在线观看| 中文字幕在线观看播放| 久久久噜噜噜久久| 日日摸夜夜添夜夜添精品视频 | 国产在线观看一区| 国产麻豆精品在线观看| 在线观看视频免费| 亚洲精品一区二区网址| 成人羞羞动漫| 台湾无码一区二区| 色婷婷精品大视频在线蜜桃视频| 欧美va视频| 国产一区二区三区高清| 亚洲国产精品t66y| bl视频在线免费观看| 国产综合视频在线观看| 91在线视频网址| 免费观看久久久久| 国产99视频精品免视看7| 国产精品一区二区三区网站| 男女网站在线观看| 91国内揄拍国内精品对白| 久久66热偷产精品| 国产福利在线看| 日本亚洲欧洲色α| 波多野洁衣一区| sqte在线播放| 国产一区免费观看| 午夜一区二区三区视频| 91麻豆精品激情在线观看最新| 日本一本草久p| 日韩久久精品一区| 亚洲三级影院| 免费在线黄色电影| 成人福利在线观看| 亚洲精品午夜久久久| 午夜电影一区| 日韩激情免费视频| 一本大道久久加勒比香蕉| 麻豆成人综合网| 久久bbxx| 欧美国产一区二区在线| 欧美日韩一区中文字幕| 亚洲成人精选| 免费一区二区三区在线观看| 日韩在线视频观看正片免费网站| 日av在线不卡| 中文av资源在线| 国产精品专区第二| 国产午夜精品在线观看| 精品三级久久| 午夜老司机精品| 欧美在线一区二区| 日韩.com| 能在线观看av网站| 国产激情久久久久| 国产精品青草久久| 91成人在线精品视频| 波多野结衣综合网| 日韩电视剧免费观看网站| 国产精品一二| 免费成人黄色| 久久国产精品久久精品国产| 欧美在线短视频| 国产精品观看| 美州a亚洲一视本频v色道| 成人h视频在线观看播放| 亚洲成人在线免费| 99精品电影| 偷拍25位美女撒尿视频在线观看| 91嫩草在线| 欧美影院精品一区| 亚洲福利久久| 91在线观看| 国产精品久久久久久久一区探花| 亚洲成人第一页| 亚洲精品一区二区妖精| 毛片网站在线观看| 国产精品对白刺激久久久| 91福利在线播放| 亚洲永久字幕| a√中文在线观看| 50度灰在线观看| 久久精品视频在线| 中文字幕一区二区三区在线不卡| 免费成人三级| 中文字幕校园春色| 成人福利在线观看| 精品福利视频一区二区三区| 蜜桃在线一区二区三区| 欧美电影网站| 久久精品视频91| 成人免费看片视频| 91精品国产综合久久精品图片 | 最新的欧美黄色| 男女激情免费视频| 国产私拍精品|