UDP
UDP是什么
UDP和TCP一样,都是传输层的协议,传输层是端对端的
ip + port
- ip 可以唯一标识网络上的一台主机,主机拥有唯一的一个 ip 地址,一个主机可以有多个 ip,有多少网卡就有多少 ip
- port 可以唯一标识主机上的唯一进程,一个进程可以有多个 port,一个 port 只能绑定一个端口
- 所以,ip + port,可以唯一标识网络上的一台主机上的唯一进程
- 常见端口号
SSH 服务器,使用 22 端口
MySQL 服务器,使用 3306 端口
DNS 服务器,使用 53 端口
HTTP 服务器,使用 80 端口
HTTPS 服务器,使用 443 端口
UDP协议格式
源端口:服务器向客户端发送响应时,可以直接得到源端口,向客户端发送
目的端口:分用
UDP 长度:解包
校验和
- 校验和是一个字符串,检验数据的正确性
- 将源数据经过哈希算法得到一个新的数据
- 在接收端如果发现源数据和得到数据最终不一致,说明传输过程中出现了问题,丢弃数据
UDP 的特点
- 无连接:只要知道对端的 ip + port,就可以进行传输了
- 不可靠:UDP 没有确认应答机制、没有超时重传机制。如果网络出现问题了,UDP 协议层也不会向应用层返回错误信息
- 面向数据报:应用层发给传输层的数据,UDP 既不会合并也不会拆分
UDP 的缓冲区
- UDP 没有发送缓冲区,只有接收缓冲区
为什么要有UDP
UDP是无连接的,只要知道对端的 ip + port,就可以进行传输了,简单快速
基于 UDP 的应用层协议
DNS—域名解析协议
会将域名解析为 ip 地址
当主机接收到一个域名后,会将他交给Local DNS,如果Local DNS里面没有找到对应的 ip,就会交给他的上一层去查找,上一层解析出来后,Local DNS 会保留信息,下次查找直接在 Local DNS 里查找