1、定义
UDP,User Datagram Protocol
,即用户数据报协议,是传输层中非常重要的协议之一,主要应用在音频通话,直播等场景中。
2、特点
-
UDP是无连接的。客户端和服务器在UDP通信的时候,不需要像TCP一样需要先建立连接,减少了建立和释放连接的开销。
-
UDP尽最大能力交付,不保证可靠交付。这个就像日常打电话的场景一样,有时候信号?不好,通话的内容可能会音质变差甚至丢失,但即使你没听清楚,通话内容也不会给你重新播放一遍。
3、UDP的头部
正是由于上述特点,UDP不需要维护一些复杂的参数,它的头部内容比较简单,只占用8
个字节。
源端口号:终点回信的时候需要使用。
目的端口号:终点交付报文时需要使用。
UDP长度:首部的长度 + 数据的长度。
3.1 检验和(CheckSum)
用于检测UDP数据报在传输过程中是否出错。如果出错,数据报将会被丢弃。
检验和的计算方式:伪首部 + 首部 + 数据
这里提到了一个概念:伪首部。伪首部包含源IP地址、目的IP地址等更多信息。伪首部的出现主要是为了使数据更加丰富,为后续数据检验提供更多依据。需要注意的是:伪首部仅在计算检验和时起作用,不会传递给上下层。
3.2 端口
UDP首部中端口占用2个字节,可得出端口号的范围是0 ~ 65535
。
以下是一些常见协议通信时占用的端口号:
协议 | 默认端口号 |
---|---|
HTTP | TCP + 80 |
HTTPS | TCP + 443 |
FTP | TCP + 21 |
MYSQL | TCP + 3306 |
DNS | TCP/UDP + 53 |
SMTP | TCP + 25 |
POP3 | TCP + 110 |
端口号占用查询相关命令(以Windows为例):
netstat -an
:查看被占用的端口。
netstat -anb
:查看被占用的端口 + 占用端口的应用程序。
telnet 主机 端口
:查看是否可以访问某个主机的某个端口。例如telnet baidu.com 3306
,查看是否可以访问百度的3306端口。
4、抓包验证
打开WireShark,随便访问一个网站,找到UDP报文。
5、TCP和UDP之间的差别
TCP | UDP | |
---|---|---|
连接性 | 面向连接 | 无连接 |
可靠性 可靠传输,不丢包 | 不可靠传输,尽最大努力交付,可能丢包 | |
首部占用空间 | 大(20~60字节) | 小(8字节) |
传输速率 | 慢 | 快 |
资源消耗 | 大 | 小 |
应用场景 | 浏览器、文件传输、邮件发送 | 音频通话,直播 |
应用层协议 | HTTP、HTTPS、FTP、SMTP、DNS | DNS |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END