需求描述
最近,项目中与其他平台交互时,出现了建立http请求失败的情况,在项目中设置了重试3次的机制,仍然出现了少量的失败,由于要求成功率需要99.999%,所以需要处理下这个网络失败的原因。我们使用的是RestTemplate,配置的连接时间是5S,但是实际上1S左右就直接报错失败了,初步怀疑是在tcp三次握手的时候就失败了,所以需要在后台抓包,看下请求中的交互情况。
使用的抓包工具tcpdump
服务器上没有的,可以自己百度安装过程。先贴一份tcpdump各参数的详解,再结合我们的项目使用下。
A 以ASCII格式打印出所有分组,并将链路层的头最小化。
-c 在收到指定的数量的分组后,tcpdump就会停止。
-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。
-d 将匹配信息包的代码以人们能够理解的汇编格式给出。
-dd 将匹配信息包的代码以C语言程序段的格式给出。
-ddd 将匹配信息包的代码以十进制的形式给出。
-D 打印出系统中所有可以用tcpdump截包的网络接口。
-e 在输出行打印出数据链路层的头部信息。
-E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。
-f 将外部的Internet地址以数字的形式打印出来。
-F 从指定的文件中读取表达式