久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区

被印證的感覺,真爽!
來源:小林coding    時間:2022-02-27 13:54:45

大家好,我是小林。

之前我在公眾號解答了一位讀者面試騰訊的面試題,問題如下:

針對這個問題,我也沒辦法用實驗來驗證我的結論,所以當時結論是基于啃 TCP 源碼得出來的。

但是,就在昨天!

有位讀者在工作中抓到跟這個面試題場景類似的抓包圖,我看了下,現象跟我之前啃 TCP 源碼得出的結論是符合的。

這種被印證的感覺真爽!

我覺得這個案例還是挺有意思的,因為很好的說明是 TCP 傳輸協議是按序接收的。

所以,先來回顧騰訊一面的這個問題,再來看看跟這個問題相似的抓包圖。

回顧問題

這道鵝廠的網絡題可能是提問的讀者表述有問題。

因為如果 FIN 報文比數據包先抵達客戶端,此時 FIN 報文其實是一個亂序的報文,此時客戶端的 TCP 連接并不會從 FIN_WAIT_2 狀態轉換到 TIME_WAIT 狀態。

因此,我們要關注到點是看「在 FIN_WAIT_2 狀態下,是如何處理收到的亂序的 FIN 報文,然后 TCP 連接又是什么時候才進入到 TIME_WAIT 狀態?」。

我這里先直接說結論:

在 FIN_WAIT_2 狀態時,如果收到亂序的 FIN 報文,那么就被會加入到內核中的「亂序隊列」,并不會進入到 TIME_WAIT 狀態。

等再次收到前面被網絡延遲的數據包時,會判斷亂序隊列有沒有數據,然后會檢測亂序隊列中是否有可用的數據,如果能在亂序隊列中找到與當前報文的序列號保持的順序的報文,就會看該報文是否有 FIN 標志,如果發現有 FIN 標志,這時才會進入 TIME_WAIT 狀態。

我也畫了一張圖,大家可以結合著圖來理解。

神一般的抓包圖

下圖是昨天一位讀者發給我的抓包圖,圖中的異常情況,跟前面這個問題的現象有點類似:

你可能會有疑問為什么 TCP 握手時,雙方的 seq 都是 0 開始的?這個是抓包圖做了優化,顯示的是相對值,而不是真實值,顯示相對值方便分析。

為了方便文字描述,我針對異常部分的報文進行編號如下:

圖中端口號為 11710 的為客戶端,端口號為 8080 的為服務端。另外,編號 4 是客戶端發送的 http 請求,抓包圖沒有顯示 TCP 信息,這里文字補充下:編號 4 數據報文 seq = 1,ack = 1,len = 27。

編號 6 是 FIN 報文,也就是服務端向客戶端發送的 FIN 報文(第一次揮手),但是是一個亂序的 FIN 報文,因為從編號 4 報文中的 ack = 1 知道,客戶端期望下一次收到的報文的序列號為 1,而當前收到的 FIN 報文的 seq = 177,這并不是客戶端下一次期望收到的報文,所以是亂序的。

客戶端收到亂序 FIN 報文后,并不會從 establish 轉為 close_wait 狀態,而是把這個亂序的 FIN 報文放到內核中的亂序隊列。因為如果這時候就進入了 close_wait 狀態,就會馬上發送 FIN 報文了(第三次揮手),而不會有客戶端后面發送的編號 8 和 9 報文的事情了。

編號 8 是應答報文,是客戶端對編號 6 亂序 FIN 報文的應答報文,可以看到這個應答報文中 seq = 28,ack=1,因為并不是我期望的下一個報文,所以應答報文中 ack 還是為 1。

編號 7 是數據報文,也就是服務端向客戶端發送的數據報文,該報文 seq = 1,ack=28,len=176,因為 seq 為 1,所以是客戶端期望收到的報文??蛻舳耸盏皆搱笪暮?,就回了編號 9 應答報文,此應答報文 seq = 28,ack = 178,其中 ack = 178 是告訴服務端:“你發的 seq = 178 之前(不包括seq=178)的報文,我都收到了,我下次期望收到的報文的 seq 為 178”。

客戶端收到編號 7 數據報文時還會做一件事情,會檢測「亂序隊列」中是否有可用的數據,如果能在亂序隊列中找到與當前收到報文的序列號「保持的順序」的報文,就把處于亂序隊列的報文移到可以被正常處理的數據隊列。比如,這次的案例中,編號 7 報文 seq = 1,len=176 的數據范圍是 1~176,而亂序隊列中的 FIN 報文的 seq = 177,這兩個報文的 seq 正好是保持順序的,所以會把 FIN 報文從亂序隊列中拿出來一起處理,然后發現有 FIN 標志,于是就會轉換狀態。

