⽹络通信UDP传输协议
UDP传输协议
什么是UPD传输协议
UDP 是User Datagram Protocol的简称, 中⽂名是⽤户数据报协议,OSI 参考模型中⼀种⽆连接的传输层协议,提供⾯向事务的简单不可靠信息传送服务。
UDP协议格式
1. 源端⼝号:表明数据从那个进程发送出。
2. ⽬的端⼝号:表明数据发现那个进程。
3. DUP数据长度:16的DUP长度(UDP⾸部+UDP数据)),表明了UDP所能发送的数据时定长的,最⼤为64KB。
4. UDP校验和:检验接收的数据是否与发送的数据⼀致。如果出错,直接丢弃
UDP的特点
1. ⽆连接: 知道对端的IP和端⼝号就直接进⾏传输, 不需要建⽴连接。
2. 不可靠: 没有确认机制, 没有重传机制; 如果因为⽹络故障该段⽆法发到对⽅, UDP协议层也不会给应⽤层返回任何错误信息。
3. ⾯向数据报: 不能够灵活的控制读写数据的次数和数量。
⾯向数据报
应⽤层交给UDP多长的报⽂, UDP原样发送, 既不会拆分, 也不会合并。
通信协议⽤UDP传输100个字节的数据:
如果发送端调⽤⼀函数次发送100个字节, 那么接收端也必须调⽤对应的函数⼀次接收100个字节。⽽不能循环10次接收, 每次接收10个字节。
UPD的缓冲区
UDP没有真正意义上的 发送缓冲区. 调⽤sendto会直接交给内核, 由内核将数据传给⽹络层协议进⾏后续的传输动作;
UDP具有接收缓冲区. 但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序⼀致; 如果缓冲区满了,再到达的UDP数据会被丢弃。
UPD使⽤注意事项
我们注意到, UDP协议⾸部中有⼀个16位的最⼤长度. 也就是说⼀个UDP能传输的数据最⼤长度是64K(包含UDP⾸部)。如果我们所发送的数据超过64KB应该怎么处理?
当我们发送的数据⼤于64KB时,程序就会报错。我们可以通过将数据拆分成⼩于64KB的数据包,然后发送这些拆分的数据包,在接收端我们需要⼿动的将这些数据进⾏拼接,但是UDP传输协议不能保证数据包是有序到达的,因此我们在发送数据包的时候要考虑到接收端包序的问题。
基于UDP的应⽤层协议
NFS: ⽹络⽂件系统
TFTP: 简单⽂件传输协议
DHCP: 动态主机配置协议
BOOTP: 启动协议(⽤于⽆盘设备启动)
DNS: 域名解析协议
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论