网络排查
抓包
技术
- tcpdump:依赖一个底层能力:BPF
 - tcptrace:命令行分析抓包文件工具
 - wireshark
 - BPF:BSD Packet Filter,基于寄存器的虚拟机抓包方式
 - libpcap:BPF 的一层 API 封装
 - WinPcap:libpcap 的 Windows 版本
 - eBPF:更加通用的内核接口,不仅能支持网络抓包,还能支持网络以外的内核观测点的信息收集等工作
 
文件类型
- pcap:libpcap 的格式,也是 tcpdump 和 Wireshark 等工具默认支持的文件格式
 - cap:含有一些 libpcap 标准之外的数据格式
 - pcapng:单个抓包文件就可以包含多个网络接口上抓取到的报文
 
网络诊断
- 探测类工具:ping、traceroute、mtr、nc、telnet 等,它们都是从一端发起,对另外一端发送探测报文,然后观测报文的丢失、乱序、时延等情况,nc 和 telnet,则主要是测试传输层连通性的
 - 统计类工具:netstat 主要是通过 /proc 文件系统收集信息的,而 ss 主要通过 netlink 内核接口获取数据
 
IP透传
- 应用层:HTTP协议的X-Forwarded-For 头部
 - 传输层:TCP首部Options字段 使用最长为 40 字节的位置来存储真实IP,需要通信双方都进行改造
 - 网络层:可以直接通过修改数据包的源IP字段来进行透传,这种方式前端LB就无法收到回包
 - 协议改造:客户端在 TCP 握手完成之后,在应用层数据发送之前,插入一个包,这个包的 payload 就是真实源 IP