所以,客戶端在應答完編號 7 數據報文后,就立馬發送 FIN 報文了(第三次揮手),接著服務端應答了該報文,至此四次揮手結束。

這個抓包圖跟前面這個騰訊的面試題有一點差異,差異在于:

騰訊的面試題是在 FIN_WAIT_2 狀態下收到亂序的 FIN 報文(第三次揮手);抓包圖是在 establish 狀態收到了亂序的 FIN 報文(第一次揮手);

上面這兩種 TCP 狀態,收到亂序的 FIN 報文,并不會立即轉換狀態,只會被內核放到一個亂序隊列里。等收到一個序列號符合「接收方」期望收到的序列號的數據包時,會檢測「亂序隊列」中是否有可用的數據,如果能在亂序隊列中找到與當前收到報文的序列號「保持的順序」的報文,就會看該報文是否有 FIN 標志,如果發現有 FIN 標志,就會轉換狀態。

所以,從這里可以看到, TCP 傳輸協議是按序接收,如果收到一個亂序的報文時,并且在接收窗口范圍內(序列號超過接收窗口范圍外的報文就會被丟棄),就會緩存在內核中的亂序隊列,不做其他處理。等收到能與亂序隊列中報文的序列號保持順序的報文,才會一起被處理。

TCP 層必須保證收到的字節數據是完整且有序的,所以如果序列號較低的 TCP 報文在網絡傳輸中丟失了,即使序列號較高的 TCP 報文已經被接收了,應用層也無法從內核中讀取到這部分數據。

舉個例子,如下圖:

圖中發送方發送了很多個 packet,每個 packet 都有自己的序號,你可以認為是 TCP 的序列號,其中 packet 3 在網絡中丟失了,即使 packet 4-6 被接收方收到后,由于內核中的 TCP 數據不是連續的,于是接收方的應用層就無法從內核中讀取到,只有等到 packet 3 重傳后,接收方的應用層才可以從內核中讀取到數據。

關鍵詞: 這個問題 傳輸協議 我也沒辦法

上一篇:

下一篇:

