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报文,我们还是遵循国际规范,防止 国内可以使用,到了海外环境就有异常发生。
您还没有登录,请您登录后发表评论。