1、了解网络 TCP/IP 五层协议模型
2、传输的2个重要协议,UDP 协议和 TCP 协议。
3、每层协议的数据格式都分为『标头』和『数据』两部分,标头部分包含发送者和接受者标识性信息等。我们知道传输层协议的功能建立程序到程序之间的链接
,UDP 协议标头中也包含端口
信息。
1.UDP报文格式
UDP协议是传输层协议,我们在数据封装的过程中,报头也是被封装在最里层的。
数据报头中的信息也比较简单:
-
源端口号
-
目的端口号
-
UDP长度(定长报头+数据)
UDP因为是面向数据报的,对端一次发送多少,一次就接收多少,使用定长的报头来分离报头和数据
-
校验和
UDP协议是不可靠的,这里的校验是指将数据中比较有特点的信息经过计算得出一个比较短的字符串,在接收方也是通过相同的计算,得到的字符串是否相同,相同就接收,不相同就丢弃。
-
数据
一次发送多少,一次就接收多少,否则剩下的数据就再也拿不到了
2.UDP的特点
- 无连接
知道对端的IP和端口号,就可以直接进行传输,不需建立连接 - 不可靠
没有确认机制和重传机制 - 面向数据报
应用层交给UDP的数据,UDP原样发送,不会进行拆分和合并,不能够灵活的控制读写数据的数量和次数
UDP缓冲区
- UDP 没有发送缓冲区,将数据交给内核,内核将数据传输给网络层,且UDP没有重传机制,不需要将其保存下来而用于重传
- UDP 具有接收缓冲区,
作用是当缓冲区数据满了,再到达的数据就会被丢弃。
并不能保证接收到数据和发送时的顺序相同,
UDP注意事项? TODO
看到UDP长度字段只有16位,能表示的最大数据长度为64k,在网络中,这是一个很小的数字,当我们需要传送的数据超过64k,这时候就需要在应用层将数据分包,分多次发送,并且在接收端手动拼接,这样影响传送效率。
基于UDP的应用层协议
- NFS: 网络文件系统协议
- TFTP: 简单文件传输协议
- DNS: 域名解析协议
- DHCP:动态主机分配协议
- BOOTP: 启动协议(用于无盘设备启动)
- 也包含用户自己实现UDP程序时的自定义协议