ppp协议数据抓包分析_【网络】使用wireshark抓包 分析websocket协议 以及TCP三次握手(实测)...

46ccae85200a01a2d63129554916658e.png

在了解网络的通信模型之后,直接看协议,或者TCP/IP源码,很难有直观的感受。

需要抓取真实数据进行分析,便于理解。这里以wireshark工具为例,抓取websocket协议来进行分析,主要包含websocket以及TCP的三次握手。

1 wireshark

wireshark的官方下载网站:下载

a15cd7d03aae1330547acd2825a38852.png

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。

也是开源软件,在github上有源码,想详细了解内部原理的,可以clone下来读一读。

关于具体的使用,可以看官方文档

这里只用到选择 以太网卡,以及过滤ip的简单功能。

2 websocket帧格式

WebSocket客户端、服务端通信的最小单位是帧(frame),由1个或多个帧组成一条完整的消息(message)。

  1. 发送端:将消息切割成多个帧,并发送给服务端;
  2. 接收端:接收消息帧,并将关联的帧重新组装成完整的消息;

先来看下WebSocket的数据帧格式。数据帧的格式。详细定义可参考 RFC6455 5.2节 。

3259b44ed5eb9f26cd17a93162ba4549.png

其中FIN 表示当前帧是否为消息的最后一帧。

操作码Opcode的值决定了应该如何解析后续的数据载荷(data payload)。可选的操作代码如下:

  • %x0:表示一个延续帧。当Opcode为0时,表示本次数据传输采用了数据分片,当前收到的数据帧为其中一个数据分片。
  • %x1:表示这是一个文本帧(frame)
  • %x2:表示这是一个二进制帧(frame)
  • %x3-7:保留的操作代码,用于后续定义的非控制帧。
  • %x8:表示连接断开。
  • %x9:表示这是一个ping操作。
  • %xA:表示这是一个pong操作。
  • %xB-F:保留的操作代码,用于后续定义的控制帧。

其他的具体可以参考RFC6455。

3 建立连接

可以查看我另一篇文章:websocket通信

4 wireshark抓取实时数据

步骤:

  1. wireshark 开始捕获

2. 浏览器打开html

3. 通信10秒钟

4. 关闭浏览器

实时数据:(约定 A主机为192.168.10.200; B主机为192.168.10.30 )

9cdae04f04ba4b79e63f7cae75a3f895.png

可以看到,1-3就是TCP的三次握手:ACK = Seq + 1

1:A发送 SYN Seq=0

2:B应答ACK=1 并发送 SYN Seq=0

3:A应答ACK=1 并发送 SYN Seq=1

握手成功,建立连接。

第4条为A发送的HTTP协议:

connection: upgrade.表示需要升级协议

upgrade:websocket.表示升级至websocket协议

6af0aec79fbe11a47fa18812308267ad.png

第5条为B主机的ACK应答

第6条为B主机发送的HTTP协议:

表示B主机同意升级为websocket协议,且升级成功。

1449fa46a5924d86185bd08e4cf50e96.png

第7条为A主机的ACK应答

第8条为B主机发送的准备发送数据请求:

PSH为推的意思PUSH,表示准备传送数据

第9条为A主机的ACK应答

第10条为B主机发送的websocket协议:

分析:

对照websocket帧格式,可以明显的看到:

当前帧中的FIN为1,表示当前帧为消息的最后一个

操作码为2,表示当前帧为二进制

无掩码

数据长度为84字节

这里注意的是,数据data是用户自定义的数据格式。

1c606968c2bafa7d0c94bcf958ed0ba9.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值