UDP数据报结构分析(面试重点)

在传输层中有UDP和TCP两个重要的协议,下面将针对UDP数据报的结构进行分析

UDP结构图示

UDP报头结构的分析

UDP报头有4个属性,分别是源端口,目的端口,UDP报文长度,校验和,它们都占16位2个字节,所以取值范围是0-65535

一.源端口

源端口表示发送数据时,发送方的端口号,由于占16位2个字节,所以取值范围是0-65535,所以一个合法的端口号,有效范围就是0-65535不能再大了(实际上0是不使用的),

知名端口号

在1-1024这个范围的端口号,系统赋予了特定的含义,一般也不建议使用,这些端口号已经给一些名气比较大的服务器提前安排好了(坐飞机的头等舱一样)

二.目的端口号

目的端口号表示发送数据时,接收方的端口号,其余的特点和源端口号相同

三.UDP报文长度

表示UDP数据报的长度,由于占用两个字节,所以也表示一个UDP数据报能传输的数据是有限制的,限制在大约64kb的数据,所以当我们要传输的数据大于64kb时就不建议用UDP协议的方式来传输数据了,建议采用TCP协议的方式传输,因为TCP数据报传输数据是不限制大小的

四.校验和

当我们在进行网络传输数据的过程中,本质上就是光信号/电信号/电磁波的数据传输,很可能就会受到外界的干扰,数据可能会出错,比如,本来你要传输的数据是0变成了1,本来是1变成了0(发生了比特翻转),此时数据就出错了,所以接收方在收到数据了以后就需要先确认一下,这个数据是否是一个错误的数据,校验和就是简单有效的方式

校验和的工作原理

校验和会把UDP数据报中的每一个字节,都依次进行累加,把累加的结果,保存在两个字节的变量中,加着加着可能就溢出了,但溢出也无所谓,将所有的字节都加了一遍,最终就获得了校验和

在传输数据的时候,就会把原始数据和校验和一起传递过去,接收方收到数据,同样也收到了发送方送过来的校验和,接收方按同样的方式再算一遍,获得了新的校验和,将新的校验和与旧的校验和进行对比,如果相同就说明数据正确,反之则不正确,要重新发送数据

此时可能会有一些高手想到,就算校验和相同也可能传输的数据是错误的,因为二进制数据可能会有一个位置从0变为了1,另一个位置从1变为了0,这样算出来的校验和还是相同的,但传输的数据是错误的

确实会有这样的情况,但这只能算是一个误差,误差是不可避免的,因为本来出现比特翻转就是一个小概率事件,而发生两次比特翻转并且还刚好抵消,这更是非常小的概率了,所以我们只将这种情况看作是一个误差。

相关推荐
网络安全queen44 分钟前
渗透测试面试问题
面试·职场和发展
Vegetable_xu6 小时前
【Websocket和nginx配置】
websocket·网络协议·nginx
whoami-49 小时前
华为配置命令
网络·网络协议·华为
简单的东西为什么越来越复杂9 小时前
Java Set的理解
面试
C182981825759 小时前
面试241228
面试·职场和发展
啥都想学的又啥都不会的研究生9 小时前
redis相关问题
java·数据库·redis·笔记·学习·缓存·面试
robin_suli9 小时前
网络原理 一> HTTPS协议详解,加密方式, 证书原理,中间人攻击 (一文搞懂)
网络·网络协议·https·证书·中间人攻击
GISer_Jing9 小时前
Javascript数据结构常见面试题目(全)
javascript·数据结构·面试
Pandaconda9 小时前
【Golang 面试题】每日 3 题(八)
开发语言·笔记·后端·面试·职场和发展·golang·go