精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲天堂偷拍| 中文亚洲av片在线观看| 91精品国产自产精品男人的天堂| 国产日韩成人精品| 国产日产亚洲精品| 鲁大师私人影院在线观看| 欧美aaa视频| 樱桃视频在线观看一区| 91在线免费看网站| 亚洲影院在线播放| 中文字幕一区二区三区久久网站| 精品视频在线播放色网色视频| 无码日韩人妻精品久久蜜桃| 黄色网在线播放| 成人丝袜18视频在线观看| 日韩av手机在线观看| 男人与禽猛交狂配| 少妇精品久久久一区二区三区| 欧美日韩亚洲综合| 黄色成人在线看| 秋霞成人影院| 国产亚洲午夜高清国产拍精品| 亚洲影院在线看| 无码免费一区二区三区| 欧美人成在线| 久久精品国产一区二区三区| av直播在线观看| 亚洲一二三区视频| 欧美性色综合网| 欧美久久久久久久久久久久久久| 又爽又大又黄a级毛片在线视频| 97国产一区二区| 国产精品入口麻豆原神| 久久精品视频在线观看| 丰满少妇高潮一区二区| 豆花视频一区二区| 日韩欧美综合在线| 182午夜视频| 亚洲a∨精品一区二区三区导航| 精品国产91乱高清在线观看| 成人av在线不卡| 91精选在线| 亚洲欧美色图小说| 二级片在线观看| 久草免费在线| 综合婷婷亚洲小说| 亚洲午夜精品一区二区三区| 欧美女优在线| 久久久亚洲午夜电影| 久久草.com| 人妻一区二区三区免费| 国产不卡视频一区二区三区| 91精品国产综合久久久久久丝袜 | 在线视频一区二区免费| 国产男女无遮挡| 国产高清不卡| 欧美在线观看视频在线| 一区二区三区视频在线观看免费| 亚洲精品.com| 欧美亚洲综合久久| 污污的视频免费| 91麻豆精品国产综合久久久| 91精品国产福利| ass极品水嫩小美女ass| 99精品中文字幕在线不卡| 欧美mv日韩mv| 你懂得在线视频| 夜夜躁狠狠躁日日躁2021日韩| 亚洲美女中文字幕| 人妻熟人中文字幕一区二区| 日韩精品免费| 欧美另类99xxxxx| 久久精品国产亚洲av高清色欲| 亚洲精品看片| 欧美中文字幕视频在线观看| 伊人成年综合网| 狠狠色丁香婷婷综合| 亚洲xxxxx电影| 高清乱码毛片入口| 久久久久久久av麻豆果冻| 日韩欧美精品一区二区三区经典| 精品麻豆一区二区三区| 亚洲国产一区二区视频| 波多野结衣家庭教师视频| 日本成人福利| 欧美成人综合网站| 一道本在线观看| 亚洲色图国产| 97热在线精品视频在线观看| 国产在线一级片| 狠狠色伊人亚洲综合成人| 国产亚洲欧美一区二区三区| 国产福利在线| 亚洲美女在线国产| 中文字幕无码精品亚洲35| 日韩在线观看不卡| 精品日韩一区二区三区免费视频| 中文字幕第4页| 欧美日韩国产一区精品一区| 欧洲成人在线视频| 超碰免费在线97| 久久精品一区二区三区四区| 国产91porn| 日韩毛片一区| 亚洲精品成人久久电影| 黄色录像二级片| 久久美女性网| 国产欧美综合精品一区二区| 精产国品自在线www| 欧美性猛交xxxx乱大交3| 天堂在线精品视频| 精品国产乱码久久久久久果冻传媒 | 国产在线视频不卡| 午夜视频免费在线| 亚洲欧美另类小说视频| 北条麻妃av高潮尖叫在线观看| 精品国产鲁一鲁****| 国产亚洲欧美视频| 日韩 国产 在线| 国产毛片一区二区| 三级三级久久三级久久18| 国产色播av在线| 91精品国产福利| 成人做爰视频网站| 久久亚洲图片| 免费试看一区| 国产无遮挡裸体视频在线观看| 91精品视频网| 视频国产一区二区| 日韩av不卡一区二区| 精品无码久久久久久久动漫| 性网站在线观看| 欧美日韩精品系列| 亚洲av人人澡人人爽人人夜夜| 久久视频在线| 韩日精品中文字幕| 欧日韩在线视频| 亚洲国产一区视频| 特级特黄刘亦菲aaa级| 午夜国产欧美理论在线播放| 国产精品国模在线| 户外极限露出调教在线视频| 日韩欧美国产成人| 国产特黄级aaaaa片免| 国产精品日本欧美一区二区三区| 精品日韩美女| 久久影院午夜精品| 日韩精品免费一线在线观看| 精品无码久久久久久久| 成人看片黄a免费看在线| 久久99国产精品一区| 国产电影一区| 欧美大片在线看免费观看| 性一交一乱一色一视频麻豆| 一区二区在线观看视频| 中文字幕永久免费| 一区精品久久| 蜜桃麻豆www久久国产精品| 国产高清视频色在线www| 日韩av影视综合网| 久草手机在线视频| 中文字幕欧美区| 污视频网址在线观看| 亚洲综合自拍| 国产视频在线观看一区| 日本在线啊啊| 中文日韩在线观看| 国产免费久久久| 亚洲国产日韩一区二区| 色天使在线视频| 日韩高清不卡一区二区三区| 亚洲欧洲一区二区在线观看| 日本精品在线观看| 韩剧1988免费观看全集| 女人18毛片水真多18精品| 亚洲sss视频在线视频| 国产交换配乱淫视频免费| 久久精品国产亚洲aⅴ| 影音先锋成人资源网站| 国产另类在线| 国产精品久久久久久久久免费| 欧美日本一道| 日韩视频在线一区二区| 国产精品自拍99| 国产精品欧美久久久久一区二区 | 精品一区二区三区四区五区| 韩国日本不卡在线| 成人影院免费观看| 精品国产91久久久久久久妲己 | 91精品国产欧美一区二区18| 91香蕉一区二区三区在线观看| 成人爱爱电影网址| 成人日韩在线视频| 国产亚洲福利| 色一情一乱一乱一区91| 一区三区在线欧| 国产女精品视频网站免费| 99色在线观看| 久久精品美女视频网站| 人人九九精品| 欧美成人性战久久| 亚洲性在线观看| 欧美午夜精品久久久久久久| 亚洲国产美女视频| 久久精品夜色噜噜亚洲aⅴ| 天天色天天干天天色| 天堂一区二区在线免费观看| 日韩中文字幕在线不卡| 日本欧美视频| 欧美精品一区二区视频| 999国产精品一区| 国产精品一区久久久| 神马午夜在线视频| 久久91精品国产91久久跳| 99re热久久这里只有精品34| 日韩电影中文字幕| 午夜精品久久久久久久96蜜桃 | 天堂在线资源网| 91精品国产色综合久久ai换脸| japanese国产在线观看| 欧美性极品xxxx娇小| 国产午夜激情视频| 亚洲精品第一国产综合野| 欧洲美一区二区三区亚洲| thepron国产精品| 国产xxx在线观看| 国产剧情一区二区三区| xx欧美撒尿嘘撒尿xx| 亚洲一区欧美二区| 黄色国产一级视频| 亚洲国产午夜| 91九色丨porny丨国产jk| 综合日韩在线| 红桃一区二区三区| 欧美国产精品| 天堂а√在线中文在线| 欧美 日韩 国产一区二区在线视频| 亚洲一区二区三区午夜| 日韩在线观看| 亚洲狠狠婷婷综合久久久| 成人激情在线| 亚洲一二区在线| 久久国产小视频| 最新欧美日韩亚洲| 日韩专区精品| 黄瓜视频免费观看在线观看www| 日韩欧美精品一区| 中文字幕色一区二区| 999视频精品| 热久久最新地址| 欧美日韩1080p| 国产人妻777人伦精品hd| 亚洲福利久久| 乱妇乱女熟妇熟女网站| 麻豆91精品| 色综合天天色综合| 看国产成人h片视频| 亚洲一区二区三区四区精品| 国产精品主播直播| 色哟哟无码精品一区二区三区| 成人国产精品免费观看动漫| 中文字幕日韩三级片| 日本一区二区三区dvd视频在线| 69xxx免费| 亚洲女人小视频在线观看| 久青草免费视频| 婷婷国产v国产偷v亚洲高清| 天堂中文在线网| 黑人巨大精品欧美一区二区免费| 波多野结衣一区二区三区在线| 欧美日韩激情一区二区| 国产美女主播在线观看| 欧美精品一区二区蜜臀亚洲| 欧洲成人av| 日韩亚洲欧美中文高清在线| 国产在线拍揄自揄拍视频| 欧美综合一区第一页| 免费在线不卡视频| 欧美三日本三级三级在线播放| 国产伦精品一区二区三区视频痴汉| 91精品国产一区二区三区| 午夜精品在线播放| 日韩一区二区免费在线电影| 亚洲特级黄色片| 亚洲电影第1页| 第三区美女视频在线| 欧美区二区三区| 成人av免费电影网站| 91久久久久久久久久久| 美女视频免费精品| 一级做a爰片久久| 亚洲视频碰碰| www.精品在线| 91亚洲精品久久久蜜桃网站 | 欧美怡春院一区二区三区| 香蕉av一区二区三区| 精品调教chinesegay| 国产在线69| 日韩av观看网址| 99精品中文字幕在线不卡| 亚洲电影网站| 一本色道精品久久一区二区三区| www.精品在线| 久久久高清一区二区三区| 麻豆亚洲av成人无码久久精品| 在线免费不卡电影| 久久久一二三四| 欧美大片91| 亚洲mv在线看| 国产精品一区毛片| 黄色激情在线视频| 日本不卡的三区四区五区| 污网站在线免费| 国产午夜亚洲精品不卡| 国产精品7777| 日韩一区二区三区av| 思思99re6国产在线播放| 2018中文字幕一区二区三区| 日韩一二三区| 综合久久国产| 天堂精品中文字幕在线| 国内外成人激情视频| 蜜桃免费网站一区二区三区| 波多野结衣福利| 亚洲福利视频一区二区| 韩国女同性做爰三级| 亚洲男人的天堂av| a毛片毛片av永久免费| 亚洲福利国产精品| 国产男人搡女人免费视频| 亚洲片av在线| 午夜影院一区| 久久久精品国产一区二区三区| 伊人狠狠色j香婷婷综合| 人妻体体内射精一区二区| 综合久久久久综合| 电影午夜精品一区二区三区| 国语精品视频| 国产精品欧美在线| 日韩成人午夜| 99热都是精品| 精品一区二区三区久久| 日韩精品在线播放视频| 久久午夜电影网| 午夜久久久久久久| 日本一区二区成人| 国产精品.www| 亚洲精品在线观| 99热精品在线播放| 欧美美女操人视频| 麻豆精品一区| 日本a在线天堂| 激情另类小说区图片区视频区| 欧美日韩午夜视频| 欧美本精品男人aⅴ天堂| 国产婷婷一区二区三区久久| 日韩精品亚洲视频| gogo亚洲高清大胆美女人体| 偷拍视频一区二区| 精彩视频一区二区三区| 欧美爱爱小视频| 亚洲精品一区二区三区香蕉| 女海盗2成人h版中文字幕| 精品久久久久久久久久| 久久这里只有精品9| 亚洲人成在线观看网站高清| 日韩av超清在线观看| 影音欧美亚洲| 丁香激情综合五月| 亚洲欧美综合自拍| 91精品国产麻豆| 美女欧美视频在线观看免费| 日韩免费精品视频| 999视频精品| 亚洲麻豆一区二区三区| 亚洲欧洲一区二区三区| 国产成人精品免费看视频| 国内精品一区二区三区| 亚洲小说图片| 成 年 人 黄 色 大 片大 全| 26uuu亚洲综合色| 亚洲婷婷久久综合| 欧美大片网站在线观看 | 亚洲大胆人体av| 亚洲va中文在线播放免费| 精品国产无码在线| 91色.com| 国产福利资源在线| 97精品在线观看| 天天射天天综合网| 国产黑丝一区二区| 欧美裸体一区二区三区| av网站在线不卡| 久久久噜噜噜久噜久久综合| 国产一区二区在线播放视频| 日韩在线视频免费观看| 粉嫩av国产一区二区三区| 国产男女在线观看| 亚洲国产精品成人综合色在线婷婷 | 亚洲国产激情|