精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我發(fā)現(xiàn) Linux 文檔寫錯(cuò)了,你發(fā)現(xiàn)了嗎?

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

大家好,我是小林。

周末的時(shí)候,有位讀者疑惑為什么 Linux man 手冊(cè)中關(guān)于 netstat 命令中的 tcp listen 狀態(tài)下的 Recv-Q 和 Send-Q 這兩個(gè)信息的描述跟我的圖解網(wǎng)絡(luò)寫的不一樣?

我看了源碼后,確認(rèn)了這個(gè) man 手冊(cè)寫的不對(duì)。沒想到 Linux 的 man 手冊(cè)也會(huì)出錯(cuò)。

首先,先給大家介紹下 netstat 命令。netstat 命令是查看網(wǎng)絡(luò)狀態(tài)很常見的 Linux 命令。比如,如果我們想查看系統(tǒng)中的進(jìn)程監(jiān)聽了哪些 TCP 端口,則可以使用下面這個(gè)命令 netstat -napt:

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

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

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

  • Recv-Q:如果 TCP 連接狀態(tài)處于 Established,Recv-Q 的數(shù)值表示接收緩沖區(qū)中還沒拷貝到應(yīng)用層的數(shù)據(jù)大小;如果 TCP 連接狀態(tài)處于 Listen 狀態(tài),Recv-Q 的數(shù)值表示當(dāng)前 syn 半連接隊(duì)列的大小(自內(nèi)核版本 2.6.18 起)
  • Send-Q:如果 TCP 連接狀態(tài)處于 Established,Send-Q的數(shù)值表示發(fā)送緩沖區(qū)中已發(fā)送但未被確認(rèn)的數(shù)據(jù)大小;如果 TCP 連接狀態(tài)處于 Listen 狀態(tài),Send-Q 的數(shù)值表示 syn 半連接隊(duì)列的容量(自內(nèi)核版本 2.6.18 起)。

而我通過查閱內(nèi)核 2.6.18 版本的源碼,得到的結(jié)論如下:

  • Recv-Q:如果 TCP 連接狀態(tài)處于 Established,Recv-Q 的數(shù)值表示接收緩沖區(qū)中還沒拷貝到應(yīng)用層的數(shù)據(jù)大小;如果 TCP 連接狀態(tài)處于 Listen 狀態(tài),Recv-Q 的數(shù)值表示當(dāng)前 syn 半連接隊(duì)列的大小 當(dāng)前全連接隊(duì)列的大小;
  • Send-Q:如果 TCP 連接狀態(tài)處于 Established,Send-Q的數(shù)值表示發(fā)送緩沖區(qū)中已發(fā)送但未被確認(rèn)的數(shù)據(jù)大小;如果 TCP 連接狀態(tài)處于 Listen 狀態(tài),Send-Q 的數(shù)值表示 syn 半連接隊(duì)列的容量

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

什么是 TCP 半連接隊(duì)列和全鏈接隊(duì)列?

在 TCP 三次握手的時(shí)候,Linux 內(nèi)核會(huì)維護(hù)兩個(gè)隊(duì)列,分別是:

  • 半連接隊(duì)列,也稱 SYN 隊(duì)列;
  • 全連接隊(duì)列,也稱 accept 隊(duì)列;

服務(wù)端收到客戶端發(fā)起的 SYN 請(qǐng)求后,內(nèi)核會(huì)把該連接存儲(chǔ)到半連接隊(duì)列,并向客戶端響應(yīng) SYN+ACK,接著客戶端會(huì)返回 ACK,服務(wù)端收到第三次握手的 ACK 后,內(nèi)核會(huì)把連接從半連接隊(duì)列移除,然后創(chuàng)建新的完全的連接,并將其添加到全連接隊(duì)列,等待進(jìn)程調(diào)用 accept 函數(shù)時(shí)把連接取出來。

如果你想知道 TCP 半連接和全連接溢出會(huì)發(fā)生什么?可以看看這篇文章:TCP 半連接隊(duì)列和全連接隊(duì)列滿了會(huì)發(fā)生什么?又該如何應(yīng)對(duì)?

