wireshark常见问题分析

Wireshark

每天使用wireshark、tcpdump配合分析网络流量,有必要总结一下常见的问题以及现象,加深一下记忆,形成系统的只是体系,更容易形成长久记忆。

这里主要分析的是TCP协议,因为会涉及到重传、重组、乱序等常见问题。

常见

重复应答:TCP Dup ACK XXX#X

重复应答,一般是由于网络阻塞导致丢包,接收方告诉发送方重传某一个包,包的序号为# 号前的XXX,发送次数计数为# 号后面的X。
这里写图片描述

TCP重传

首先了解TCP重传,重传是最TCP协议中基本的错误恢复功能,目的是为了防止报文由于各种因素(包括应用故障、路由设备过载、超时等等)在传输过程中发生丢失,导致接收端无法收到完整的数据。
决定报文是否重传的机制是重传计时器,主要功能是维护重传超时值(RTO),当报文开始TCP传输时,重传计时器启动,收到接收方发来的ACK 时,计时器停止。报文发送至接收到ACK的时间称为往返时间(RTT)。对若干次时间取平均值,该值用于确定最终RTO值。在最终RTO值确定之前,使用重传计时器来确定每一次报文传输是否有丢包发生。确定是否有丢包发生以及确定RTO的过程如下:
RTO
当报文发送之后,但接收方尚未发送TCP ACK报文,发送方假设源报文丢失并将其重传。重传之后,RTO值加倍;如果在2倍RTO值到达之前还是没有收到ACK报文,就再次重传。如果仍然没有收到ACK,那么RTO值再次加倍。如此持续下去,每次重传RTO都翻倍,直到收到ACK报文或发送方达到配置的最大重传次数。

最大重传次数取决于发送操作系统的配置值。默认情况下,Windows主机默认重传5次。大多数Linux系统默认最大15次。两种操作系统都可配置。

TCP重复ACK以及快速重传

重复ACK是指在接收方收到乱序报文时,所发出的一类TCP报文。TCP使用报文头的序列号和确认号以有效保证数据按照发送的顺序接收和重组。

当TCP连接建立以后,握手过程中交换的一个最重要的信息是初始序列号(ISN)。一旦连接双方设定了ISN之后,接下来发送的报文所包含的序列号增加一个数据载荷值。
假设有个主机ISN是5000,发送500字节报文至接收方。一旦报文接收之后,接收端回复一个ACK号为5500的TCP ACK报文,基于以下公式:

Sequence Number In + Bytes of Data Received = Acknowledgment Number Out

按照上述计算结果,返回发送端的确认编号实际上是接收端希望收到的序列号。示例如下图:
这里写图片描述

数据接收方通过序列号来检查报文丢失。接收方通过追踪接收到的序列号,能够确认序列号是否乱序。当接收方收到一个不正常的序列号,它会假设传输过程中有报文丢失。为了正确重传数据,接收方必须拥有丢失报文,所以它发送包含有丢失报文正确序列号的ACK报文,以便发送方重传此报文。

当重传主机从发送端接收到3个重复ACK时,它会假设此报文确实在传送中丢失,并且立即发送一个快速重传。一旦触发了快速重传,所有正在传输的其他报文都被放入队列中,直到快速重传报文发送为止。过程如下图所示:
这里写图片描述

一般来说是网络拥塞导致丢包,比如发送方的报文到达不了接收方,接受方收不到预期序列号的报文就会发送dup ack给发送方,发送方收到3个dup ack就会快速重传而不必等超时定时器。

后续再介绍其他,待续。。。。。

参考链接:http://blog.jobbole.com/71427/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值