在传输层中, 有两个知名协议是需要我们必知必会的, 一个是UDP协议, 一个是TCP协议, 本文我们来主要讲解一下UDP协议, 讲一下UDP报文格式, UDP协议的特点, 以及一些注意事项.
关注收藏, 开始学习吧
我们可以将 UDP 传输的过程, 想象成寄一封信.
知道对端的 IP 地址和端口号就直接进行传输不需要建立连接.
没有任何安全机制, 发送端发送数据报以后, 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息.
应用层交给 UDP 多长的报文, UDP 原样发送, 既不会拆分, 也不会合并. 如果发送端一次发送100个字节, 那么接收端也必须一次接收100个字节. 而不能循环接收10次, 每次接收10个字节.
UDP 只有接收缓冲区, 没有发送缓冲区.
UDP 的 socket 既能读, 也能写, 这个概念叫做全双工.
UDP 协议首部中有一个两个字节 (16位) 的最大长度. 也就是说一个UDP能传输的数据最大长度是64K (包含UDP首部).
那么接下来我们就来学习一下 UDP 的报文格式. 学习一个协议, 我们不仅要了解它的这些特点, 也要了解它的格式是什么.
此处协议格式, 需要发送端, 接收端, 双方都遵守才有用!!!
那么在进行网络传输时, UDP 是如何进行传输的报文数据是否正确, 没有受到信号干扰之类的呢? 在前文我们讲了, UDP 报文格式中, 有两个字节的的位置留给了校验和, 其作用就是用来检验传输数据是否正确的.
那么 UDP 的校验和具体是怎么实现的? 这里 UDP 是使用了一种简单粗暴的 CRC 校验算法 (循环冗余校验和).
简单来说, 就是将 UDP 数据报中的每个字节, 都依次进行累加. 然后将累加结果, 保存到两个字节的变量中(校验和). 当传输数据时, 就会把原始数据和校验和一起传递过去. 接收方收到数据后, 同时也收到发送端送过来的校验和, 接收端按照同样方式再算一遍, 得到新的校验和, 并与旧的校验和进行比较, 如果正确, 则可以视为数据传输过程中, 没有被干扰, 数据正确.
当然,也包括你自己写UDP程序时自定义的应用层协议.
✨ 本文主要讲解了 UDP 协议的一些知识, 主要有 UDP 协议特点, UDP 协议报文格式.
✨ 想了解更多计算机网络的知识, 可以收藏一下本人的计算机网络学习专栏, 里面会持续更新本人的学习记录, 跟随我一起不断学习.
✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习.
再次感谢你们的阅读, 你们的鼓励是我创作的最大动力!!!!!