TCP与UDP协议的特点与区别
作者:wsclwm 素材来源:本站原创 点击数: 更新时间:2014/8/23
点击上面的蓝色字 即可免费订阅!
微信名 (微信号:请填写您的微信号) |
TCP/UDP协议是TCP/IP协议簇里比较重要的两个协议了。大家先好好理解这两个协议的面向连接与面向无连接特性,以后我会再给大家介绍TCP/IP协议簇。
一、TCP
在讲TCP之前,我们先讲一下三次握手机制的原理。
TCP协议要提供可靠的连接服务,就要采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
这里解释一下,SYN全称Synchronize Sequence Numbers,即同步序列编号。意义是在握手时告知对方自己始发数据包的其实序列号。
简单来概括三次握手机制就是,请求端 A 向被请求端 B 发送连接请求,请求中携带一个SYN同步字段,B 接受到请求后,返回ACK应答字段,并也发送一个自己的SYN同步字段。 A 接受 B 的第二次握手的数据包后,就知道了 B 已经接受了自己的同步信息,然后 A 进行第三次握手,发送响应 B SYN字段的ACK字段,B 接受到第三次握手的信息后,就知道了 A 也接受了自己的同步字段,既然双方都认为了对方已经与自己同步了,则TCP连接成功建立。
TCP的三个特点:可靠性的传输协议;滑动窗口机制;拥塞避免。
TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,它是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。 在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。 在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法)。该算法主要包括三个主要部分:1,加性增、乘性减;2,慢启动;3,对超时事件做出反应。
与建立TCP连接的三次握手相对应,拆除TCP连接使用的是四次握手机制。
第一次握手:请求连接终止端 A 发送一个 FIN 第二次握手:被请求端 B 接受后,发送一个对 A FIN的响应 ACK 第三次握手: B 发送一个 FIN 第四次握手: A 接受后,发送一个对 B FIN的响应 ACK
为什么拆除时需要四次握手而不是两次?一个FIN 和 一个 ACK?
因为TCP 是使用全双工模式在两端接受发送数据的,有两个通道,所以需要2X2,4次握手。其实建立TCP连接也可以是4次握手,但是被请求端在三次握手中的第二次是同时发送ACK和SYN的,相当于把两次握手合成一次了。
拆除TCP连接要使用四次握手而不把第二次第三次合成一次,是为了避免TCP的半关闭情况。
二、UDP
用一句话概括为什么还需要UDP:因为TCP不能支持组播与广播!
UDP是不可靠的传输协议,表现在其不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
所以,在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP资源消耗小,处理速度快,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议。 |