网络——TCP核心机制

网络——TCP核心机制

  对于TCP来讲,最核心的两个机制就是可靠传输尽量提高传输效率

  对于可靠传输来讲,TCP采取三种机制保证传输的可靠性。

  1、确认应答机制

  确认应答ACK机制,每个ACK应答都带有对应的确认序列号,告知发送者,我已经接收了哪些数据,下次该从哪里继续发。

  2、超时重传机制

  若接收方没有返回确认应答ACK报文,则发送方隔一段时间后,再次传输同样的数据,降低丢包的可能性。

  3、连接管理机制

  先试探对方是否适合与我进行通信,三次握手,四次挥手。


  除了要保证可靠性外,TCP还采取下面几种机制提高传输效率

  4、滑动窗口机制

  由于确认应答机制对于每一个发送的数据段都会返回一个ACK报文,在收到ACK后才会继续发送下一个数据段,若数据的往返时间较长,则这样做效率就会很低,性能很差。
  TCP采取滑动窗口机制,设置一个窗口大小,在该窗口中的数据无需等待确认应答就可继续发送数据。每当收到某数据报的ACK应答后,窗口就会向后滑动。操作系统开启缓冲区用以保存还没有确认应答的数据,若收到确认应答后,则会从缓冲区中删掉。
  在滑动窗口机制中就不是使用超时重传机制了,而是使用快速重传机制,若发生数据报丢包情况,接收端反复给发送端主机发送相同的序列号,若发送端主机连续三次收到相同的序列号,说明该序列号所对应的数据报应该得重新发送。比如,一个滑动窗口中的数据从1000传到7000,而1000-2000序列号的数据报丢失,但其他数据发送接收正常,发送端会反复收到3次相同的确认应答1001,会对1001-2000这段数据进行重传,因此当接收端成功接收1000-2000的数据报后,直接返回序列号7001。其他正常接收的数据都被放在操作系统的接收缓冲区了。
在这里插入图片描述
  在理解流量控制和拥塞控制前首先要知道实际上的数据传输是:发送方->接收方缓冲区->接收方,类似于一个生产消费者模型。

   4.1.流量控制机制

  由于接收方缓冲区大小存在界限,一旦发送端发送数据太快,会导致接收端缓冲区溢满,若继续发送数据,缓冲区将不再接收数据,此时就会导致数据溢出,因此需要采用流量控制决定发送端的发送速度。
  流量控制:接收端将接收端缓冲区的大小赋值为TCP首部中的“窗口大小”字段,并通过确认应答ACK报文返回给发送端,发送端会根据这个窗口大小的数值来调整自己的发送速度。窗口越大,发送速度越快,若接收端缓冲区已满,则将窗口大小设置为0,此时发送端就不会发送数据,而是定期发送一个窗口探测数据段获取接收端当前的窗口大小。

    4.1.1.延迟应答

   若接收端收到数据后立即返回ACK应答,此时返回的窗口大小可能比较小,假设接收端处理数据的速度比较快,短时间内就可以处理大量数据。此时若直接返回,就会浪费大量的缓冲区,而如果采用延迟应答,等待一会再响应,则会放大窗口大小,使网络吞吐量越大,效率越高。(eg:缓冲区设置为1M,一次收到500K,直接返回窗口大小就是500K,若接收端2ms就能处理300K,则过2ms后,就能返回窗口大小为800K了)

    4.1.2.捎带应答

   由于存在延迟应答,TCP发送确认应答的同时也发送其他数据。减少收发数据的次数,提高网络利用率。

   4.2.拥塞控制机制

   
  由于不清楚当前网络状态,因此不能直接发送大量的数据,若在网络拥堵的状态下发送大量数据可能会导致网络瘫痪。
  拥塞控制:采用慢启动机制,先发少量的数据探测此时的网络拥堵状态,再决定按照多大的速度传输数据。发送开始时将拥塞窗口设置为1,每收到一个ACK应答,拥塞窗口+1。这样的增长是指数式增长,当然也不会一直增长,当增长到一定值时,按照线性方式增长。当网络发送阻塞时(少量的丢包超时重传),吞吐量立即会下降。

  实际上的窗口大小==min(流量控制窗口大小,拥塞控制窗口大小)
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值