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

真·卡了一個1024的 Bug,TCP 的數據包看吐了!

網絡 網絡管理
排查下服務端的日志,發現只有 D4 階段的業務日志打印,D5 階段的日志沒有。初步結論:設備端沒有發送 D5 階段的數據包。

一、背景

最近在預發布環境上遇到一個特別詭異的問題,事情大概是這樣的:

設備在生產時需要走一個注冊的過程,里面涉及到和服務端進行 TCP 通信獲取配置文件、發送密鑰等操作,但是生產進度會卡在70%。

流程如下圖所示。

大家不用細看里面的原理,只用看 D4 階段和 D5 階段即可。

數據通信方式:TCP。

圖片圖片

配置文件長這樣,key=value 形式存儲。

name=rabbit
B2=asdf21
...

當配置文件中的 name 字段為 rabbit 時,設備正常生產,當配置文件中的 name 字段為 rabbit-TD 時,設備就無法生產成功,生產進度會卡在 70%。

從現象來看,不確定是設備端沒有執行 D5 階段,還是服務端沒有處理成功處理 D5 階段。

二、排查過程

2.1、檢查代碼

檢查下設備端和服務端的代碼,有沒有對 name 這個字段的長度做一些限制。

結論:設備端和服務端并沒有對配置文件的字段長度做限制。

2.2、查看服務端日志

排查下服務端的日志,發現只有 D4 階段的業務日志打印,D5 階段的日志沒有。

初步結論:設備端沒有發送 D5 階段的數據包。

2.3、服務端抓包

思路:抓個包看下服務端有沒有收到 D5 階段的數據包。

在服務端通過 microsoft network monitor 抓包工具抓包,然后將抓包文件放到 wireshark 中排查。

下圖是設備端和服務端的 TCP 通信數據。

圖片圖片

可以看到設備向服務端發送了配置文件(D4階段),服務端發送了一個 ACK 響應。

在TCP(傳輸控制協議)通信中,當客戶端發送一條TCP消息給服務端時,服務端通常會發送一個ACK(確認)響應來表明它已經成功接收到了這條消息。這是基于TCP的可靠傳輸機制,確保數據能夠正確無誤地從發送方傳輸到接收方。

TCP使用序列號和確認號來實現可靠傳輸。發送方會為每個發送的字節分配一個序列號,接收方在收到數據后會發送一個ACK確認,確認號表示接收方期望接收的下一個字節的序列號。如果發送方在一定時間內沒有收到ACK確認,它會重新發送數據。(來自 AI)

初步結論:服務端發送了 D4 階段的 ACK 響應。設備端沒有發送 D5 階段的數據包

注意:這個結論在后面的排查過程中被推翻。

2.4、設備端抓包

思路:抓個包看下服務端有沒有發送 D5 階段的數據包。通過如下命令在設備端抓個包:

#tcpdump -i fetho host 192.168.1.253

抓到的數據包如下所示:

圖片圖片

通過上圖的抓包結果可以看到最后一個階段是 D4 和 D5,它倆其實是將數據包合并在一起發送的(這個是我后來才發現的,也是 1024 卡 Bug 產生的源頭)

也就是說 D4 和 D5 其實是一個階段,并沒有分開發。

然后設備端一直在等待服務端返回配置文件(P6 階段)。

初步結論:設備端執行了 D5 階段,服務端沒有執行 P6 階段,服務端有問題。

2.5、再查服務端的數據包

這就尷尬了,設備端明明執行了 D5 階段,但是服務端看起來沒有收到 D5 的數據包。

重新再看下最后一條數據包,報文內容如下圖所示:

圖片圖片

打開 D4 階段的數據報文,可以看到數據里面是包含有 D4 階段的配置文件內容以及D5階段的文件內容,當時我看到這個報文是懵的:

我看之前的接口文檔上寫的是 D4 和 D5 階段分開發送數據?怎么又合在一起發了?

原因:設備端將 D4和D5 的數據包連續寫到 socket 中的。

