TCP协议相关内容总结

这一篇blog的内容主要是对TCP协议的相关内容进行总结,主要参考TCP/IP详解第19章到第23章的内容。

首先来看TCP的数据确认方式:对最后成功收到的字节的序号加1,进行确认(也就是所谓的下一个期望数据的序号)。

滑动窗口协议:

滑动窗口是发送方根据接收方的窗口大小进行流量控制的方式,窗口可以沿三个方向移动。

  1. 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。
  2. 当窗口右边沿向右移动时将允许发送更多的数据,上述行为被称为窗口打开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了TCP的接收缓存时。
  3. 当右边沿向左移动时,我们称之为窗口收缩。但协议标准强烈建议不要使用这种方式。
因为窗口的左边沿受另一端发送的确认序号的控制,因此不可能向左边移动。如果接收到一个指示窗口左边沿向左移动的ACK,则它被认为是一个重复的ACK,并被丢弃。

如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据。

慢启动:该算法为发送方的TCP增加了另一个窗口“拥塞窗口”。当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。每收到一个ACK,拥塞窗口就增加一个报文段。发送方取拥塞窗口与通过窗口中的最小值作为发送上限。拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。

TCP提供可靠的运输层。他使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,则重传该数据。

对每个连接,TCP管理4个不同的定时器。

  1. 重传定时器使用于当希望收到另一端的确认。
  2. 坚持定时器(persist)使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。
  3. 保活定时器(keepalive)定时器可检测一个空闲连接的另一端何时崩溃或重启。
  4. 2MSL定时器测量一个连接处于TIME_WAIT状态的时间。
有两种分组丢失的指示拥塞发生:发生超时和接收到重复的确认。

拥塞避免算法和慢启动算法需要对每个连接维持两个变量:一个拥塞窗口cwnd和一个慢启动门限ssthresh。拥塞避免是发送方使用的流量控制,而通告窗口则是接收方进行的流量控制。前者是发送方感受到的网络拥塞的估计,而后者则与接收方在该连接上的可用缓存大小有关。

TCP的坚持计时器

如果一个确认丢失了,则双方就有可能因为等待对方而使连接终止:接收方等待接收数据,而发送方在等待允许它继续发送数据的窗口更新。为防止这种死锁情况的发生,发送方使用一个坚持定时器来周期性地向接收方查询,以便发现窗口是否已增大。这些从发送方发出的报文段称为窗口探查。








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值