前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再次记录使用tcpdump+wireshark分析TCP握手连接与断开

再次记录使用tcpdump+wireshark分析TCP握手连接与断开

作者头像
用户6367961
发布2019-09-29 19:55:04
1.6K0
发布2019-09-29 19:55:04
举报
文章被收录于专栏:自学测试之道

前言

刚好公司有个项目出现客户端访问服务器提示连接超时的情况,具体log信息显示如下:

[21:29:48(1518)]*[TestService]*[getDeviceInfoFromCloud->onFailure: java.net.SocketTimeoutException: failed to connect to mapi.yunovo.cn/47.98.17.161 (port 80) after 10000ms] [21:29:51(1518)]*[TestService]*[getDeviceInfoFromCloud->onFailure: java.net.SocketTimeoutException: failed to connect to mapi.yunovo.cn/47.98.17.161 (port 80) after 10000ms] [21:30:09(1518)]*[TestService]*[getDeviceInfoFromCloud->onFailure: java.net.SocketTimeoutException: failed to connect to mapi.yunovo.cn/47.98.17.161 (port 80) after 10000ms]

一、思路分析

出现以上异常信息无非就以下几种可能:

1、设备发送消息给服务器,服务器有接收到信息但没有反馈给设备??

2、设备发送消息给服务器,服务器没有接收到信息??

3、设备没有把信息发送到服务器??

4、设备与服务器通讯期间数据有丢失??

解决方案:

1、通过tcpdump进行对设备抓包,抓取TCP的全部信息

2、结合wireshark工具进行分析TCP的连接过程

3、通过分析抓取的包信息来总结问题所在

二、抓包过程

1、把tcpdump脚本通过如下指令发送到设备端的/data/local/,进入设备的/data/local/路径下修改文件权限

adb push tcpdump /data/local/ #传到指定路径

chmod 777 tcpdump #修改权限

2、执行抓包指令

tcpdump -p -vv -s 0 -C 100 -w /sdcard/xxx.pcap #相关参数请自行查找

3、当抓取的文件过多时,可以进入wireshark安装目录执行如下指令进行合并多个文件(比如有3个文件名为test.pcap\test_1.pcap\test_2.pcap)

mergecap.exe -w test.pcap test_*.pcap #第一个为你要保持的路径和文件名,后缀必须以.pcap结尾,第二个为需要合并的文件

三、TCP握手和断开过程

完成的交互过程就是一个典型的HTTP协议的应用过程。

HTTP是基于T CP的连接,因此,建立HTTP连接必须经过TCP的过程,TCP的建立过程是3次握手的过程。然后就是HTTP过程,HTTP只有两种报文,请求和应答报文。完成http过程后,3次断开tcp连接。

第一次握手连接

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图

TCP第一次握手连接

第二次握手的数据包

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图

TCP第二次握手连接

第三次握手的数据包

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:

TCP第三次握手连接

结束请求

tcp三次握手结束之后就是HTTP请求

结束请求

四、针对抓取的包进行分析

1、通过打印的日志找到服务器IP地址

2、把抓取的数据包用wireshark工具打开,输入过滤条件,如下图

分析数据包

3、分别核对查看TCP的三次握手请求是否正常,如下图

TCP第一次连接

TCP第三次连接

4、结论

1、从TCP握手连接过程来看,第二次握手连接不成功(即服务器可能存在没有接收到消息或者接收到消息后没有返回给客服端),接下来就得分析服务器端的日志信息了

2、从服务端分析的原因为:服务器刚好在释放资源时,客户端发来请求,导致服务器没有及时做处理导致出现超时等异常。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自学测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、思路分析
  • 二、抓包过程
  • 三、TCP握手和断开过程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档