万事不要急,不行就抓一个包嘛!
一、网络问题分析思路
1、问题现象
确认问题现象是什么
丢包/访问不通/延迟大/拒绝访问/传输速度
2、报文特征
过滤找到与问题现象相符的报文
3、问题原因
根据报文特征和发生位置,推断问题原因
安全组/iptables/服务问题
4、发生位置
分析异常报文,判断问题发生的位置
客户端/服务端/中间链路.....
二、关注报文字段
- time:访问延迟
- source:来源IP
- destination:目的IP
- Protocol:协议
- length:长度
- TTL:存活时间(Time To Live)国内运营商劫持,封禁等处理
- payload:TCP包的长度
三、本机抓包
curl http://www.baidu.com
为什么不使用ping请求?
因为ping请求是ICMP请求:用于在 IP 网络上进行错误报告、网络诊断和网络管理。而curl请求是HTTP GET 请求。
追踪TCP流,可以看到三次捂手——》数据交互——》四次挥手
四、案例 TTL异常的reset
业务场景: 客户端通过公网去访问云上的CVM的一个公网IP,发现不能访问
TTL突发过长——》判断云上资源有无策略上的设置——》公网端判断原因运营商的封堵(TTL 200以下)
解决方案:报障运营商
四、案例 访问延迟-判断延时出现位置
业务场景: 客户同VPS内网,两CVM互相访问
目的端回包0.006毫秒——》链路无问题,回包时间过长——》CVM底层调用逻辑问题
五、案例 丢包
业务场景: 云上CVM访问第三网方网站失败,影响业务
五、案例 未回复http响应
业务场景:云上CVM访问第三网方网站失败,影响业务
ping正常,拨测正常——》客户端发送HTTP请求,目的端无HTTP回包,直接三次挥手——》确认根因服务端不回复我们——》推测:运营商封禁或者第三方网站设置了访问限制
六、基础&常见问题
1、了解TCP/IP四层协议
2、了解TCP 三次握手与四次挥手
SYN:同步位。SYN=1,表示进行一个连接请求。
ACK:确认位。ACK=1,确认有效;ACK=0,确认无效;。
ack:确认号。对方发送序号 + 1
seq:序号
FIN=1,断开链接,并且客户端会停止向服务器端发数据
3、Http传输段构成(浏览器的请求内容有哪些,F12中Network)
请求:
- 请求行(Request Line):包含HTTP方法(GET、POST等)、请求的URL和HTTP协议的版本。
- 请求头部(Request Headers):包含关于请求的附加信息,如用户代理、内容类型、授权信息等。
- 空行(Blank Line):请求头部和请求体之间必须有一个空行。
- 请求体(Request Body):可选的,用于传输请求的数据,例如在POST请求中传递表单数据或上传文件。
响应:
- 状态行(Status Line):包含HTTP协议的版本、状态码和状态消息。
- 响应头部(Response Headers):包含关于响应的附加信息,如服务器类型、内容类型、响应时间等。
- 空行(Blank Line):响应头部和响应体之间必须有一个空行。
- 响应体(Response Body):包含实际的响应数据,例如HTML页面、JSON数据等。
这些组成部分共同构成了HTTP传输过程中的请求和响应。请求由客户端发送给服务器,服务器根据请求进行处理并返回相应的响应给客户端。
4、DNS污染怎么办
DNS污染是指恶意篡改或劫持DNS解析的过程,导致用户无法正确访问所需的网站或被重定向到错误的网站。如果您怀疑遭受了DNS污染,可以尝试以下方法来解决问题:
1、更改本地的DNS。 公共DNS服务器Google Public DNS(8.8.8.8和8.8.4.4)
2、清理本地DNS缓存。 systemctl restart NetworkManager
。这将重启NetworkManager服务,刷新DNS缓存并应用任何新的DNS配置。
3、使用HTTPS。使用HTTPS访问网站可以提供更安全的连接,并减少DNS污染的风险。确保您访问的网站使用HTTPS协议。
5、traceroute路由追踪跳转过程
当您运行traceroute http://www.baidu.com命令时,它将显示从您的计算机到目标地址(http://www.baidu.com)之间的网络路径。它通过发送一系列的网络探测包(ICMP或UDP)来确定数据包从源到目标的路径,并记录每个中间节点的IP地址。
以下是一般情况下,traceroute命令可能经过的地址类型:
- 您的本地网络地址:这是您计算机所连接的本地网络的IP地址。
- 网关地址:如果您的计算机连接到一个局域网,它将经过您的网络网关,这是连接您的局域网与外部网络的设备。traceroute命令将显示网关的IP地址。
- ISP(互联网服务提供商)的路由器地址:数据包将通过您的ISP的网络传输,经过多个路由器。traceroute命令将显示每个路由器的IP地址。
- 目标地址:最后,数据包将到达目标地址,即http://www.baidu.com的IP地址。
6、Http状态码
100-199 | 表示请求已被接收,继续处理比如:websocket_VScode自动刷新页面 |
---|---|
200-299 | 表示请求已成功被服务器接收、理解和处理。200 OK:请求成功,服务器成功返回请求的数据。 201 Created:请求成功,服务器已创建新的资源。204 No Content:请求成功,但服务器没有返回任何内容。 |
300-399 | (重定向状态码)表示需要进一步操作以完成请求301 Moved Permanently:请求的资源已永久移动到新位置。302 Found:请求的资源暂时移动到新位置。304 Not Modified:客户端的缓存资源是最新的,服务器返回此状态码表示资源未被修改。 |
400-499 | 表示客户端发送的请求有错误。400 Bad Request:请求无效,服务器无法理解。401 Unauthorized:请求要求身份验证。404 Not Found:请求的资源不存在。 |
500-599 | 表示服务器在处理请求时发生错误。500 Internal Server Error:服务器遇到了意外错误(服务器配置出错/数据库错误/代码出错),无法完成请求。503 Service Unavailable:服务器暂时无法处理请求,通常是由于过载或维护。 |
7、CDN内容加速网络原理
原理:减少漫长的路由转发,就近访问备份资源
1、通过配置网站的CDN,提前让CDN的中间节点OC备份一份内容,在分发给用户侧的SOC边缘节点,这样就能就近拉取资源。不用每次都通过漫长的路由导航到源站。
2、但是要达到加速的效果,还需要把真实域名的IP更改到CDN的IP,所有这里还需要DNS的帮助,这里一般都会求助用户本地运营商搭建的权威DNS域名解析服务器,用户请求逐级请求各级域名,本来应该会返回真实的IP地址,但是通过配置会返回给用户一个CDN的IP地址,CDN的权威服务器再讲距离用户最近的那台CDN服务器IP地址返回给用户,这样就实现了CDN加速的效果。
8、前后端通信到底是怎样一个过程
内容参考:
小林coding:xiaolincoding.com/network/
哔哩哔哩:http://www.bilibili.com/video/BV1at…
Winshark:http://www.wireshark.org/
来源:juejin.cn/post/7311159008483983369