TCP/IP协议简记

来源:互联网 发布:平板下载不了软件 编辑:程序博客网 时间:2024/06/04 17:59
引用:TCP/IP详解,图解TCP/IP
摘记TCP学习中的内容
滑动窗口 -- 实现流量控制
1. TCP每发一个段就要确认应答一次,当往返时间越长时,通信性能就越低
为了解决这个问题,引入了窗口这个概念。窗口大小就是无需等待确认应答而可以继续发送数据的最大值。使用大量的缓冲区,对多个段同时进行确认应答的功能


如上图:
若窗口的数据在传输中丢失,数据要重发,所以发送端在没收到接收确认前要在缓冲区中保留这部分数据 。
收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置。
2. 窗口控制与重发控制
数据出现丢失时:
当应答未能返回,但数据已经到达对端时,是不需要再进行重发的
当某一报文段丢失时,发送端会一直收到相应序号的对应应答,如果3次接收同一个确认应答,就会进相应的数据进行重发。
3. 流控制
防止接收端在高负荷等情况下无法接收数据,导致频触发重发机制,TCP提供一种可以让发送端根据接收端的实际接收能力控制发送的数据量。这就是流控制。具体操作为,接收端主机向发送端主机通知自己可以接收数据的大小 ,于是发送端会发送不超过这个大小限度的数据。
接收端会根据自己的缓冲区情况对窗口大小的值进行调整。
当接收端缓冲区满时,不得不暂时停止接收数据,之后发送端和接收端都会发送相应的窗口探测的数据段。

滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。
关于滑动窗口协议,书上还介绍了三个术语,分别是:
  1. 窗口合拢:当窗口从左边向右边靠近的时候,这种现象发生在数据被发送和确认的时候。
  2. 窗口张开:当窗口的右边沿向右边移动的时候,这种现象发生在接受端处理了数据以后。
  3. 窗口收缩:当窗口的右边沿向左边移动的时候,这种现象不常发生。
TCP就是用这个窗口,慢慢的从数据的左边移动到右边,把处于窗口范围内的数据发送出去。这就是窗口的意义。窗口的大小是可以通过socket来制定的,4096并不是最理想的窗口大小,而16384则可以使吞吐量大大的增加。

拥塞窗口
上面的策略用于局域网内传输还可以,但是用在广域网中就可能会出现问题,最大的问题就是当传输时出现了瓶颈(比如说一定要经过一个slip低速链路)所产生的大量数据堵塞问题(拥塞),为了解决这个问题,TCP发送方需要确认连接双方的线路的数据最大吞吐量是多少。这,就是所谓的拥塞窗口。
拥塞窗口的原理很简单,TCP发送方首先发送一个数据报,然后等待对方的回应,得到回应后就把这个窗口的大小加倍,然后连续发送两个数据报,等到对方回应以后,再把这个窗口加倍(先是2的指数倍,到一定程度后就变成现行增长,这就是所谓的慢启动),发送更多的数据报,直到出现超时错误,这样,发送端就了解到了通信双方的线路承载能力,也就确定了拥塞窗口的大小,发送方就用这个拥塞窗口的大小发送数据。要观察这个现象是非常容易的,我们一般在下载数据的时候,速度都是慢慢“冲起来的”
总结起来就是,慢开始,拥塞控制,快重传,快恢复(详见笔记5)
以上就是TCP数据传输的大致流程,虽然并不细致,但是足以描述TCP的工作原理,重点是TCP的流量控制原理,滑动窗口,拥塞窗口,ACK累计确认等知识点。
由此,有了这些机制,就可以有效地减少通信开始时连续发包导致的网络拥堵,还可以避免网络拥塞情况的发生。

0 0
原创粉丝点击