源碼分析

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

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

有一個(gè)網(wǎng)站可以在線看 Linux 內(nèi)核代碼:https://elixir.bootlin.com/,每個(gè)內(nèi)核版本的代碼都有,平常我都是在這里看。

這次,我們選擇內(nèi)核版本為 2.6.18 查看 tcp4_seq_show() 函數(shù)的實(shí)現(xiàn),如下:

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 連接狀態(tài)為 ESTABLISHED 和 LISTENING 時(shí)打印的信息,所以接下來看 get_tcp4_sock 函數(shù)。

get_tcp4_sock 函數(shù)中,打印信息的代碼如下:

我在圖中標(biāo)紅了兩行代碼,這兩行代碼分別是 Recv-Q 和 Send-Q 的數(shù)據(jù)。

我單獨(dú)把這兩行代碼抽了出來:

// Send-Q 打印的數(shù)據(jù)
tp->write_seq - tp->snd_una,

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

可以看到, 不管 TCP 連接狀態(tài)是什么, Send-Q 都是發(fā)送緩沖區(qū)中已發(fā)送但未被確認(rèn)的數(shù)據(jù)大小。

然后針對(duì) Recv-Q ,在 TCP 連接狀態(tài)為 LISTEN 時(shí),打印的是 sk_ack_backlog 的值。

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

下面這個(gè)是判斷全連接隊(duì)列是否溢出的函數(shù):

可以得知,sk_ack_backlog 其實(shí)是當(dāng)前全連接隊(duì)列的大小,也就是經(jīng)歷三次握手后等待被應(yīng)用層 accpet() 的連接的數(shù)量。

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

  • netstat 命令中的 Recv-Q:如果 TCP 連接狀態(tài)處于 Established,Recv-Q 的數(shù)值表示接收緩沖區(qū)中還沒拷貝到應(yīng)用層的數(shù)據(jù)大小;如果 TCP 連接狀態(tài)處于 Listen 狀態(tài),Recv-Q 的數(shù)值表示當(dāng)前全連接隊(duì)列的大小;
  • netstat 命令中的 Send-Q:表示發(fā)送緩沖區(qū)中已發(fā)送但未被確認(rèn)的數(shù)據(jù)大小(不管 TCP 是 Listen 狀態(tài)還是 Established 狀態(tài)都表示這個(gè)意思);

好了,至此就分析完了。

最后

看到這,大家肯定會(huì)說:小林你太強(qiáng)了吧,為什么對(duì) Linux 內(nèi)核源碼那么熟,這都能分析出來。

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

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

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

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

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

責(zé)任編輯:武曉燕 來源: 小林coding
相關(guān)推薦

2024-05-20 08:25:55

2022-03-01 21:05:39

TCP網(wǎng)絡(luò)協(xié)議

2020-09-01 10:32:52

iOS微信新功能

2022-04-18 07:42:31

配置機(jī)制Spring

2020-04-14 15:30:00

微信群管理朋友圈

2014-08-21 14:49:32

MIUI 6

2018-07-12 14:03:33

區(qū)塊鏈新零售電子商務(wù)

2023-06-24 23:11:07

2024-11-05 09:47:08

VGG網(wǎng)絡(luò)模型

2021-08-19 15:05:08

微信功能技巧

2024-06-03 11:43:55

2020-04-01 08:40:44

Vue.jsweb開發(fā)

2022-03-18 11:50:06

AI模型GPT-3

2023-06-20 08:01:09

RoseDB存儲(chǔ)數(shù)據(jù)

2021-08-10 22:52:49

微信功能工具

2020-05-18 08:42:23

CSS背景圖像前端開發(fā)

2021-02-23 09:06:00

MVCC版本并發(fā)

2021-07-10 07:40:27

