TCP和UDP的区别,深入理解TCP三次握手和四次挥手的全过程( 二 )

文章插图
为了防止cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量 。ssthresh的方法如下:
当cwnd < ssthresh时,开始使用慢开始算法;当cwnd > ssthresh, 改用拥塞避免算法;当cwnd = ssthresh时,慢开始与拥塞算法任意 。
2.拥塞避免:
拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,这样拥塞窗口按照线性规律缓慢增长 。无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为?法判定,所以都当作拥塞处理),就把慢开始门限设置为出现拥塞时的发送窗口的一半,然后把拥塞窗口设置为1,执行慢开始算法:

文章插图
此外,还有快速重传和快速恢复,停止-等待协议,回退N帧协议,选择重传协议等 。
二、UDP协议:
无连接协议,也称透明协议,也位于传输层 。
TCP和UDP协议的区别
1) TCP提供面向连接的传输,通信前要先建立连接(三次握手机制); UDP提供无连接的传输,通信前不需要建立连接 。
2) TCP提供可靠的传输(有序,无差错,不丢失,不重复); UDP提供不可靠的传输 。
3) TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销 。
4) TCP提供拥塞控制和流量控制机制; UDP不提供拥塞控制和流量控制机制 。
三、长连接和短连接
HTTP的长连接和短连接本质上是TCP长连接和短连接 。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议 。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致 。TCP协议是可靠的、面向连接的 。
在HTTP/1.0中默认使用短连接 。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接 。当客户端浏览器访问的某个html或其他类型的Web页中包含有其他的Web资源(如JAVAScript文件、图像文件、css文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话 。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性 。使用长连接的HTTP协议,会在响应头加入这行代码:
【TCP和UDP的区别,深入理解TCP三次握手和四次挥手的全过程】Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接 。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间 。实现长连接需要客户端和服务端都支持长连接 。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接 。
推荐阅读
- 阅读量越高收益越高?别傻了,收益还和这些因素有关
- 桂花的副作用和禁忌,桂花茶的副作用
- 寿眉和白露茶的区别,福鼎寿眉和福鼎白牡丹哪个好喝
- 甜贡菊和苦贡菊,黄山贡菊的正宗味道
- 阿胶怎么吃阿胶有什么作用和作用
- 飞燕草花期,飞燕草和大花飞燕草区别
- 生普和熟普什么时候喝合适,区分生普和熟普的方法
- 获得共和国勋章的人有哪些?
- 亚洲区和亚太区区别是什么?
- 吃石榴籽有什么好处和坏处?