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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Wireshark文档阅读笔记-WebSocket协议基本概念

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Wireshark文档阅读笔记-WebSocket协议基本概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WebSocket

WebSocket是基于TCP的全雙工協議。WebSocket是2011年IETF RFC6455中定義的標準,他的API是W3C定義的。

WebSocket不僅適用于瀏覽器、服務端的程序,還適用于客戶端、服務端的程序。WebSocket是基于TCP的協議。WebSocket讓服務器和客戶端交換成為可能,提高數據的實時傳輸。定義了服務端傳主動傳輸數據給客戶端的標準。

WebSocket協議使用ws和wss作為URI(Uniform Resource Identifier)

Protocol dependencies

TCP: WebSocket基于TCP的協議,WebSocket一般使用80和443口傳輸數據。

Connection setup

建立一個WebSocket連接,客戶端需要發送WebSocket握手請求,服務端返回WebSocket握手響應,如下:

客戶端請求(與HTTP相似,每行的結尾都使用\r\n):

GET / HTTP/1.1 Host: 192.168.43.135:12345 Connection: Upgrade Pragma: no-cache Cache-Control: no-cache Upgrade: websocket Origin: file:// Sec-WebSocket-Version: 13 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Accept-Encoding: gzip, deflate, sdch Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4 Sec-WebSocket-Key: bKdPyn3u98cTfZJSh4TNeQ== Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

服務端響應:

HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: 4EaeSCkuOGBy+rjOSJSMV+VMoC0= WebSocket-Origin: file:// WebSocket-Location: ws://192.168.43.135:12345/

數據傳輸

使用Python WebSocket服務端和JavaScript客戶端。

從服務端發送數據給客戶端:

Frame 7: 79 bytes on wire (632 bits), 79 bytes captured (632 bits) Ethernet II, Src: Vmware_8a:3d:a7 (00:0c:29:8a:3d:a7), Dst: Vmware_c0:00:08 (00:50:56:c0:00:08) Internet Protocol Version 4, Src: 192.168.43.135, Dst: 192.168.43.1 Transmission Control Protocol, Src Port: 12345, Dst Port: 50999, Seq: 205, Ack: 510, Len: 25 WebSocket1... .... = Fin: True.000 .... = Reserved: 0x0.... 0001 = Opcode: Text (1)0... .... = Mask: False.001 0111 = Payload length: 23Payload JavaScript Object Notation Line-based text dataWelcome, 192.168.43.1 !

從客戶端發送數據給服務端:

Frame 9: 72 bytes on wire (576 bits), 72 bytes captured (576 bits) Ethernet II, Src: Vmware_c0:00:08 (00:50:56:c0:00:08), Dst: Vmware_8a:3d:a7 (00:0c:29:8a:3d:a7) Internet Protocol Version 4, Src: 192.168.43.1, Dst: 192.168.43.135 Transmission Control Protocol, Src Port: 50999, Dst Port: 12345, Seq: 510, Ack: 230, Len: 18 WebSocket1... .... = Fin: True.000 .... = Reserved: 0x0.... 0001 = Opcode: Text (1)1... .... = Mask: True.000 1100 = Payload length: 12Masking-Key: e17e8eb9Masked payloadPayload JavaScript Object Notation Line-based text datatest message

下面來看下官方提供的pcap:

我們來分析下。

首先是TCP三次握手,從中可以知道,服務端端口為12345,客戶端端口為50999

?客戶端向服務端發送了一個HTTP請求,他的head里面帶有很多webSocket的頭,并且Connection設置為了Upgrade,隨后服務端回復ACK:

?隨后服務端給客戶端發送HTTP/1.1 101 Switching Protocols,頭信息里面Upgrade為webSocket,Connection為Upgrade,并且帶有一些WebSocket的頭信息:

?隨后服務端向客戶端推送WebSocket數據,內容為Welcome, 192.168.43.1 !

客戶端收到后回復ACK

?這里客戶端發送數據給服務端,內容為test message

這個應該是個聊天室,這里服務端收到后,又給客戶端回了相同的信息,并且信息里面還有哪個IP,什么時候說的這句話:

?剩下的部分就不分析了,在看一個TCP Keep-Alive

?從中可以看出都是客戶端發出來的,Keep-Alive,然后服務端做ACK應答。

總結

以上是生活随笔為你收集整理的Wireshark文档阅读笔记-WebSocket协议基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。