发生场景:A系统发送Http请求调用B系统提供的接口;

发生问题:A系统报错,提示 invalid http response 错误信息;

问题分析:根据翻译,无效的Http响应,初步判断是服务提供方出现的问题,也就是回复的内容不对。那么具体怎么定位呢。需要慢慢排查。如果问题始终难以定位,建议安装Wireshark抓包软件,进行抓包分析。本案例截图如下:

response404如何解决(Http请求出现invalidhttpresponse问题的原因分析)(1)

response404如何解决(Http请求出现invalidhttpresponse问题的原因分析)(2)

​编辑

我们按照第一列序号顺序梳理:

第15~19行是TCP握手过程;

第20行是上送请求报文;

第21行是确认ACK报文;

第22~24是本次发生错误的重点,continuation是代表打包分片的意思,也就是回复的报文太大拆成了报文块,但是本次直接回复了这个块是有问题的。这种报文块的出现应该在正常回复之后,也就是说,即使有分包也应该在截图的第29行之后;但是本次报文回复分析不应该被分包;随后对分包里面的内容进行了分析,最终定位了是服务器偶发的一个问题;是服务器存在偶发的bug导致将其他I/O流的部分报文段发送给了客户端。

第26行因为收到了错误的回复报文,客户端无法解析所以发送FIN报文,通知服务器要进行关闭TCP;

第29行发送了关闭请求报文后,客户端又收到了服务器的正常回复报文;

第30~40行因为发送了关闭请求,有收到其他回复报文,所以客户端尝试多次发送了RST报文;

,