海外环境下HTTP异常分析

1.背景

使用紫光展锐W307芯片(uws6130e),在海外环境使用海外sim卡(英国网络O2, Three运营商), 在使用使用过程中发现了,HTTP网络请求异常。

2.O2运营商卡

O2运营商卡,http出现的网络现象,socket建立连接后,一旦发送数据,立马会得到对端RST+ACK回复 (也就是无效请求,被拒绝)。其实服务端进行抓包,数据并未到达服务端,由于使用运营商网络 中间节点较多,我们只能从无效请求分析,猜测这个无效请求是由于什么造成的,我们使用python socket 进行尝试模拟这个请求(其实在中国请求正常,在英国这个O2运营商网络上不正常)。 最后锁定了HTTP header问题,我们这个header缺少content-length, 国内没有问题,英国有问题 wireshark抓取分析(看到无效请求)

3.Three运营商

其实由于我们这个header不规范,对端给回应过程中,也会有问题,当然核心原因是,我们本身 客户端没有完全处理完成就关闭了socket导致,出现了RST (不是上面的RST+ACK),然后导致了 一堆重传,实际客户端已经关闭了。

4.总结

其实在开发过程中,我们还是要注意规范,对于HTTP报文,我们还是遵循国际规范,防止 国内可以使用,到了海外环境就有异常发生。