wireshark的简单使用

1、wireshark介绍

(1)、使用wireshark打开一个pcap文件时,可以讲time改变成实际时间

在这里插入图片描述

(2)、数据过滤

<1>、点击表头即可按照此条件排序(默认按照No.排序)

在这里插入图片描述

<2>、使用过滤器

使用Ctrl + F 快捷键,选择字符串,即可搜索
在这里插入图片描述

(3)、一些小tips

<1>、左侧实线表示一次会话的不同阶段

在这里插入图片描述

<2>、√ 表示对应的请求/响应

在这里插入图片描述

<3>、数据包大致结构

在这里插入图片描述

链路层

在这里插入图片描述

网络层

在这里插入图片描述

传输层

在这里插入图片描述

<4>、左侧小圆点,表示属于同一次请求。在 Transmission Control Protocol 中

在这里插入图片描述

一个完整的rtp包如下

在这里插入图片描述

<5>、TCP的时间戳由四部分构成:类别(kind)、长度(Length)、发送方时间戳(TS value):表示当前frame的时间戳、回显时间戳(TS Echo Reply):表示期望接收方响应frame的时间戳。时间戳选项类别(kind)的值等于 8,用来与其它类型的选项区分。长度(length)等于 10。两个时间戳相关的选项都是 4 字节。

是否使用时间戳选项是在三次握手里面的 SYN 报文里面确定的。那么这个时间戳选项有什么作用吗?主要有两个作用:

  • 两端往返时延测量(RTT)

在真实的网络中,各种丢包情况普遍存在,因此有一套超时重传机制。而通过TSval和TSecr值来设置timeout。

  • 序列号回绕(PAWS)

TCP 的序列号用 32bit 来表示,因此在 2^32 字节的数据传输后序列号就会溢出回绕。TCP 的窗口经过窗口缩放可以最高到 2^30,也就是1G,在高速网络中,序列号在很短的时间内就会被重复使用。
如果有 Timestamps 的存在,内核会维护一个为每个连接维护一个 ts_recent 值,记录最后一次通信的的 timestamps 值,当收到的数据包中 timestamps 值小于 ts_recent 值,就会丢弃掉这个数据包。等收到的数据包的timestamps 值大于 ts_recent,这个包可以被正常接收。
实际上timestamps 值是一个单调递增的值, 这个选项不要求两台主机进行时钟同步 。两端 timestamps 值增加的间隔也可能步调不一致,比如一条主机以每 1ms 加一的方式递增,另外一条主机可以以每 200ms 加一的方式递增。 此外, timestamps 是一个双向的选项,如果只要有一方不开启,双方都将停用。 在Linux下可以通过下面方式开启或关闭timestamp功能。

//0表示关闭,1表示打开功能cat /proc/sys/net/ipv4/tcp_timestamps

时间戳

2、使用wireshark分析TCP三次握手和四次挥手过程

三次握手

在这里插入图片描述

三次握手过程:

  1. 首先客户端发送一个SYN包给服务器(SYN=1,Seq为主机选择的这个连接的初始序号),然后等待应答。
    在这里插入图片描述

  2. 服务器端收到SYN包,回应给客户端一个ACK =x+1、SYN=1的TCP数据段(ACK表示确认序号有效,即收到上一个包,这里加1并不是ACK的值加1,ACK是一个标志位,这里会变成1,而x+1则是希望收到的下一个包的序列号,这个值放在包的确认序列号字段中,而只有ACK=1时,确认序列号才有效)。
    在这里插入图片描述

3、客户必须再次回应服务器端一个ACK确认数据段(这里的Seq为x+1)。
在这里插入图片描述

四次挥手

在这里插入图片描述

四次挥手过程:

