原创 吴就业 170 0 2024-02-06
本文为博主原创文章,未经博主允许不得转载。
本文链接:https://wujiuye.com/article/b1203114a320443ba6fc08e30e529df1
作者:吴就业
链接:https://wujiuye.com/article/b1203114a320443ba6fc08e30e529df1
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。
只因请求头deviceId多了一个‘\n’导致,服务端接收到的body是空的。
我司基于idl语言自研客户端与服务端通信的rpc框架,客户端向服务端发送idl调用,底层实现是发送http请求,请求经过自研的七层流量网关,由网关代理转发给后端服务。
经排查,客户端发送idl请求,服务端收到请求且正常处理请求并响应客户端,确认响应body不为空,但客户端看到的现象是响应body为空。
从问题现象来看,已经完全可以确认是网络问题,那么排查网络问题肯定就是抓包分析了。
步骤一:让客户端帮忙抓包,获取客户端->网关链路的http数据包。
发现客户端请求http包deviceId后面多了个“\n”,数据包是不正常的。然后客户端没收到响应,但网关却正常处理了请求,并转发给后端服务。
步骤二:抓包网关->后端服务链路的websocket包。
发现请求响应正常,后端服务确实响应了数据包给网关。
正常的数据包:
有问题的数据包:
deviceId多了一个‘\n’:
如果你觉得Wireshark上手难,可以试试这款TCP数据包分析工具:https://www.chattcp.com/
只因请求头deviceId多了一个‘\n’导致的现象,修正deviceId后正常。
但是有个疑问待解决:为什么请求被正常处理了,但是网关没能把响应返回给客户端?
声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。
了解网络协议、学会利用tcpdump抓包,学会利用Wireshark分析数据包,将能帮助我们解决一些仅从客户端日记分析或仅从服务端日记分析无法解决的疑难杂症。本篇结合笔者经历的一些实战案例,带大家掌握网络问题排查必备技能:tcpdump抓包分析。
自研实现文件上传下载的中间件在测试阶段发现断点续传有问题。具体表现是:使用wget下载mp4文件可以正常播放,用google浏览器打开链接,google浏览器无法正常播放mp4视频。
订阅
订阅新文章发布通知吧,不错过精彩内容!
输入邮箱,提交后我们会给您发送一封邮件,您需点击邮件中的链接完成订阅设置。