网络编程实战
盛延敏
前大众点评云平台首席架构师
44207 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
网络编程实战
15
15
1.0x
00:00/00:00
登录|注册

08 | 工欲善其事必先利其器:学会使用各种工具

-i :8080
-x
-alepn
过滤和匹配功能
抓包工具
lsof参数
netstat参数
查看活动连接状况
显示网络设备列表
ICMP协议
用途:网络连通性探测
netstat输出中Foreign Address显示的.的意思
tcpdump对UDP包的抓包处理
tcpdump
netstat和lsof
ifconfig
ping
思考题
工具使用

该思维导图由 AI 生成,仅供参考

你好,我是盛延敏,这里是网络编程实战第 8 讲,欢迎回来。
上一讲我们讲到了本地套接字,加上前面介绍的 TCP、UDP 套接字,你会发现我们已经比较全面地接触了套接字。
其实在平常使用套接字开发和测试过程中,我们总会碰到这样或那样的问题。学会对这些问题进行诊断和分析,其实需要不断地积累经验。而 Linux 平台下提供的各种网络工具,则为我们进行诊断分析提供了很好的帮助。在这一讲里,我将会选择几个重点的工具逐一介绍。

必备工具: ping

这个命令我想大家都不陌生,“ping”这个命名来自于声呐探测,在网络上用来完成对网络连通性的探测,这个命名可以说是恰如其分了。
$ ping www.sina.com.cn
PING www.sina.com.cn (202.102.94.124) 56(84) bytes of data.
64 bytes from www.sina.com.cn (202.102.94.124): icmp_seq=1 ttl=63 time=8.64 ms
64 bytes from www.sina.com.cn (202.102.94.124): icmp_seq=2 ttl=63 time=11.3 ms
64 bytes from www.sina.com.cn (202.102.94.124): icmp_seq=3 ttl=63 time=8.66 ms
64 bytes from www.sina.com.cn (202.102.94.124): icmp_seq=4 ttl=63 time=13.7 ms
64 bytes from www.sina.com.cn (202.102.94.124): icmp_seq=5 ttl=63 time=8.22 ms
64 bytes from www.sina.com.cn (202.102.94.124): icmp_seq=6 ttl=63 time=7.99 ms
^C
--- www.sina.com.cn ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5006ms
rtt min/avg/max/mdev = 7.997/9.782/13.795/2.112 ms
在上面的例子中,我使用 ping 命令探测了和新浪网的网络连通性。可以看到,每次显示是按照 sequence 序列号排序显示的,一并显示的,也包括 TTL(time to live),反映了两个 IP 地址之间传输的时间。最后还显示了 ping 命令的统计信息,如最小时间、平均时间等。
我们需要经常和 Linux 下的 ping 命令打交道,那么 ping 命令的原理到底是什么呢?它是基于 TCP 还是 UDP 开发的?
都不是。
其实,ping 是基于一种叫做 ICMP 的协议开发的,ICMP 又是一种基于 IP 协议的控制协议,翻译为网际控制协议,其报文格式如下图:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了在Linux平台下进行网络开发和测试时常用的工具,包括ping、ifconfig、netstat、lsof和tcpdump。其中,ping命令基于ICMP协议,用于探测网络连通性,而ifconfig命令则用于显示当前系统中的所有网络设备信息。netstat和lsof命令可以查看活动的连接状况,而tcpdump则是一款强大的抓包工具,具有强大的过滤和匹配功能。文章还提出了两个思考题,分别涉及tcpdump对UDP包的抓包处理以及netstat输出中Foreign Address显示的*.*的含义。通过本文的介绍,读者可以快速了解并掌握这些网络诊断工具的基本用法和原理,为日常的网络开发和测试提供了实用的技术支持。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络编程实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(31)

  • 最新
  • 精选
  • 对于 ping 的最后统计信息中 rtt min/avg/max/mdev = 4.512/4.579/4.647/0.078 ms 中的 mdev 时间是什么意思的?

    作者回复: 这个值我也没注意过,看了介绍是说mdev 就是 Mean Deviation 的缩写,它表示这些 ICMP 包的 RTT 偏离平均值的程度,这个值越大说明你的网速越不稳定。

    2019-08-20
    2
    12
  • icejoywoo
    ss可以替代netstat么,netstat有时候非常慢,ss速度很快

    作者回复: 可以的,作为一个老程序员,ss是我刚刚接触到的,学习了。

    2019-11-02
    10
  • 哦哟哟哟哟
    麻烦老师解答下。前面ifconfig命令关于网卡优先级的metric=1表示优先级最高、示例中三张网卡优先级都是1、那如何进行选择呢

    作者回复: 看你应用程序绑定到哪个网卡设备和Ip了

    2019-08-19
    2
    6
  • jay
    文中这句语: 即 ICMP 的类型, 其中 ping 的请求类型为 0,应答为 8。描述有误,请求类型为8,应答为0。 Type: 8 (Echo (ping) request) Type: 0 (Echo (ping) reply)

    作者回复: 感谢斧正,已经修改,待提交。

    2020-03-30
    2
    5
  • 明键
    IPv6的地址不是128位吗,为什么我数ifconfig的输出只有12字节?还有四字节到哪里去了呢?

    作者回复: IPV6的地址格式为X:X:X:X:X:X:X:X,一共8个X,其中每个X表示地址中的16b,以十六进制表示。 在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。 所以,看看你的地址里是不是有::哦。

    2019-11-27
    2
    5
  • 晚风·和煦
    老师,accept是发生在三次握手之后吗?😂

    作者回复: 在程序角度来说,accept函数表示的是三次握手的过程,如果从accept返回,表示三次握手成功,连接已经建立。

    2020-02-11
    2
    3
  • 超大红细胞
    tcpdump 抓取 1400 端口 UDP 报文并保存: tcpdump -i ens33 udp port -w ./udp.cap

    作者回复: 学习了

    2020-01-05
    2
    3
  • 极客雷
    ifconfig、netstat都是比较偏老的、不再维护的命令,为啥不与时俱进讲一下iproute2系列的命令

    作者回复: 这些命令在平时的trouleshooting还是很有用处的,毕竟还不能在生产环境都换成Linux 4/5版本吧。

    2019-10-22
    3
  • null
    如果对方禁ping 了,还有其他方法能测试与对方服务器的连通性么?

    作者回复: ping都不通了,可以认为对方服务器真的下线了

    2021-04-09
    3
    1
  • null
    macbook 下,也是使用 wireshark 配合 tcpdump 文件一起么?

    作者回复: mac是可以使用这两个工具的。

    2021-03-19
    1
收起评论
显示
设置
留言
31
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部