zoukankan      html  css  js  c++  java
  • TCP协议的可靠传输

    一、TCP协议的可靠传输

    TCP的可靠传输基于ARQ协议;

    TCP的滑动窗口以字节为单位;

    考虑一种情况:窗口中的数据全部都发送出去了,但是全都没有收到确认号,可用窗口为0,窗口是不能向前推进的。

    一种特殊情况:窗口中所有数据都已经发送出去了,但确认号不是按顺序收到的

    so:可靠传输的效率不是很高。

    选择重传:选择重传需要指定需要重传的字节;每一个字节都有一个唯一的32位序号,选择重传需要指定的就是这个序号;这个指定的字节序号是存储在TCP选项里面的。

    选择重传更多时候是对一段字节进行重传的。重传的数据是一个边界,重传的序号不是指字节,而是指一个范围

    二、TCP协议的流量控制---TCP特有的功能

    接收方希望发送方可以将数据发送的慢一些。

    流量控制是指让发送方发送速率不要太快;流量控制是使用滑动窗口来实现的。

    接收方通过窗口的大小调整来告诉发送方继续进行数据的发送。

    考虑一种情况:接收方在告诉发送方可以接收数据的时候发生了报文丢失:发送方会一直等待,接收方认为发送方应该给自己发送报文,也会一直等待,两者都在等待,进入了死锁状态。

    TCP的可靠传输是对数据的确认,对特殊消息(如窗口大小)是没有超时重传的机制的,所以会导致发送方接收方进入死锁状态。-----解决方法为 坚持定时器

    坚持定时器:

    (1)当发送方接收到窗口为0的消息,就会启动坚持定时器

    (2)坚持定时器每隔一段时间发送一个窗口探测报文(询问到窗口是否变大)

    三、TCP的拥塞控制

    一条数据链路结果非常多的设备;数据联路中各个部分都有可能成为网路传输的瓶颈;

    流量控制与拥塞控制:

    (1)流量控制考虑点对点的通信量的控制,流量控制通过窗口进行通信量的限制

    (2)拥塞控制考虑整个网络,是全局性的考虑。报文超时则认为是拥塞

    拥塞控制的算法:

    (1)慢启动算法:

      由小到大逐渐增加发送数据量;

      每收到一个报文确认,就加一;   1  2  4  8  16   -----   指数增长   --- 慢启动阈值  --  到达阈值之后就会进行下一个算法

    (2)拥塞避免算法:

      维护一个拥塞窗口的变量

      只要网络部不拥塞,就试探着将拥塞窗口调大,每一次加一;1 2 4 8 16  17  18  19

    四、TCP连接的建立

    TCP标记位:重要的有3个

    (1)ACK:acnowledgement----确认位,ACK=1,确认位才生效

    (2)SYN:synchronization---同步位,SYN=1,表示连接请求报文

    (3)FIN:finish---终止位,FIN=1,表示连接释放

    为什么发送方要发出第三个确认报文呢?为什么TCP连接的建立要三次握手呢?

    两次握手就可以建立起连接了,但是还是需要第三次。

    (1)三次握手可以避免:已经失效的连接请求报文传送到对方,引起错误

     

     

     有了第三次握手,就不会对一开始延迟了的报文再进行第三次的处理。

    四、TCP连接的释放----四次挥手

    发送方:断开连接的第一个等待状态;断开连接的第二个等待状态;

     主动释放连接的这一方有一个等待计时的状态,只有在等待计时之后才会进入关闭状态。

     等待计时器:等待时间为2MSL,

      MSL(Max Segment Lifetime):最长报文段寿命,MSL建议设置为2分钟

     为什么需要等待2MSL?

      最后一个报文没有确认 ;

      计时器---确保发送方的ACK可以到达接收方;如果第四个报文没有被接收方接收到,2MSL时间内没有收到,则接收方会重发

      计时器---确保当前所有连接的所有报文都已经过期,如果最后一个报文都已经超过2MSL了,那么其他的报文也肯定超过了2MSL,都已经过期了。

  • 相关阅读:
    90后是怎么了
    从GNOME切换到KDE了
    Ubuntu 12.04中安装Evolus Pencil原型图绘制软件
    wine qq 2012 for linux
    发现来博客园比去csdn早
    [转]代理(Proxy)和委派(Delegate)的区别
    Debian Stable分支对于开发者的意义[续软件系统。。。]
    xj3d svn org.web3d目录结构分析
    不自觉的就陷入OS发行版选择的泥潭
    DNN Test
  • 原文地址:https://www.cnblogs.com/1220x/p/11762108.html
Copyright © 2011-2022 走看看