1. UDP简介
UDP和TCP都是传输层协议,用于在计算机网络中发送和接收数据。数据可以是视频,可以是图片,可以是文字等.与TCP相比,UDP不提供数据传输的可靠性和流控制功能,但它具有较低的延迟和较高的传输速度。
2. TCP和UDP的区别
TCP |
UDP |
有连接 |
无连接 |
可靠传输 |
不可靠传输 |
面向字节流 |
面向数据报 |
全双工 |
全双工 |
是否连接: 可以想象成打电话,比如A给B打电话,只有建立好连接才能通信(交换数据),这种是有连接.而是用微信发消息,不需要建立连接则是无连接.UDP是无连接的协议,它在进行数据传输之前不需要先建立连接,也没有各种重传机制、拥塞控制和流量控制,所以传输速度很快,消耗很低,延迟小,数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序.
是否可靠传输: 这里的可靠,并不是指A给B的数据一定完全能让B收到,只能确保B是不是收到了
字节流和数据报: TCP和文件IO一样基于 “流”,UDP则是以"数据报"为基本单位.对于应用层交下来的报文段不进行拆分合并,直接保留原有报文段的边界然后添加UDP的首部就交付给网络层。不论报文的长短,UDP都不会进行处理。因此为了避免报文段过短降低传输效率以及报文段过长导致网络层对IP数据进行分片操作,应用层应该选择合适长度的报文交付给运输层的UDP。
全双工: 一个通道,双向通信
3. UDP的报文格式
转换一下:
1.源端口:表示发送方的端口号。
2.目标端口:表示接收方的端口号。
3.长度:表示UDP数据报的总长度(包括报头和数据部分),也是065535,也就是064KB。
4.校验和:用于检测UDP数据报的完整性。
常用的端口是0~65535,是两个字节能表示的数据范围.
校验和的常见检测算法,CRC算法(循环冗余校验)
UDP数据报的长度是有限的,对于互联网不断发展的今天,需要传输的数据越来越大,64KB太小了.
为了解决这个问题,有两种方案:
1.在应用层针对数据拆成多个UDP数据报,分别传输,但开发比较复杂,测试起来也比较复杂,风险较高
2.直接使用TCP,TCP是字节流,没有长度的限制
4. UDP的应用场景
UDP协议广泛应用于对数据传输时延要求较高、可靠性要求相对较低的应用场景,如音视频传输、实时游戏、DNS查询等。它适用于那些能够容忍数据丢失或乱序的应用,或者具有自己的错误处理和重传机制的应用。
UDP协议的数据报格式相对简单,包含源端口号、目标端口号、数据长度和校验和等字段。由于通讯不需要连接,所以可以实现广播发送。由于UDP协议没有拥塞控制机制,因此在网络拥塞时可能会导致丢包率较高。为了提高可靠性,应用程序可以自行实现重传机制或使用其他协议如TCP来保证数据的可靠传输.
使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP。