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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

java学习笔记 UDP协议

安全牛学习笔记UDP端口扫描

Python学习笔记(四十六)网络编程— UDP编程

Python学习笔记九(UDP套接字和并发编程)

TCP/IP详解学习笔记-UDP协议

六LWIP学习笔记之用户数据报协议(UDP)