Excel數(shù)據(jù)分析大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产福利视频在线播放| 国产精品免费视频xxxx| 天天干天天曰天天操| 黄色成人在线网| 国产成人免费视频网站高清观看视频| 欧美国产日本高清在线| 成人h动漫精品一区| 精品久久在线| 欧美日韩精品国产| 一区二区三区电影| 人妻无码中文字幕| 蜜桃av噜噜一区| 久久久久久成人| 国产jjizz一区二区三区视频| 91精品福利观看| 日韩欧美福利视频| 久草视频这里只有精品| 91在线高清| 99久久夜色精品国产网站| 国产精品专区第二| 亚洲另类欧美日韩| 91精品国产调教在线观看| 亚洲精品午夜精品| 国产sm在线观看| 日韩久久一区| 91国产视频在线观看| 日日骚欧美日韩| 日韩av在线导航| 真实乱偷全部视频| 久久人体av| 在线视频亚洲一区| 日批视频在线免费看| 女囚岛在线观看| 亚洲欧美综合另类在线卡通| 欧美一区二区三区在线播放| 少妇一区二区三区四区| 国产精品小仙女| 成人午夜小视频| 一级久久久久久久| 日本亚洲三级在线| 国产成人精品久久久| 久久久久99精品成人片三人毛片| 欧美午夜在线视频| 欧美国产日韩一区二区在线观看 | 国产精品123区| 国产日韩欧美日韩大片| 国产一区二区视频免费| 久久精品123| 国产成人精品一区二区三区| 精品在线播放视频| 亚洲经典三级| 91av在线网站| 色一情一乱一伦| 老鸭窝毛片一区二区三区| 青青草精品毛片| 亚洲国产成人无码av在线| 99riav国产精品| 欧美有码在线观看| 天天天天天天天干| 久久精品国产一区二区| 国产日韩欧美91| 国产色片在线观看| 国产999精品久久| 国产久一道中文一区| 日本美女一级视频| 91麻豆.com| 亚洲精品视频一二三| 蜜桃视频网站在线| 亚洲最大的成人av| 能在线观看的av| 日韩欧美精品电影| 日韩免费特黄一二三区| 欧美日韩亚洲系列| 我看黄色一级片| av日韩一区| 亚洲第一精品夜夜躁人人躁| 欧美大片免费播放器| 狠狠做六月爱婷婷综合aⅴ| 日韩中文理论片| 希岛爱理中文字幕| 99在线|亚洲一区二区| 热久久这里只有| 一区二区三区午夜| 成人免费va视频| 日本一区高清在线视频| 国产在线更新| 天天综合网天天综合色| 三级a在线观看| 亚洲国产aⅴ精品一区二区三区| 欧美一二三四在线| 久久亚洲AV成人无码国产野外| 久久免费精品| 亚洲女人天堂视频| 欧美黑人猛猛猛| 久久久久久夜| 99精品国产高清在线观看| 亚洲av片一区二区三区| 中文字幕在线不卡| 免费高清在线观看免费| 亚洲精品伊人| 国产丝袜一区二区三区| 中文字幕电影av| 久久国产精品亚洲77777| 成人激情视频网| 六十路在线观看| 一区二区三区在线不卡| 91淫黄看大片| 精品少妇一区| 超碰精品一区二区三区乱码| 日本韩国欧美中文字幕| 日韩电影免费网站| 欧美人成在线视频| 男人天堂视频在线| 成人综合婷婷国产精品久久蜜臀| 日韩久久精品一区二区三区| 色婷婷在线播放| 欧美日韩视频在线一区二区| 女同性恋一区二区三区| 亚洲欧洲日韩| 国产精品久久久久久久久久| 免费的黄色av| 亚洲精品一区二区三区蜜桃| 成人手机电影网| 一区二区三区四区视频在线 | 久久琪琪电影院| 国产精品久久久午夜夜伦鲁鲁| 91小视频在线免费看| 大地资源网在线观看免费官网| 成人开心激情| 亚洲人成网站999久久久综合| www.99re7.com| 国产精品自在在线| 在线观看视频黄色| 久久精品国产福利| 伊人伊成久久人综合网站| 欧美精品二区三区| 91在线小视频| 国产毛片视频网站| 看全色黄大色大片免费久久久| 欧美精品在线播放| 99久久久国产精品无码免费| 国产欧美日韩一区二区三区在线观看| 欧美亚洲一二三区| 西瓜成人精品人成网站| 91精品国产高清| 五月婷婷免费视频| 天天av天天翘天天综合网色鬼国产| 中文字幕无人区二| 精品9999| 精品一区二区国产| 在线手机中文字幕| 亚洲人成电影在线播放| 国产一级免费视频| 国产午夜精品久久久久久免费视 | 国产河南妇女毛片精品久久久| 在线观看国产一区| 国产一区二区三区| 欧美高清在线视频观看不卡| 亚洲精品字幕在线| 精品国产电影一区| 欧洲女同同性吃奶| 免费看欧美美女黄的网站| 亚洲精品国产一区| 日本免费一区二区视频| 欧美精品福利在线| 日韩大胆人体| 在线观看精品一区| xxxx日本少妇| 成人激情av网| 成人性做爰aaa片免费看不忠| 日韩精品一区二区三区免费观看| 亚洲午夜极品| 91精品国产99久久久久久| 日韩大片b站免费观看直播| 91福利精品第一导航| 黄色免费一级视频| 国产成人免费视频网站高清观看视频| 日本午夜激情视频| 精品久久久久中文字幕小说| 成人黄色免费片| 999福利在线视频| 国产一区二区动漫| 国产a级免费视频| 欧美日韩国产一区二区| 久久久久久成人网| 国产69精品久久777的优势| 丰满少妇被猛烈进入高清播放| 成人在线免费观看视频| 1区1区3区4区产品乱码芒果精品| 免费成人在线电影| 中日韩美女免费视频网站在线观看 | 一区二区三区在线| 蜜桃成人在线| 久久在线观看| 国产成人精品视| 污网站在线免费看| 国产香蕉一区二区三区在线视频 | 无码专区aaaaaa免费视频| 精品免费视频| 国产日韩在线一区二区三区| 成人网ww555视频免费看| 久久91亚洲精品中文字幕| 黄色在线视频观看网站| 日韩精品中文字幕在线一区| 欧美brazzers| 精品电影在线观看| 丝袜美腿小色网| 天天色天天射天天综合网| 精品久久久久久电影| 亚洲一二三在线观看| 91香蕉国产在线观看软件| 污污视频在线免费| 日本不卡123| 波多野结衣50连登视频| 欧美精品三区| 性做爰过程免费播放| 国产一区二区三区站长工具| 国产日韩一区二区三区| 国产精一区二区| 国产精品欧美一区二区| 亚洲妇女成熟| 性欧美激情精品| 男女在线视频| 欧美大奶子在线| 久草中文在线| 视频在线一区二区| 国产资源在线观看| 国产视频亚洲精品| 无码精品一区二区三区在线| 日韩精品一区二| 国产黄色一区二区| 欧美老女人在线| 中文字幕在线视频第一页| 色偷偷88欧美精品久久久| 日韩字幕在线观看| 亚洲成人自拍一区| 国产在线观看成人| 亚洲午夜免费视频| 久久免费视频6| 亚洲一级二级三级在线免费观看| 日韩在线视频网址| 亚洲美女免费在线| 卡通动漫亚洲综合| 一区二区三区小说| 日韩激情一区二区三区| 一区二区三区精品久久久| 亚洲国产精品免费在线观看| 亚洲人123区| 青青草精品在线视频| 一区二区三区欧美| 久热这里只有精品在线| 亚洲午夜视频在线| 国产精品21p| 欧美艳星brazzers| 一本一道精品欧美中文字幕| 欧美精品在欧美一区二区少妇| 国产精品毛片久久久久久久av| 在线播放欧美女士性生活| av中文字幕免费在线观看| 欧美大片国产精品| 免费观看黄色av| 亚洲老板91色精品久久| 国产一区二区影视| 日韩一区二区三区国产| 免费超碰在线| 欧美激情喷水视频| 天堂av在线| 国产精品三级网站| 经典三级久久| 精品成人免费观看| 午夜影院福利社| 成人福利视频网站| 天天躁夜夜躁狠狠是什么心态 | 永久免费看mv网站入口| 亚洲美女免费在线| 亚洲 欧美 日韩 综合| 色噜噜狠狠成人网p站| 一级片免费观看视频| 欧美成人女星排行榜| 天天综合在线视频| 中文字幕免费精品一区高清| aa在线视频| 欧美洲成人男女午夜视频| 国产精品.xx视频.xxtv| 99在线国产| 国内精品久久久久久久影视简单| 国产又粗又硬又长| 国产精品久久久久久久久久妞妞| 欧美午夜aaaaaa免费视频| 高清不卡一区二区在线| 91久久免费视频| 亚洲免费在线视频一区 二区| 天堂网一区二区三区| 欧美日韩国产bt| 天堂а在线中文在线无限看推荐| 人人精品久久| 日本三级久久久| 欧美成年网站| 日本中文不卡| 亚洲欧洲视频| 亚洲一区二区福利视频| 99国产欧美另类久久久精品| sm捆绑调教视频| 色婷婷综合中文久久一本| 亚洲经典一区二区| 中文字幕日韩av| 中文在线8资源库| 99国产高清| 一区二区三区午夜视频| 亚洲精品视频导航| 97精品久久久久中文字幕| 欧美日韩在线视频免费播放| 91福利在线观看| 亚洲av毛片成人精品| 欧美激情一级二级| 成人黄色理论片| 日韩欧美在线观看强乱免费| 99成人在线| 精品人妻人人做人人爽夜夜爽| 国产精品丝袜久久久久久app| 亚洲免费在线观看av| 日韩欧美亚洲国产精品字幕久久久| 国产免费av高清在线| 午夜精品久久久久久久99热浪潮| 国产精品一区二区精品| 亚洲精美视频| 日本亚洲三级在线| 影音先锋男人在线| 91久久精品网| 免费黄色在线视频网站| 26uuu另类亚洲欧美日本一| av成人app永久免费| 米仓穗香在线观看| 国产一区二区不卡在线| 国产精品久久国产精麻豆96堂| 91国偷自产一区二区使用方法| 天天爽夜夜爽夜夜爽| 高清一区二区三区四区五区| 一区二区三区四区精品视频| 三级在线免费观看| 国产一区二区在线观看免费| 黄色录像免费观看| 欧美一区二区啪啪| 伊人电影在线观看| 91在线高清视频| 欧美日本亚洲韩国国产| 樱花草www在线| 亚洲精品久久7777| 性色av蜜臀av| 国a精品视频大全| 小说区图片区色综合区| 日韩在线xxx| 国产精品人人做人人爽人人添 | 日韩精品视频网站| 亚洲ⅴ国产v天堂a无码二区| 欧美日精品一区视频| 三区四区电影在线观看| 91老司机在线| 午夜久久久久| 亚洲av永久无码精品| 日韩欧美中文字幕在线播放| 男人的天堂在线视频| 国产精品欧美在线| 天天综合一区| 亚洲精品无码一区二区| 偷拍日韩校园综合在线| 嫩草研究院在线观看| 国产精品视频网址| 欧美一区成人| 中国xxxx性xxxx产国| 色老汉一区二区三区| 色三级在线观看| 国产成人免费观看| 香蕉久久夜色精品国产| 亚洲精品国产精品国自产网站| 欧美日韩国产免费一区二区| 亚洲wwwww| 日本不卡久久| 国产精品一区免费视频| 成人精品在线看| 色偷偷91综合久久噜噜| 国产精品男女| 91色国产在线| 午夜免费久久看| 在线免费观看黄| 国语精品中文字幕| 免费在线观看精品| 精品午夜福利在线观看| 亚洲欧洲av一区二区| 国产精品日本一区二区三区在线| 欧美一级在线看| 亚洲精品第1页| 成年人视频在线免费观看| 动漫3d精品一区二区三区 | 久久精品青草| 日本免费福利视频| 91麻豆精品国产91久久久久| 涩涩视频在线播放| 日韩video| 中文字幕精品—区二区四季|