TCP/IP可靠性传输的重点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zijikanwa/article/details/80242836
1. TCP建立连接(3次)和连接释放(4次)的图

(1)建立TCP连接(三次握手)

(2)释放TCP连接(四次握手)



2. TCP和UDP的特点
2.1 TCP的特点
(1)面向连接的运输层协议
(2)每条TCP连接是点对点的(一对一)
(3)提供可靠支付的服务
(4)面向字节流
  • 说明
    • 虽然应用进程和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。
    • TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应该包含多少个字节,并不关心应用进程一次把多长的报文发送到TCP的缓存中。
2.2 UDP的特点
(1)无连接的运输层协议
(2)支持一对一、一对多、多对一、多对多的交互通信
(3)使用尽最大努力支付,即不保证可靠支付
(4)面向报文的
(5)没有拥塞控制


3 以字节为单位的滑动窗口机制
(1)指一个指定大小的窗口,包括发送窗口和接收窗口。其中发送窗口是通过接收窗口设置的。
(2)对于发送方:有三个指针(P1:指向发送窗口的起始点;P2:指向已发送但未收到确认数据点;P3:指向发送窗口的结束点)
(3)对于接收方:没有指针,但会向发送方发送自己收到的按序的最后的确认点
(4)发送缓存和接收缓存

4. 流量控制
(1)流量控制:通过控制滑动窗口的大小来控制发送端的发送速率,让接收方来得及接收。
(2)有时会出现死锁的情况。如:
  • 接收方对发送方进行流量控制,发送了一个滑动窗口为0的设置报文,这时发送端接收到此报文,并设置滑动窗口为0。
  • 接收方此时有缓存空间了,发送一个滑动窗口为300的设置报文,但这个报文中断丢失了,发送端并没有接收到,这就造成了双方都无动作的死锁状态。
(3)解决思路:当0窗口的报文被发送端接收到时,此时会有一个持续计时器,到时间会向对方发送窗口为0的确认报文,此时对方返回的如果是0,继续重置计时器,否则将设置滑动窗口为给定值。

5. TCP的拥塞控制
5.1 拥塞窗口的定义
  • 发送方维持一个拥塞窗口cwnd,并让发送窗口等于拥塞窗口。
5.2 出现网络拥塞的条件
  • 对资源的需求总量 > 可用资源
5.3 发送方如何知道网络发生拥塞?
  • 当网络发送拥塞时,路由器就丢弃分组。
5.4 拥塞控制的方法
  • 慢开始门限ssthresh:表示一个临界点,是慢开始算法和拥塞避免算法的临界点
(1)慢开始
  • 为了探测一开始的网络状况,最初将从很小的流量开始,每接收一个确认,拥塞窗口大小+1,也就是说每过一个轮次,拥塞窗口大小翻倍。
(2)拥塞避免
  • 当拥塞窗口到达一定值(ssthresh)时,不再以指数形式增长,而改为线性形式增长。
(3)快重传
  • 接收方每收到一个失序报文的时候就进行重复确认,当重复确认次数达到3次时,发送方将不等待超时计时器,而会立即发起对确认位置的下一位置的数据重传。
  • 举例:如发送M1 M2 M3 M4 M5,先后到达M1 M3 M4 M5,M2丢失了,那么按照快重传的原则,接收方将在确认M1后,接收到的M3 M4 M5都将发起重复确认M1的报文,当M5到达的重复确认M1的报文到达发送端时,发送端立即重传M2的数据,不会再等到超时计时器的完整时长。
  • 好处:增加了网络吞吐量
(4)快恢复
  • 发送端在连续收到三个重复确认后,将ssthresh阈值减半,拥塞窗口设置为ssthreash减半后的数值,并执行拥塞避免算法。
  • 如果不使用快恢复算法:则当网络出现超时,ssthresh阈值减半,拥塞窗口重新设置为1,并执行慢开始算法。

6. 流量控制 & 拥塞控制
(1)区别
  • 流量控制
    • 是点对点通信量的控制(端对端的问题)
    • 目的:抑制发送端发送数据的速率,以使接收端来得及接收。
  • 拥塞控制
    • 是一个全局性的过程(对于整个网络而言)
    • 目的:防止过多的数据注入到网络中,使网络中的路由器或链路不至于过载。

猜你喜欢

转载自blog.csdn.net/zijikanwa/article/details/80242836
今日推荐