TCP Retrasmission问题

在局域网内的两台服务器,可以互相ping通,但是不能提供服务。经过抓包,看到大量的TCP Retranmission与TCP Dup。即:重传与重复收到包。

什么导致网络丢包

有两种可能性:

  • 链路层问题,比如网卡没插好之类的
  • 网路拥堵。

网路拥塞会导致入口与出口的很多数据包被丢弃,一般在网络带宽不匹配时出现,对方10Gbps,这端1Gbps。这种丢包属于正常现象。

TCP是一个面向连接的协议,主要功能为创建一个能跟踪数据的连接,看那些数据被发送了,那些数据被确认了。TCP在检测到数据包丢了之后,会进行重传,确保数据的可靠性传输。

TCP Retranimmsion

TCP连接发送的数据都有一个序列号(seq number),当接收方接收到这个序列号的数据时,它会回复确认收到了这个序列号的数据。

在发送方发送一个TCP包之后,它会启动了一个重传的计时器(计时器时长会变化),如果在超过时间之后还没有收到确认包,发送方会假设数据丢失了,然后进行重传(retransmit)。

TCP Retrasmission问题_第1张图片
TCP header

TCP Duplicate / Selective Acknowledgments

即重复确认与选择性的确认,很多抓包分析器都有重复确认的条件。比如当两个相同的ACK包内部为相同的序列号被检测到。那么包分析器就会标记为重复。

TCP Retrasmission问题_第2张图片
TCP Duplicate / Selective Acknowledgments

在高延迟的网络环境中,客户端与服务器经常有很多的duplicate 确认包。

问题定位

经分析是因为应用程序CPU飙升到100%,应用程序集群不响应内容,导致程序不传包。

你可能感兴趣的:(TCP Retrasmission问题)