UDP
什么是UDP
UDP(User Datagram Protocol)用户数据报协议
特点:
面向无连接的,也就是通信双方不需要像TCP那样先建立连接才能发送数据
尽最大努力交付,不可靠,没有确认也没有重传机制。
面向报文,应用层传下来的报文有多大,都统一接收,既不合并,也不拆分,
所以IP很可能由于传输层的UDP报文过大,加上IP头后,大于MTU,出现分片的情况
而TCP在这里会有一个MSS的功能,他还有一个缓存,可以等到一个MSS的长度时,再一并
组成一个报文发下去。
没有拥塞控制,所以通常能胜任一些实时性需求较高的服务,比如IP电话和视频传输,
而TCP通过拥塞窗口和慢开始,拥塞避免等算法实现拥塞控制,会降低发送方的发送速度。
从开销的角度看,UDP报文首部只有8个字节,和TCP固定首部长度20字节比起来小了,
而且不用建立连接,所以开销更小。
通信方式:一对多,多对多,多对一的。而TCP是端到端的
几个技术
伪头部:用于实现传输层对传输层报文的校验,不会出现在网络层,只是到达传输层的时候,
临时加上这个伪头部,根据伪头部 + UDP头部 + UDP数据部分 计算UDP校验和。
为什么? 因为IP地址传输过程中可能出现差错,而路由器重新计算校验和后,传给错误的主机,
而主机最终还可以在这一层通过校验和,发现差错,并丢弃报文。
TCP
Transmission Control Protocol 传输控制协议
面向连接 ,区别于UDP,使用TCP的发送方和接收方发送数据之前需要先建立连接,(三次握手)
数据传输完毕后,还要释放连接 (四次握手)
端对端的通信方式,是一个Socket连接到另一个Socket,这里的Socket指IP:端口号
面向字节流,应用层交给传输层的时候,是一个字节一个字节这样的,区别于UDP,他不是
一整个报文这样接受下来的,因此他可以当应用层交下来的字节过多,大于MSS(Maximum Segment Size)最大报文段长度的时候,分段,组成多个报文;又或者字节过少,小于1个MSS,则等待一会,利用缓存,这样可以提高报文的利用率,而避免首部过长,数据过短,头重脚轻。
可靠。具有确认,重传等功能确保可靠。