系列文章
TCP详解(三):TCP流量控制——Flow Control
TCP详解(四):TCP拥堵控制——Congestion Control
本篇目录
什么是UDP
我们在TCP详解(一):什么是TCP中讲述过,什么是传输控制层和TCP。UDP同TCP一样,是一种传输控制协议,全称为User Datagram Protocol。
UDP数据包称为datagram,由header和data组成,data部分是真正传输的数据,header部分存储控制信息。
- source port:发送方主机端口号,代表数据从终端的哪个端口发出。
- destination port:接收方端口号,代表数据将抵达目标终端的哪个端口。
- length 数据长度,包含header的data。
- checksum:校验和,进行最基本的错误校验TCP与UDP的区别
TCP与UDP的区别
连接(Connection)
TCP在传送数据之前,必须通过握手建立TCP连接,而UDP不用。
头部大小(header size)
TCP数据包的头部占用20个字节,而UDP数据包的头部只占8个字节。
数据有序性
我们在TCP详解(一):什么是TCP中讲到,TCP会为待传输的数据的每个字节编上序列号,起始字节的序列号为随机数,后续字节依次加1。TCP接收端根据序列号对数据包排序,以及判断是否有数据包丢失,UDP的数据包不具备顺序。
数据确认机制
TCP接收端会对收到的每一个数据包回发一个ack确认包以确认成功接收了该数据包。UDP不存在该机制。
数据重传机制
当TCP数据包丢失或损坏,都会触发重传机制,包括超时重传和接收方连续三次发送同一数据包的ack包触发重传。UDP不存在该机制。
流量控制和拥堵控制
在TCP中,为了避免发送方发送的数据超出接收方的处理能力,在ack确认包通过receiver window来表明当前可接收的最大数据量,称之为流量控制。为了避免发送方发送的数据超出网络承载能力,通过congestion window表明当前网络可接收的最大数据量,称之为拥堵控制。发送方发送的数据受二者的限制,取二者的最小值。
UDP不存在该机制。
错误检测
TCP对数据完整性要求高,数据出现错误后将触发重传。UDP只进行一些基本的错误检测,并不能完全检测数据包的错误。
广播发送数据
TCP发送数据必须建立TCP连接,所以是一对一。UDP可支持广播发送数据。
TCP和UDP的优缺点
TCP的优点就是可靠,确保数据的完整性,且支持流量控制和网络拥堵控制。而这一切都是以牺牲速度得来的,所以它的缺点就是慢。
UDP与之相反,优点是速度快,但是数据完整性不能保证,丢包及数据错误都不能触发重传。
TCP和UDP的使用场景
TCP常用于对数据可靠性要求很高的应用,比如邮件,http/https,ftp等。
UDP常用于对数据实时性要求高,可容忍一定的数据丢失和错误率,如视频聊天,在线游戏,DNS等。