初步結論:服務端沒有正確處理 D4 和 D5 合體的數據包。

那怎么辦?只能在服務端多加點日志打印看看 D5 的數據包為什么沒有正確處理呢。

2.6、分析數據包

3.6.1 name=rabbit 時的報文(可正常生產)

每個階段發送一次報文都是按照這樣的格式進行發送:0x1234abcd, length, type, data。

  • 0x1234abcd : 起始數據
  • lenght: 業務數據長度
  • type: 請求類型
  • data:業務數據

當配置文件中的 name 字段為 rabbit 時,報文D4 和 D5 合體后的報文內容如下:

圖片圖片

說明:

  • 指定的業務數據的長度的值必須和后面的業務數據報文的長度相等(比如D4階段的配置文件的數據,D5 階段的密鑰數據的長度),否則會執行報錯,這也是導致 D5 階段未正確執行的根本原因。
  • D4 階段的配置文件的數據的長度為 0x00 0x00 0x03 0xF4 ,轉成十進制就是 1011。
  • 服務端在讀取 D4 階段報文時,先讀取 4 字節的配置文件數據長度length。然后讀取1 字節的請求類型type,最后再只讀取 1011 字節的數據data,如果業務數據的長度不等于 1011 就會報錯!
  • D4階段總共讀取了 1016 字節數據。然后執行 D4 階段的邏輯。
  • 接著讀取 D5 階段的 4字節的報文起始數據,然后是 4 字節的業務數據的長度(十六進制 0x00 0x00 0x01 0x00 轉成十進制是 256),這里總共讀取了 1024 字節的數據,剛剛達到了服務端讀取數據的最大長度1024,就會分成下一次讀取。如下圖所示,完整讀取了業務數據的長度。

圖片圖片

  • 然后讀取 1字節的請求類型數據,最后是 256 字節的密鑰數據。

3.6.2 name=rabbit-TD 時的報文(不能正常生產)

當配置文件中的 name 字段為 rabbit-TD 時,報文 D4 和 D5 合體后的報文內容如下:

圖片圖片

說明:

  • D4 階段的配置文件的數據的長度lenth為 0x00 0x00 0x03 0xF6 ,轉成十進制就是 1014。
  • 服務端在讀取 D4 階段報文時,先讀取 4 字節的配置文件數據長度,然后讀取1 字節的請求類型,最后再只讀取 1014 字節的數據,這里總共讀取了 1019 字節數據。然后執行 D4 階段的邏輯。這前面的步驟都沒有問題。
  • 接著讀取 D5 階段的 4字節的報文起始數據,已經讀取了 1023 字節的數據。
  • 再讀業務數據的長度 lenth,先讀取了 1字節,剛好達到服務端讀取數據的最大長度 1024,分成下一次讀取。問題就出現在這里,業務數據的長度被分開了!

日志的內容如下:

圖片圖片

  • 下一次讀取時,會直接讀 4 個字節的數據,作為讀取業務數據的長度,這里產生了錯位,因業務數據的長度length已經被讀取了一個字節,就只能往后讀取 4 個字節。
  • 如下圖所示:本來 D5 階段的業務數據的長度應該是 256 字節,但是因為錯位往后讀取了一位,把請求類型type的 1 個字節讀取了,最后就是 0x00,0x01,0x00,0x02,轉成十進制就是 65538,但是 D5 階段的業務數據只有 256 字節。這就導致傳的業務數據的長度和傳的業務數據報文長度不一致,所以服務端解析的 D5 的數據報文有問題。如下圖所示:

圖片圖片

日志內容如下:

圖片圖片

  • 結合上面的說明,來一張完整的報文數據圖:

圖片

2.7、真相大白

因讀取的數據報文達到1024 字節時,將業務數據的長度這四個字節做了切割,前面1024字節包含長度字段的第一個字節,長度字段的后面3個字節和請求類型的 1個字節組成了長度字段的 4 個字節,也就是錯位多讀取了后面一個字節的內容,最后算出來長度的值為 65538,不等于后面的業務數據的 256 字節,導致服務端的程序報錯,所以后續代碼就沒有執行了。

