最新网络-UDP协议详解(代码、实战)_udp协议编码

本文详细介绍了UDP协议的特点,报文格式,以及发送和接收端的校验过程。特别强调了UDP的无连接性、检验和的作用以及在实际场景中的应用示例。
摘要由CSDN通过智能技术生成

发送端校验

接收端校验

实战

参考


简介

UDP(User Datagram Protocol,用户数据报协议),一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,UDP在IP报文的协议号是17。常用的UDP端口号有:53(DNS)、69(TFTP)、161(SNMP),使用UDP协议包括:TFTP、SNMP、NFS、DNS、BOOTP、CoAP、DTLS。

特点

  • UDP是无连接的,减少开销和发送数据之前的时延
  • UDP使用最大努力交付,即不保证可靠交付
  • UDP是面向报文的,适合一次性传输少量数据的网络应用
  • UDP无拥塞控制,适合很多实时应用
  • 首部开销小,仅8个字节(TCP首部为20个字节)

报文格式

报文位置

报文格式

  • 源端口号:在需要对方回信时选用,不需要时可用全0
  • 目的端口号:这在终点交付报文时必须使用
  • 长度:UDP用户数据报的总长度(首部+数据),其最小值是8(仅有首部)。
  • 检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃

如果接收方发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送方。我们在ICMP的应用举例讨论 traceroute时,就是让发送的UDP用户数据报故意使用一个非法的UDP端口,结果ICMP就返回“端口不可达”差错报文因而达到了测试的目的。

UDP校验

伪首部

UDP伪首部

  • 源IP地址:4个字节
  • 目的IP地址:4个字节
  • 0:1个字节,即0x00
  • 17:1个字节,即0x11,封装UDP报文的IP数据包首部协议字段是17
  • UDP长度:2个字节,UDP首部(8B)+数据部分长度,不包括伪首部

伪首部仅在计算校验和的时候才出现,不向下传送也不向上递交。

发送端校验

  1. 填上伪首部
  2. 全0填充检验和字段
  3. 全0填充数据部分(UDP数据报要看成许多4B的字串接起来)
  4. 伪首部+首部+数据部分采用二进制反码求和
  5. 把和求反码,填入校验和字段
  6. 去掉伪首部,发送

发送端计算校验和

进位及回加

按列计算:9(1001),余1,进100;7+0=1(111),余1进11;7+1=8(1000),余0进100;…后续读者动手计算吧,记得多出去的进位回加到低位,如果不习惯一起算,可以两个加一次。16位的话按列计算16次左右,如果有二三十个相加的话,按列相加比较快速,使用16进制相加也会更快一点。

接收端校验

1.填上伪首部
2.伪首部+首部+数据部分采用二进制反码求和(校验和部分不是全0了,而是0110100100010010)

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值