美文网首页
UDP协议浅析

UDP协议浅析

作者: VictorHong | 来源:发表于2020-07-11 23:53 被阅读0次

UDP一次交付一个完整的报文,不会对报文进行拆分。因此,应用程序必须选择合适大小的报文。若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率。反之,若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率。

UDP传输方式

UDP数据报格式:(首部8字节)

UDP格式

伪报头格式:

image-20200711232208032

校验和计算:伪报头+UDP数据报

伪报头的作用是验证UDP数据报是否正确传送到目的进程。

计算校验和

在发送方,首先是先把全零放入检验和字段。再把伪首部以及UDP用户数据报看成是由许多16位的字串接起来。若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全零字节(但此字节不发送)。然后按二进制反码计算出这些16位字的和。将此和的二进制反码写入检验和字段后,就发送这样的UDP用户数据报。在接收方,把收到的UDP用户数据报连同伪首部(以及可能的填充全零字节)一起,按二进制反码求这些16位字的和。当无差错时其结果应为全1。

二进制反码求和:0和0相加是0,但要产生一个进位1,0和1相加是1,1和1相加是0。若最高位相加后产生进位,则最后得到的结果要加1。

(0)反 + (0)反 = 1 + 1 = 10

(1)反 +(0)反=0+ 1 =1

(1)反 + (1)反 = 0 + 0 = 0

"二进制反码求和" 等价于 "二进制求和再取反"

二进制求出的和如果大于16位时所做的操作,用和值中高16位加上低16位的值作为最终的和值,然后再做取反运算.

下面是计算校验和的一个例子:

UDP校验和

这样的检验和,既检查了UDP用户数据报的源端口号和目的端口号以及UDP用户数据报的数据部分,又检查了IP数据报的源IP地址和目的地址。

相关文章

  • QUIC协议浅析与HTTP/3.0

    QUIC协议浅析与HTTP/3.0 1. 简介 QUIC(Quick UDP Internet Connectio...

  • UDP协议浅析

    UDP一次交付一个完整的报文,不会对报文进行拆分。因此,应用程序必须选择合适大小的报文。若报文太长,UDP把它交给...

  • 计算机网络02 - 传输层

    目录 TCP协议和UDP协议TCP首部TCP连接管理UDP首部 1. TCP协议和UDP协议 TCP协议:面向连接...

  • Linux下Socket编程(六)——udp

    简介 udp协议 udp通信流程 示例 udp协议 中文叫用户数据报协议,属于传输层。UDP是面向非连接的协议,它...

  • UDP协议详解

    相比于TCP协议(传输控制协议)来说,UDP协议(用户数据报协议)要简单很多。 UDP协议的首部格式 UDP协议的...

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • 网络编程---获取ip地址 使用UDP协议发送与接收数据

    获取ip地址 UDP协议发送端 UDP协议接收端

  • 【Java】【网络编程】UDP协议

    UDP协议 概述:UDP协议是面向无连接协议,数据不安全。 DatagramSocket

  • iOS 网络相关面试题

    问题:TCP、UDP TCP/UDP 传输层协议 ||—— UDP:用户数据报协议 TCP与UDP的区别: 问题...

  • TCP和UDP

    TCP协议为TCP/IP协议;UDP为UDP/IP协议。TCP和UDP都是对应网络七层协议上的传输层。IP属于网络...

网友评论

      本文标题:UDP协议浅析

      本文链接:https://www.haomeiwen.com/subject/edwwcktx.html