三、解決方案

3.1、方案一

原因就是前面讀取的 length 的 1 個字節沒有和后續讀取的 length 的三個字節合成長度字段 length 的值,那么只要保證第二次讀取長度字段length的時候把之前的 1 個字節拿到即可。

3.2、方案二

還有一個卡 Bug 的方案:將 D4 階段的配置文件增加一點內容,保證配置文件的內容 = 1014 + 1 =1015 即可,或大于等于 1014+5 = 1019,目的就是把長度字段完整的四個字節卡到 1024 后面,或者把起始數據的四個字節也卡在 1024 后面。

驗證了兩種情況:name 為 Rabbit-TDDDDDDD 和 Rabbit-TDD 是正常生產的。下面是 Rabbit-TDD 的情況,正好將 D4 的數據 + D5 的起始數據卡滿了 1024 字節。

如下圖所示:

  • 左邊是出 Rabbit-TD 的日志,系統報錯。1023-4-5=1024 或者這樣算 1014+5+5=1024。
  • 右邊是 Rabbit-TDD的日志,右邊正常執行。1024-4+4=1024 或者這樣算 1015+5+4=1024。

圖片圖片

再來給大家算一遍如何卡 Bug 的,系統能正常運行。

1024 字節 = 1015(配置文件報文內容) + 4(配置文件報文長度) + 1(請求類型) + 4(D5報文起始數據)。

1024 字節 = 1019(配置文件報文內容) + 4(配置文件報文長度) + 1(請求類型)= 1024 字節。

還有兩個疑問:

- D4 階段的起始數據為啥沒有算到 1024 字節中,這里我也沒弄懂 Socket的數據是怎么分開、合并發送的。

- 服務端為什么是讀取 1024 字節就會分成下次讀取?技術棧是 mina 框架,出問題的是 windows server 2003,而win10上沒重現這個問題。

責任編輯:武曉燕 來源: 悟空聊架構
相關推薦

2022-05-16 08:42:26

Pandasbug

2019-04-29 07:53:11

TCP數據包TCP網絡編程

2022-06-08 08:14:27

Dubbo數據包源代碼

2021-12-29 19:20:41

數據GitHub服務器

2014-06-10 09:16:53

數據包

2021-05-12 00:07:27

TCPIP協議

2014-07-09 09:43:59

2011-01-18 13:50:20

路由跟蹤tcptracerou

2022-05-27 07:03:04

JDK場景線程

2020-01-10 09:20:03

手機ISOJDK

2021-09-13 08:41:52

職場互聯網自閉

2025-02-13 07:00:00

Dubbo-goJava服務端

2020-07-07 14:49:17

中斷輪詢數據包

2009-09-14 17:08:02

WebFormView

2021-04-22 07:47:47

JavaJDKMYSQL

2022-11-30 09:18:51

JavaMyBatisMQ

2023-03-27 00:13:26

數據包Kubernete網絡

2017-10-10 15:14:23

BUGiOS 11蘋果

2015-01-23 10:04:56

bug程序員

2016-09-28 14:00:56

點贊
收藏

51CTO技術棧公眾號

