日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

websocket / 使用 wireshark 分析 websocket 连接过程

發(fā)布時(shí)間:2024/10/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 websocket / 使用 wireshark 分析 websocket 连接过程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、連接過程時(shí)序圖

二、wireshark 分析

上圖是一個(gè)完整的進(jìn)行 websocket 連接時(shí)產(chǎn)生的數(shù)據(jù)包。

根據(jù)時(shí)序圖可知,前 3 行是 tcp/ip 握手過程,因?yàn)榭梢酝ㄟ^標(biāo)志來看到,前 3 個(gè)標(biāo)志(Flags)分別為 SYN、SYN ACK、ACK。這是建立 http 請求的需要,和 websocket 沒有關(guān)系。


第 4 條就是 client 主動發(fā)給 server 的握手協(xié)議了,如下圖所示:

細(xì)心的小伙伴可以發(fā)現(xiàn),這套代碼是基于 C++ 版的 websocketpp 實(shí)現(xiàn)的,大家可以參考下。

大家可以發(fā)現(xiàn),websocket 的握手協(xié)議實(shí)際上是基于 http 協(xié)議實(shí)現(xiàn)的,client 告訴 server,我要升級為 websocket 了,不使用老土的 http 了。實(shí)現(xiàn)的方法就是 “Connection” 和 “Upgrade” 這兩個(gè)字段,

我要升級(Connection : upgrade),

升級為 websocket (Upgrade : websocket),

websocket 的版本得是 v13 的!(Sec-WebSocket-Version 13)。


第 5 條是 server 回復(fù)?client 的協(xié)議了。

狀態(tài)為 101,意味著協(xié)議切換成功。

這里?Sec-WebSocket-Accept 和?Sec-WebSocket-Key 是配套的,主要作用在于提供基礎(chǔ)的防護(hù),減少惡意連接、意外連接。

Sec-WebSocket-Accept 的計(jì)算方法是:

計(jì)算公式為:

將 Sec-WebSocket-Key 跟 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 拼接。通過 SHA1 計(jì)算出摘要,并轉(zhuǎn)成 base64 字符串。

偽代碼如下:

toBase64( sha1( Sec-WebSocket-Key + 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 )??)

?

參考鏈接:

https://blog.csdn.net/henryhu712/article/details/85090194

https://blog.csdn.net/libaineu2004/article/details/82774638

?

(SAW:Game Over!)

總結(jié)

以上是生活随笔為你收集整理的websocket / 使用 wireshark 分析 websocket 连接过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。