利用Wireshark进行网络分析

本文介绍了Wireshark的使用技巧,包括过滤规则、TCP参数解读,MTU对包大小的影响,以及如何理解抓取到的包含HTTP包在内的复杂TCP交互。特别提到了TCP确认机制可能导致的包收发顺序误解。
摘要由CSDN通过智能技术生成

Wireshark

  • 一站式学习wireshark
  • wireshark过滤规则语法
  • 网络延迟会导致包的收发顺序并不是理想的,例如,发送某个包后接受到的ACK可能是之前包的ACK, 参见《wireshark网络分析的艺术》中的虚惊一场章节
  • TCP参数解读(详见《Wireshark网络分析就是这么简单》P57-TCP的连接启蒙)
    • Len是数据段的长度,这个长度不包括TCP头,Len=0的包不代表就没有字节
    • ACK: 确认号,假如需要确认一个"Seq:x Len:y"的包,需要回复的确认号是x+y
    • 当前包的Seq等于上一个包(源地址和目的地址均相同)的Seq+上一个包的Len
    • 每个包的TCP层含有的“window size”, 不是发送窗口,而是在向对方声明自己的接收窗口
    • 发送窗口是无法看到了,只能通过推断得到一些关于发送窗口的信息
  • 其它
    • Follow Tcp Dump 会显示相应的会话信息
    • wireshark中的一些提示的含义,参见《wireshark网络分析的艺术》中的Wireshark的提示一章
    • MTU,参见《wireshark网络分析的艺术》中的MTU导致的悲剧
    • 抓取回环包时,需要在lo口抓取,示例: tcpdump -i lo -w ./coap5.cap

问题和原理

MTU1500,为何抓包到1514?
  • 抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,其最大值是 6+6+2+1500=1514。这是由于据 RFC894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和 1字节的帧开始定界符,具体就是:7字节前导同步吗+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500+4字节的 FCS。 按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是 1526字节呢?原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如 果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交 “设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据。因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,其最大值是 6+6+2+1500=1514

举例(结合包)

  • wireshark抓HTTP包

    在这里插入图片描述

    • 抓到的包如上图所示,可知我们需要的是两个HTTP的包,序号分别为2和4,但实际中还有两个TCP包,经分析TCP包和HTTP包除应用层和物理层外其它都相同,seq和ack都相同,但len不同。 猜测TCP本身有一套确认机制,所以自动确认,然后发送HTTP数据时,由于这期间没有收到对方发过来的数据,所以ACK和Seq(TCP确认时长度为0)的值是一样的?没看懂啥玩意,直接忽略

参考资料

  1. 《Wireshark网路分析的艺术》
  2. 《Wireshark网络分析就是这么简单》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值