我们在排查过程中,第一个需要做的就是把应用层信息和网络层、传输层两层的信息一一对应起来,说得更准确些,就是需要把应用层信息翻译成网络层和传输层信息。
应用层信息包括以下内容:
应用层日志,包括成功日志、报错日志,等等;
应用层性能数据,比如 RPS(每秒请求数),transaction time(处理时间)等;
应用层载荷,比如 HTTP 请求和响应的 header、body 等。
传输层和应用层就包括以下内容:
传输层:TCP 序列号(Sequence Number)、确认号(Acknowledgement Number)、MSS(Maximum Segment Size)、接收窗口(Receive Window)、拥塞窗口(Congestion Window)、时延(Latency)、重复确认(DupAck)、选择性确认(Selective Ack)、重传(Retransmission)、丢包(Packet loss)等。
网络层:IP 的 TTL、MTU、跳数(hops)、路由表等。
从上边提到的两大信息内容,可以得出两大鸿沟:
应用现象跟网络现象之间的鸿沟:你可能看得懂应用层的日志,但是不知道网络上具体发生了什么。
工具提示跟协议理解之间的鸿沟:你看得懂 Wireshark、tcpdump 这类工具的输出信息的含义,但就是无法真正地把它们跟你对协议的理解对应起来。
网络排查的核心能力就是需要把这两大鸿沟填平的能力,这样就相当于能够把应用层信息翻译成网络层和传输层信息。
此文章为5月Day 25学习笔记,内容来源于极客时间《网络排查案例课》。