传输层的UDP
UDP协议全名:User Datagram Protocol(用户报文协议)
UDP只是一个简单的传输层协议,只能完成传输层基本的职责
UDP工作机制
可以把UDP协议想象成一家快递公司,上面是应用层,下面是网络层
其中的header可以看做成快递单上的地址,payload是数据内容也就是用户要发的东西,UDP的职责就是将应用层的payload打包,贴上标签,然后再送往网络层,但是UDP只管发,不管是否会到接收方。
UDP的特点
(1)不可靠:UDP会尽努力传送,但不会保证到达接收方手中。
(2)无连接:传送数据之前不需要先建立连接,目标主机的运输层收到之后不用给出确认,不会一直占用服务器。
(3)面向数据报文:不会拆开数据包,不会破坏数据顺序和数据完整性。
(4)首部开销小:只有8个字节。
UDP Header结构
其中16位UDP长度就是报文长度,16位UDP检验和是用来完成checksum(校验和)的,大志步骤如下:
发送方发送数据的时候:
1.用hash函数处理数据得到checksum_1
2.吧checksum_1填写在UDP的header(首部)中
3.发送
接收方接收数据的时候
1.使用hash函数处理数据得到checksum_2
2.如果checksum_2 == header.checksum_1,则数据大概是源数据,否则数据一定不是源数据
UDP接收缓冲区
缓冲区概念
从应用层到数据链路层中,保存数据的区域都可以称为缓冲区
UDP接收缓冲区
UDP没有发送缓冲区,只有接收缓冲区,因为到达UDP的数据并不需要马上被应用层读走,类比快递服务中心,你的快递到了,不一定要你马上取快递,但是在UDP这个"快递服务中心"的快递会立马发走。
阻塞:如果应用层去UDP接收缓冲区读取数据,但此时没有数据可读,应用层有没有超时等待机制,就会死等(阻塞).