久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区
国产精品一国产精品k频道56| 亚洲欧美一区二区原创| 国产精品久久久99| 国产伦精品一区二区三区照片91| 亚洲午夜av在线| 国产综合在线看| 欧美日韩免费高清一区色橹橹| 国产欧美日韩一区二区三区在线观看| 老司机久久99久久精品播放免费| 国产精品有限公司| 亚洲一二三级电影| 久久综合九色欧美综合狠狠| 欧美日韩综合在线免费观看| 国产欧美日韩另类视频免费观看| 欧美精品少妇一区二区三区| 另类欧美日韩国产在线| 欧美在线视频一区二区三区| 国产精品麻豆欧美日韩ww| 国产精品嫩草影院av蜜臀| 91久久久久久国产精品| 精品动漫3d一区二区三区免费版| 国产一区二区三区四区在线观看| 国产精品色婷婷| 91久久中文字幕| 一区二区三区在线视频观看| 欧美国产成人精品| 国产欧美日韩亚洲精品| 欧美日韩亚洲一区二区三区在线| 亚洲精品乱码久久久久久按摩观| 国产精品一区一区| 一区免费在线| 国产真实久久| 亚洲综合色视频| 日韩写真视频在线观看| 久久福利视频导航| 亚洲自拍偷拍网址| 亚洲欧美日韩精品久久亚洲区| 亚洲在线国产日韩欧美| 午夜精品久久99蜜桃的功能介绍| 农村妇女精品| 国模私拍视频一区| 国模一区二区三区| 亚洲免费观看在线视频| 在线观看欧美日本| 国产欧美日韩免费看aⅴ视频| 亚洲女人小视频在线观看| 欧美sm视频| 欧美日韩精品是欧美日韩精品| 黄色另类av| 一区二区三区在线高清| 精品51国产黑色丝袜高跟鞋| 精东粉嫩av免费一区二区三区| 午夜在线一区| 欧美在线国产精品| 亚洲专区在线视频| 国产精品久久久久久久久免费樱桃| 99视频在线精品国自产拍免费观看| 一区二区三区视频在线观看| 欧美日韩91| 欧美色中文字幕| 欧美激情女人20p| 在线日韩av永久免费观看| 男女精品网站| 国产欧美另类| 国产一区视频观看| 国内久久婷婷综合| 一区二区三区欧美激情| 麻豆精品精品国产自在97香蕉| 午夜久久久久久| 亚洲欧美日韩一区在线| 欧美日韩综合视频网址| 欧美成人日本| 一区二区三区在线高清| 欧美一区二区视频观看视频| 亚洲综合日本| 欧美激情精品久久久久久大尺度| 麻豆精品在线播放| 午夜精品免费在线| 欧美日韩综合视频| 欧美中文字幕精品| 亚洲激情图片小说视频| 亚洲性夜色噜噜噜7777| 亚洲欧美日韩中文播放| 男男成人高潮片免费网站| 欧美成人高清视频| 国产精品自在在线| 一区二区三区四区精品| 在线观看中文字幕不卡| 国产日韩精品入口| 亚洲电影av在线| 亚洲一区视频在线| 久久久久91| 国产精品视频一二三| 亚洲免费视频一区二区| 亚洲国产另类精品专区| 欧美三级精品| 亚洲激情啪啪| 欧美精品免费视频| 亚洲网站在线观看| 久久精品中文字幕免费mv| 欧美激情一区二区三区在线视频观看| 永久久久久久| 美女精品国产| 国产精品成人免费精品自在线观看| 欧美日韩亚洲激情| 国产伪娘ts一区| 在线观看精品视频| 亚洲一区二区影院| 欧美aaaaaaaa牛牛影院| 欧美精品成人一区二区在线观看| 国语自产精品视频在线看| 一区在线电影| 性欧美1819性猛交| 国产欧美日韩精品在线| 在线视频你懂得一区二区三区| 性欧美大战久久久久久久免费观看| 国产一区二区在线观看免费播放| 欧美色综合天天久久综合精品| 亚洲国产岛国毛片在线| 国内精品视频一区| 欧美激情久久久久| 欧美影院在线| 亚洲第一福利视频| 亚洲三级色网| 欧美日韩中文| 99精品国产一区二区青青牛奶| 蜜桃精品一区二区三区| 亚洲一区二区三区精品在线| 亚洲人精品午夜在线观看| 久久国产精品黑丝| 国产精品久久久久毛片大屁完整版| 久久久久久久久一区二区| 国内成+人亚洲+欧美+综合在线| 一区二区三区|亚洲午夜| 国产综合精品| 欧美专区在线播放| 国产在线国偷精品产拍免费yy| 先锋影音国产一区| 亚洲精品一区二区三区99| 在线精品高清中文字幕| 精久久久久久久久久久| 亚洲男女自偷自拍图片另类| 亚洲欧美日韩精品久久久久| 国产精品一区二区在线观看| 欧美视频在线观看视频极品| 欧美日韩国产综合视频在线| 亚洲乱码国产乱码精品精可以看| 久久蜜臀精品av| 狠狠入ady亚洲精品| 国产精品日日做人人爱| 久久国产精品久久久久久电车| 久久av最新网址| 亚洲影院免费观看| 亚洲精选久久| 欧美精品免费在线| 欧美性猛交视频| 欧美日韩另类视频| 黄色综合网站| 国产一级揄自揄精品视频| 亚洲国产一区二区三区高清| 欧美四级在线| 一区二区三区在线高清| 欧美黑人一区二区三区| 亚洲性色视频| 精品96久久久久久中文字幕无| 久久久久久一区| 99精品国产高清一区二区| 久久精品成人一区二区三区| 亚洲一区日韩在线| 香蕉久久夜色| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美精品九九99久久| 亚洲欧美日韩国产综合| 久久gogo国模啪啪人体图| 亚洲欧美日韩精品久久久久| 欧美久色视频| 一区二区三区欧美亚洲| 国产在线观看精品一区二区三区| 国产精品视频yy9099| 久久在线91| 亚洲美女淫视频| 日韩视频在线免费观看| 性久久久久久久久久久久| 国产女主播一区二区三区| 国内成+人亚洲| 久久久久久久一区二区三区| 亚洲电影免费| 亚洲精选成人| 中国成人黄色视屏| 国产日韩在线亚洲字幕中文| 136国产福利精品导航网址应用| 在线日韩中文| 亚洲福利免费| 国产乱码精品一区二区三| 国产伦精品一区二区三区照片91| 久久综合影视| 亚洲免费成人av电影| 一区二区三区|亚洲午夜| 欧美日一区二区在线观看| 91久久久亚洲精品|