第一次挥手:客户端 发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1状态(不能再发送数据到服务端,但能够发送控制信息ACK到服务端)。
第二次挥手:服务端收到FIN后,知道不会再有数据从客户端传来,发送ACK进行确认,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态。
第三次挥手:服务端发送FIN给对方,表示自己没有数据要发送了,服务端进入LAST_ACK状态,然后直接断开TCP会话的连接,释放相应的资源。
第四次挥手:客户端收到了服务端对FIN的ACK后,进入FIN_WAIT2状态(等待服务端完成资源释放的一系列工作:然后释放你为创建这个连接所分配的资源,并通知我你关闭了); 客户端收到了服务端的FIN信令后,进入TIMED_WAIT状态,并发送ACK确认消息。客户端在TIMED_WAIT状态下,等待2MSL一段时间,没有数据到来的,就认为对面已经收到了自己发送的ACK并正确关闭了进入CLOSE状态,自己也断开了到服务端的TCP连接,释放所有资源。当服务端收到客户端的ACK回应后,会进入CLOSE状态,并关闭本端的会话接口,释放相应资源。TIME_WAIT状态持续2MSL(MSL是数据分节在网络中存活的最长时间)。
在这里插入图片描述

网络上比较主流的文章都说关闭TCP会话是四次挥手,但是实际上为了提高效率通常使用三次挥手或两次挥手

三次挥手

不是每一次发送数据包都能对应收到一个 ACK 确认包,因为接收方可以合并确认。
而这个合并确认,放在四次挥手里,可以把第二次挥手、第三次挥手,以及他们之间的数据传输都合并在一起发送。因此也就出现了三次挥手。
在这里插入图片描述

两次挥手

在这里插入图片描述

在rtsp断开连接的时候,会出现两次挥手
第一次挥手
第二次挥手

3、使用wireshark分析rtsp数据包传输过程

  • 3次握手成功后,发送OPINIONS请求及响应如下
    客户端opinions请求
    服务端reply OK

  • DESCRIBE
    客户端describe请求
    服务端reply OK

  • SETUP
    客户端setup请求
    服务端reply OK

  • PLAY
    客户端play请求
    服务端reply OK
    对reply的ACK

  • 之后开始传递RTP数据包
    在这里插入图片描述

异常报文:

  • [TCP Dup ACK xxx#x] :表示第几次重新请求某一个包, XXX表示第几个包(不是Seq), X表示第几次请求。
    丢包或者乱序的情况下,会出现该标志。 下图中163行第0次请求103807的包,重复请求了6次
    在这里插入图片描述

  • [TCP Fast Retransmission] (快速重传)

    TCP协议规定,当接收方收到乱序片段的时候,需要重复发送ACK。比如接收到乱序片段9的时候,接收方需要回复ACK。回复号为8
    (7+1)。此后接收方如果继续收到乱序片段(序号不是8的片段),将再次重复发送ACK=8。当发送方收到3个ACK=8的回复时,发送方推断片段8丢失。即使此时片段8的计时器还没有超时,发送方会打断计时,直接重新发送片段8,这就是快速重新发送机制(fast-retransmission)。
    在这里插入图片描述

  • [TCP Retransmission] (超时重传)

    超时重传,如果一个包的丢了,又没有后续包可以在接收方触发[Dup Ack],或者**[Dup
    Ack]也丢失**的情况下,TCP会触发超时重传机制。
    在这里插入图片描述

  • [TCP Out-Of-Order] (报文乱序)

    [TCP Out-Of-Order]指的是TCP发送端传输过程中报文乱序了。

  • [TCP Previous segment not captured]

    在TCP发送端传输过程中,该Seq前的报文缺失了。一般在网络拥塞的情况下,造成TCP报文乱序、丢包时,会出现该标志。
    需要注意的是,[TCP Previous segment not
    captured]解析文字是wireshark添加的标记,并非TCP报文内容。

  • [TCP ZeroWindow]
    作为接收方发出现的标志,表示接收缓冲区已经满了,此时发送方不能再发送数据,一般会做流控调整。接收窗口,也就是接收缓冲区win=xxx
    ,告诉对方接收窗口大小。 传输过程中,接收方TCP窗口满了,win=0,wireshark会打上[TCP ZeroWindow]标签。
    在这里插入图片描述

  • [TCP window update] 接收方消耗缓冲数据后,更新TCP窗口,
    可以看到从win=0逐渐变大,这时**wireshark会打上[TCP window update]**标签
    在这里插入图片描述

  • [TCP window Full]
    作为发送方的标识,当前发送包的大小已经超过了接收端窗口大小,wireshark会打上此标识,标识不能在发送。

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值