一篇文章快速解决网络调试问题

本文介绍了五种网络诊断工具:ping用于检查网络连通性;ifconfig显示所有网络设备;netstat和lsof帮助理解网络连接状态;tcpdump用于复杂环境下的抓包分析,助力报文理解和问题排查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 ping : 查看当前网络是否连通

二、 ifconfig : 用来显示当前系统中的所有网络设备,通俗一点的说,就是网卡列表。

三、 netstat 和 lsof: 对网络状况了如指掌

  • netstat 和 lsof

    	netstat -alepn
    
  • netstat 告诉我们 IP 地址和端口使用的情况,以及各个 TCP 连接的状态。还会把所有 IPv4 形态的 TCP,IPV6 形态的 TCP、UDP 以及 UNIX 域的套接字都显示出来。

    lsof -i :8080 //定位被占用的8080是那个进程
    
  • lsof 的常见用途之一是帮助我们找出在指定的 IP 地址或者端口上打开套接字的进程.

    netstat Socket -x -alepn 查看端口对应那个文件
    lsof /var/run/docker.sock //查看随打开了这个文件
    
  • Isof 和 netstst 可以结合起来一起使用。

四、 tcpdump: 抓包利器

  1. 指定网卡:

    tcpdump -i eth0
    
  2. 指定来源:

    tcpdump src host hostname
    
  3. 抓的包是 TCP,且端口是 80,包来自 IP 地址为 192.168.1.25 的主机地址。

    tcpdump 'tcp and port 80 and src host 192.168.1.25' 
    
  4. 如果我们对 TCP 协议非常熟悉,还可以写出这样的 tcpdump 命令:

    tcpdump 'tcp and port 80 and tcp[13:1]&2 != 0'
    

    这里 tcp[13:1]表示的是 TCP 头部开始处偏移为 13 的字节,如果这个值为 2,说明设置了 SYN 分节,当然,我们也可以设置成其他值来获取希望类型的分节。注意,这里的偏移是从 0 开始算起的,tcp[13]其实是报文里的第 14 个字节。

Flags [ ]是包的标志,[P]表示是数据推送,比较常见的包格式如下:

  • [S]:SYN,表示开始连接
  • [.]:没有标记,一般是确认
  • [P]:PSH,表示数据推送
  • [F]:FIN,表示结束连接
  • [R] :RST,表示重启连接

我们可以看到最后有几个数据,它们代表的含义如下:

  • seq:包序号,就是 TCP 的确认分组
  • cksum:校验码
  • win:滑动窗口大小
  • length:承载的数据(payload)长度 length,如果没有数据则为 0

此外,tcpdump 还可以对每条 TCP 报文的细节进行显示,让我们可以看到每条报文的详细字节信息。这在对报文进行排查的时候很有用。

总结:

  • ping 可以用来帮助我们进行网络连通性的探测。
  • ifconfig,用来显示当前系统中的所有网络设备。
  • netstat(可以用ss 替换) 和 lsof 可以查看活动的连接状况。
  • tcpdump 可以对各种奇怪的环境进行抓包,进而帮我们了解报文,排查问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值