UDP协议端格式
注意:16位UDP长度,表示整个数据报的最大长度。
如果校验出错会直接丢弃。
UDP特点:
1.无连接:知道对应的端口号直接进行传输,不需要建立连接
2.不可靠:没有安全机制,发送数据后,因为各种原因可能会出现对方无法接受到信息,UDP协议也不会给应用层返回任何问题
3.面向数据报:应用层交给UDP多长的字报,UDP会原样发送,不会拆开,也不会合并
4.缓冲区:UDP只接受缓冲区,没有发送缓冲区:
UDP没有真正意义上的发送缓冲区,发送的数据会直接交给内核,由内核将数据传送给网络层协议进行传输动作。
UDP具有缓冲接收区,但是这个接收区不能保证收到UDP报的顺序和发送UDP报的顺序一直,如果缓冲区满了则会发生数据丢失。
5.全双工:UDP的socket即能写也能读
6.UDP协议的首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64k
UDP的校验:使用的方法是循环冗余法,把UDP中的每个字节,都依次相加(溢出也没关系),最总得到校验和。传输数据的时候会把原始数据和校验和一起传输,接收方收到数据,后在进行校验和运算,当新校验和和旧的校验和相同则视为成功。
注意:若前一个少一,后一个多一,加起来和相等,则会视为成功->这个是错的。