美文网首页
再次记录使用tcpdump+wireshark分析TCP握手连接

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

作者: keitwo | 来源:发表于2019-03-18 08:04 被阅读0次

前言

刚好公司有个项目出现客户端访问服务器提示连接超时的情况,具体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、从服务端分析的原因为:服务器刚好在释放资源时,客户端发来请求,导致服务器没有及时做处理导致出现超时等异常。

相关文章

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

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

  • 即时通讯

    传输控制协议(TCP) TCP 为什么要进行3次握手?TCP的三次握手最主要是防止已过期的连接会再次传到被连接的主...

  • TCP10问

    1.TCP建立连接时需要几次握手, 断开连接需要几次握手? TCP建立连接需要三次握手, 断开连接要四次握手。现有...

  • TCP与UDP的区别

    TCP 与 UDP 的区别 1. TCP是面向连接的协议,UDP是无连接协议 TCP发送数据前使用三次握手建立连接...

  • Http网络请求

    一、TCP/IP协议 1.TCP/IP三次握手SYN:TCP/IP 建立连接时使用的握手信号ACK:确认字符,确认...

  • App 网络性能优化

    网络的流程 DNS解析 TCP连接握手 TLS连接握手 TCP/Http request/response 首先会...

  • tcp三次握手

    TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时...

  • ethereum p2p Kademlia的实现之八

    之前已经分析了ethereum的tcp通信的调用过程现在来看tcp通信的底层编码 1.建立连接时的握手过程 握手完...

  • TCP 三次握手

    三次握手 SYN (同步序列编号):是 TCP/IP 建立连接时使用的握手信号。TCP 连接的第一个包,非常小的一...

  • 数据库连接池

    不使用数据库连接池的步骤 TCP建立连接的三次握手MySQL认证的三次握手真正的SQL执行MySQL的关闭TCP的...

网友评论

      本文标题:再次记录使用tcpdump+wireshark分析TCP握手连接

      本文链接:https://www.haomeiwen.com/subject/fcscpqtx.html