亚洲国产精品国自产拍av秋霞| 国产午夜久久久久| 欧美激情视频一区二区三区不卡| 国产69视频在线观看| 天堂在线中文网官网| 中文字幕巨乱亚洲| 99久久精品免费看国产一区二区三区| 日韩毛片在线视频| 青青草成人影院| 欧美日韩电影在线| 我的公把我弄高潮了视频| 久草视频视频在线播放| 日本成人在线视频网站| 欧美成人免费视频| 亚洲а∨天堂久久精品2021| 精品中文字幕一区二区三区四区| 午夜国产精品影院在线观看| 亚洲精品在线视频观看| 欧美性猛交 xxxx| 麻豆精品视频在线观看免费| 国产最新精品视频| 欧美88888| 婷婷精品在线观看| 欧美一级理论性理论a| 日韩av在线综合| 日本在线视频www鲁啊鲁| 国产欧美一区二区三区在线老狼| 91超碰rencao97精品| 国产免费www| 亚洲乱码视频| 欧美另类在线观看| 九九热久久免费视频| 女人av一区| 亚洲а∨天堂久久精品喷水| 亚洲无在线观看| 蜜桃视频成人m3u8| 欧美午夜激情视频| 黄网站欧美内射| 午夜小视频在线观看| 国产精品福利一区| 日韩高清三级| 九色视频在线播放| 久久蜜桃一区二区| 久久青青草原| 头脑特工队2在线播放| 国产成人午夜片在线观看高清观看| 国产美女扒开尿口久久久| 免费视频网站在线观看入口| 午夜一级久久| 欧美最顶级丰满的aⅴ艳星| 日本网站免费观看| 亚洲高清资源| 欧美黑人巨大xxx极品| 日韩电影中文字幕| 日日夜夜精品网站| 青青草在线免费视频| 成人激情动漫在线观看| 国产91社区| 免费观看国产视频| www.欧美日韩国产在线| 国产精品亚洲不卡a| www.com在线观看| 国产经典欧美精品| 成人免费在线看片| 国产91麻豆视频| 成人少妇影院yyyy| 风间由美久久久| 黄色片一区二区| 波多野结衣在线一区| 国产一区二区三区四区五区在线| 亚洲AV无码乱码国产精品牛牛| 激情五月激情综合网| 18成人在线| 亚洲AV无码精品国产| 成人av免费在线播放| 国产一区二区三区四区hd| 牛牛澡牛牛爽一区二区| 国产精品无人区| 日本丰满大乳奶| 色图在线观看| 欧美日韩在线视频首页| 免费观看精品视频| 久久青草视频| 日韩三级免费观看| 日韩 中文字幕| 黄色不卡一区| 久久精品影视伊人网| 久久久久久av无码免费网站| 国产亚洲午夜| 国产精品在线看| www.五月婷婷| 26uuu国产日韩综合| 一区二区精品在线| 成人女同在线观看| 日韩欧美在线看| 91国内在线播放| 国产无遮挡裸体免费久久| 亚洲人成电影在线播放| 无码国产69精品久久久久同性| 色综合久久一区二区三区| 欧美激情一区二区三级高清视频| 在线免费黄色av| 国产在线播放一区| 欧美激情视频一区二区三区| 毛片在线看片| 欧美日韩在线一区| 免费观看一区二区三区| 国产一区二区三区91| 色综合久久中文字幕综合网小说| 无码人妻丰满熟妇精品| 国产九色精品成人porny| 欧美不卡1区2区3区| √天堂8在线网| 欧日韩精品视频| 中文成人无字幕乱码精品区| 水蜜桃久久夜色精品一区| 2021国产精品视频| 国产ts人妖调教重口男| 日本一区二区三区久久久久久久久不 | 欧美xxxx黑人又粗又长精品| 日韩影视在线| 欧美福利一区二区| www.狠狠爱| 一本综合久久| 成人xxxxx色| 国产精品久久久久久福利| 色综合天天综合色综合av| 国产一级免费片| 一区二区三区网站| 国产精品美女在线观看| 免费一级在线观看| 精品动漫一区二区三区| 少妇丰满尤物大尺度写真| 国产探花在线精品| 91高清视频在线免费观看| 黑人精品一区二区三区| 亚洲欧美日韩国产综合在线| 亚洲天堂av线| 成人网18免费网站| 国产成人亚洲综合91| 日韩a在线观看| 精品久久久久久久大神国产| 四虎永久免费观看| 伊人久久久大香线蕉综合直播 | 国产免费黄视频| 97品白浆高清久久久久久| 久久不射电影网| 国产美女裸体无遮挡免费视频| 国产精品乱人伦中文| 亚洲激情在线观看视频| 欧美日韩一区二区综合 | 精品国产乱码久久久久久樱花| 一区二区三区四区在线观看视频 | 欧美人牲a欧美精品| аⅴ天堂中文在线网| 欧美a一区二区| 亚洲欧美日韩精品综合在线观看| 欧美va在线| 中文字幕日韩欧美在线视频| 在线播放国产一区| 综合欧美亚洲日本| 又黄又爽又色的视频| 悠悠资源网久久精品| 精品国产一区二区三| www.精品| 中文字幕日韩有码| 99久久久国产精品无码免费| 亚洲国产综合91精品麻豆| 国模无码视频一区| 老牛嫩草一区二区三区日本| 日韩三级电影| 欧洲大片精品免费永久看nba| 欧美疯狂做受xxxx高潮| 香蕉国产在线视频| 欧美亚洲禁片免费| 4p变态网欧美系列| 国产成人免费av| 亚洲乱码国产乱码精品| 久久精品人人爽人人爽| 日日干夜夜操s8| 一区二区三区午夜探花| 不卡视频一区| 不卡一二三区| 精品国产欧美一区二区三区成人| 国产毛片一区二区三区va在线| 亚洲宅男天堂在线观看无病毒| 粉嫩av懂色av蜜臀av分享| 日韩电影一区二区三区四区| 加勒比海盗1在线观看免费国语版| 97青娱国产盛宴精品视频| 国产91露脸中文字幕在线| 欧洲不卡av| 亚洲精品美女久久久| 一级黄色片在线看| 欧美日韩国产在线| 日韩三级久久久| 成人成人成人在线视频| 在线免费观看视频黄| 亚洲高清自拍| a级黄色片网站| 欧美黑白配在线| 成人h片在线播放免费网站| 91av久久| 久久久999精品视频| 天堂av在线资源| 欧美一区二区黄| 无码人妻一区二区三区免费| 亚洲精品成人少妇| 在线免费观看视频| 91亚洲大成网污www| 91热视频在线观看| 日韩成人dvd| 免费观看国产精品视频| 综合精品一区| 四虎一区二区| 亚洲动漫在线观看| 国产精品久久久久久久久久久久午夜片 | 中文字幕亚洲天堂| 亚洲av成人精品一区二区三区在线播放| 欧美蜜桃一区二区三区| 中文字幕黄色片| 午夜精品成人在线视频| 精品国产乱码久久久久久鸭王1| 久久九九国产精品| 国产xxxx视频| 国产成人av一区二区三区在线观看| 免费看黄色一级大片| 国产日韩一区二区三区在线播放| 久久综合久久久久| 综合日韩在线| 中文字幕成人一区| 区一区二视频| 欧美一区1区三区3区公司| 果冻天美麻豆一区二区国产| 91在线播放视频| 成人黄色理论片| 国产精品亚洲片夜色在线| 午夜日韩成人影院| 国产z一区二区三区| 日韩欧美看国产| 日韩av手机在线观看| 成人av观看| 欧美在线播放视频| 毛片无码国产| 国产成+人+综合+亚洲欧洲| 桃花岛tv亚洲品质| 国产ts一区二区| 日韩大片欧美大片| 国产精品入口尤物| 欧美成a人片免费观看久久五月天| 国产成+人+综合+亚洲欧洲| 写真福利精品福利在线观看| 日韩美女主播视频| 欧美电影免费观看| 国产美女久久精品| 中文成人在线| 91在线视频成人| 亚洲国产aⅴ精品一区二区| 91精品国自产在线观看| 一区二区三区亚洲变态调教大结局 | 97久久久精品综合88久久| 亚洲男人在线天堂| 国产亚洲成aⅴ人片在线观看| 欧美激情aaa| 中文在线资源观看网站视频免费不卡| 欧美一区二区三区粗大| 国产精品卡一卡二卡三| 婷婷久久综合网| 亚洲一区二区视频| 亚洲 欧美 日韩 在线| 欧美日韩视频一区二区| 国产免费黄色大片| 亚洲第一网中文字幕| 青青视频在线观| 日韩在线观看你懂的| 亚洲无线看天堂av| 7m第一福利500精品视频| 国产成人a视频高清在线观看| 91精品久久久久久综合乱菊| 99精品国产一区二区三区2021 | 日韩精品一区二区久久| 中文字幕一区二区三区在线乱码| 你懂的一区二区| 亚洲自偷自拍熟女另类| 久久激情五月婷婷| 国产原创剧情av| 国产欧美日韩亚州综合 | 成人欧美在线视频| 极品国产人妖chinesets亚洲人妖| 欧美一二三四五区| 艳女tv在线观看国产一区| 人妻久久久一区二区三区| 免费在线一区观看| 亚洲精品激情视频| 国产欧美一区二区精品仙草咪| 91porn在线视频| 色综合久久综合中文综合网| 国产偷拍一区二区| 亚洲欧美日韩成人| 羞羞视频在线观看不卡| 日韩免费观看av| 给我免费播放日韩视频| 亚洲国产精品久久久久久女王| 狠狠爱综合网| 在线观看国产中文字幕| 91麻豆123| 国产精品不卡av| 欧美精品一卡两卡| 欧美新色视频| 久久久亚洲影院你懂的| 日本中文字幕视频一区| 欧美伦理一区二区| 黄色日韩在线| 国产探花在线观看视频| 欧美—级在线免费片| 91国产丝袜播放在线| 91精品国产欧美一区二区18| 国产黄色片在线观看| 91精品国产99| 91精品入口| 裸体裸乳免费看| 久久国产剧场电影| 中文字幕网站在线观看| 午夜精品国产更新| 成人久久精品人妻一区二区三区| 综合136福利视频在线| 国产精欧美一区二区三区蓝颜男同| 97se视频在线观看| 亚洲老妇激情| www.久久久久久久久久久| 中文在线资源观看网站视频免费不卡| 国产又黄又爽又色| 亚洲高清av在线| 草美女在线观看| 91九色在线观看| 在线观看国产精品入口| 福利片一区二区三区| 中文乱码免费一区二区| 日韩乱码一区二区三区| 亚洲美女在线观看| 欧美电影免费观看| 日韩精品一线二线三线| 老司机亚洲精品| 青娱乐国产视频| 欧美在线观看你懂的| 国产尤物视频在线| 国产成人欧美在线观看| 成人在线免费观看视频| xxxx一级片| 中文字幕一区二区三区色视频 | 精品无码免费视频| 日韩免费性生活视频播放| 调教一区二区| 国产精品免费在线播放| av成人天堂| 欧美色图亚洲激情| 欧美日韩一区二区三区不卡| √新版天堂资源在线资源| 成人午夜两性视频| 欧美午夜免费影院| 91精品小视频| 在线观看一区二区精品视频| 91在线免费看| 91青草视频久久| 1024日韩| 男人舔女人下部高潮全视频| 欧美卡1卡2卡| eeuss鲁一区二区三区| 欧美日韩另类综合| 久久黄色级2电影| 久久精品www| 日韩精品亚洲精品| 国产亚洲精彩久久| 亚洲中文字幕无码一区二区三区| 成人成人成人在线视频| 波多野结衣高清视频| 不用播放器成人网| 神马香蕉久久| 57pao国产成永久免费视频| 亚洲一区二区三区激情| 男女污污视频在线观看| 成人有码在线播放| 亚洲深夜影院| 伊人久久久久久久久久久久久久| 欧美xxx久久| 欧洲一级精品| 国产女主播av| 久久精品亚洲麻豆av一区二区| 一级爱爱免费视频| 97人洗澡人人免费公开视频碰碰碰| 国内精品视频在线观看| 青青草精品在线| 在线观看日韩毛片| 污污的网站在线看| 日本一区二区在线视频观看| 国产麻豆精品久久一二三| 国产在线观看黄色| 久久天天躁狠狠躁夜夜躁| 日本成人a网站| 日韩精品视频网址|