udp学习笔记
Posted 卒然临之而不惊, 无故加之而不怒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了udp学习笔记相关的知识,希望对你有一定的参考价值。
udp协议学习笔记
理论
udp相比ip层多做了什么?
- 复用和分用
传输层提供的是端到端的传输协议, 属于进程到进程的通信. 复用则是指应用层所有的进程都可以通过传输层送到IP层. 分用则是指从传输层收到IP数据报以后, 要正确地交付给对应的进程.
- 差错检测功能
对udp首部和数据部分进行校验, 处理数据丢失, 篡改的情况, 检错能力不强, 但是高效, 处理速度快.
如何理解udp的特点
- 无连接
发送方发送数据前是不用建立连接的, 减小了放松的时延. 当然也没有连接需要释放.发送方直接发送, 接受方也不用确认. 所以说, 发送方是不知道对方收没收到.
- 进最大努力交付
不保证可靠交付, 你收没收到和我没关系, 数据错了也不要怪我.
- 面向报文
传输层收到应用层的报文以后, 不合并也不拆分, 加上udp首部以后直接交给IP层了. 所以应用层需要选择合适的报文大小, 如果报文大了, udp是不会处理的, 分片的任务要交给IP层来做, 这样也会降低IP层的效率
udp格式学习
使用udp传输过程中, 是如何保证数据不被篡改的
udp里面有一个校验和字段, 用来做差错检测的. 如果别人问你传输过程如何保证消息可靠, 这是一个思考的角度
算法流程
-添加源IP和目的IP, 构成伪首部. 伪首部只是用来计算, 是虚拟出来的,真实不存在.
计算校验和
-
初始检验和置为0
-
把所有位化为16位的字
-
所有16位的字相加, 高于16位的部分加到最低位上
-
得到的结果取反就是校验和
校验
- 把所有位化为16位的字
- 所有16位的字相加, 高于16位的部分加到最低位上
- 如果结果全是1, 则没有差错出现, 否则出现差错.
java实战与抓包分析
以上是关于udp学习笔记的主要内容,如果未能解决你的问题,请参考以下文章