TCP与UDP的区别、TCP可靠、UDP不可靠。
TCP:可靠、面向连接、字节流、一对一、传输层。
UDP:不可靠、无连接、数据报、一对一或一对多或多对一或多对多、传输层。
(1)TCP有三次握手建立连接,四次挥手关闭连接的机制。
(2)TCP有滑动窗口和拥塞控制算法。
(3)TCP保留着超时重传的机制。
(4)TCP对于每份报文也存在校验,保证了每份报文的可靠性。
【注】
滑动窗口:
是传输层进行流量控制的一种措施,
接收方通过通告发送方自己的接收窗口大小,从而控制发送方的发送速度,
防止发送方发送速度过快而导致自己被淹没。
拥塞控制:
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。
拥塞是指一个或多个节点的数据报超载,而TCP又会有重传机制,导致过载。
TCP拥塞控制分为四种:慢开始、拥塞避免、快恢复、快重传。
发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,
并且动态变化:网络没有拥塞时cwnd增大,网络有拥塞时cwnd减小。
判断网络拥塞的依据:发生了重传。
【注】发送方将拥塞窗口作为发送窗口:swnd = cwnd。
维护一个慢开始门限ssthresh状态变量:
当cwnd < ssthresh时,使用慢开始算法;
当cwnd > ssthresh时,停止使用慢开始算法改为使用拥塞避免算法;
当cwnd = ssthresh时,既可以使用慢开始,也可以使用拥塞避免算法。
慢开始:由小到大逐渐增加拥塞窗口的大小,每接一次报文,**指数增加**。
拥塞避免:拥塞窗口缓慢增加,每接一次报文,**加一**。
快恢复之前的策略:网络产生拥塞,将ssthresh设置为此时发送窗口的一半,重新启动慢开始和拥塞避免。
快恢复:网络产生拥塞,**将ssthresh和cwnd都设置为此时发送窗口的一半**。
快重传:发送方一旦收到了连续的**三个冗余ACK**,就将相应的报文立即重传,不需要等待超时重传定时器溢出再发送该报文。
(1)UDP面向数据报,无连接,数据报发出去了就不会保留备份。
(2)UDP仅仅在IP数据报的头部加入校验和复用。
(3)UDP没有服务器和客户端的概念。