UDP协议 太过爱你忘了你带给我的痛 2023-09-27 14:24 182阅读 0赞 ![在这里插入图片描述][54b363736e2148a3a82cb2451df1fb8e.gif_pic_center] #### 文章目录 #### * 一、前沿知识 * * 应用层 * 传输层 * 二、UDP协议 ## 一、前沿知识 ## ### 应用层 ### 应用层:描述了应用程序如何理解和使用网络中的通信数据。 我们程序员在应用层的主要工作是自定义协议,因为下面四层都在系统内核/驱动程序/硬件中已经实现好了,不能去修改。 自定义协议需要做好两件事: 1.明确协议要传递那些信息 2.确定数据组织格式: xml,json,protobuffer 当然我们的应用层也有一些成品的协议:HTTP协议 ### 传输层 ### 传输层是紧接着应用层的一层,虽然传输层已经被操作系统内核实现好了,但是我们在写代码的时候,要调用系统的Socket api去完成网络编程 **端口号:** IP是用来确定网上上的一台主机,那么端口号就是用来确定主机上的一个进程的,端口号是传输层的一个概念 TCP和UDP协议的报头中都会包含源端口和目的端口,并且都是使用2个字节,16bit来表示,端口号的范围是 0 -> 65535,但是我们日常使用一般都是从1024开始的,因为0 -> 1023这个范围的端口系统已经分配给了一些知名的应用程序了,也称这些端口为" 知名端口号/具名端口号". 虽然我们建议1023以下的端口别使用,但不代表完全不能使用,虽然这些端口分配给了特定程序,但是这些程序是否在主机运行着,是否安装了这些程序都是不确定的,如果我们想要使用1023以下的这些端口,需要注意以下2点: 1.确定这个端口是否有程序在绑定 2.是否具有管理员权限。 ## 二、UDP协议 ## 我们在前面为大家介绍过了UDP协议的一些特点:无连接,不可靠,面向数据报,全双工,这些特性在我们实现回显UDP服务器客户端程序的时候有所体现,那么今天我们来研究以下UDP协议的报文结构。 ![在这里插入图片描述][405a0167732d4814a1309b8f06640cfb.png] 相信学过计算机网络这门课的小伙伴们,看到这张图都不陌生,但实际上我们课本这样画是为了排版方便。 ![在这里插入图片描述][182c0a6e76bc4d8a81b45de8380ec2ec.png] UDP的载荷数据就是通过UDP socket send()要发送的数据,在前面拼接上8个字节的报头) 我们来看一下UDP报头所包含的信息,UDP报头一共8个字节,4个部分每部分占2个字节,但正是因为,我们的UDP报文的长度也受到了限制,UDP报文长度是用2个字节表示的,2个字节表示0 -> 65535(64KB),也就表示了我们UDP数据报最大只能传输64KB的数据。 **相信有同学会问,如果我想传一个大于64KB的数据报呢?** 有两种解决办法: 1.我们应用层在代码层面将我们要传输的数据报进行分包,通过多个UDP数据报进行发送。 如果采用1,本来我们send一次,现在需要多次send,就好比我们扔垃圾,垃圾太多,一个小袋子装不下,需要装许多个,装垃圾,提垃圾,倒垃圾都比较麻烦,基于上面这种情况,我们可以直接用一个超大垃圾袋,一次性就搞定了,这也是第二种方案。 2.不使用UDP,使用TCP,TCP没有长度限制。 我们报头信息中还有源端口和目的端口信息,我们的一次网络通信,涉及到五元组:源IP,源端口,目的IP,目的端口,协议类型,端口信息就是由我们传输层体现的。 校验和:验证传输的数据是否是正确的,我们在网络传输中往往不是一帆风顺的,可能会受到一些干扰,在这些干扰下可能会出现比特翻转的现象, 0 -> 1,1 -> 0的现象。 我们网络传输中,物理层传输的本质就是光信号/电信号,这些信号会受到一些物理环境的影响,比如电磁场,高能射线等等,有时候仅仅是一个比特位的变化,对于原本数据的含义就发生了致命的变化,我们对于这些不可避免的现象,只能是及时识别当前的数据是否出现问题。 因此就引入了校验和来干这一项工作,针对数据内容进行一系列的数学运算,得到一个短小的结果,如果我们的数据内容一定,那么我们得到的校验和就是一定的,如果我们的数据变了,那么我们的校验和就变了。 ![在这里插入图片描述][99eb882473424dc2919142da8e757407.png] 我们接收方在接收到数据之后会在计算一边校验和,看看是否和发送方发来的校验码对的上,如果对上了就证明传输没问题,如果对不上,证明传输出错了。 ![在这里插入图片描述][b0461850e97040d18a59f578a6db6236.png] 我们根据收到的数据我要吃火锅计算出了0x1122发现和接收到校验码一致,证明我们这次数据传输没问题。 ![在这里插入图片描述][cedc5732a28e475f8d75e6d92205973c.png] 我们根据接收到的数据我要吃烤肉计算出来0x5566发现和接收到的校验码不一致,证明我们的传输出错了。 当然有同学肯定想到了,是否存在一种这样的情况,我们接收到不同的数据,但是计算出的校验码恰好相同,这种情况理论上是存在的,但是概率特别小,就忽略不计了。 我们网络传输中,生成校验和的算法有很多,我们这里只介绍比较知名的几个: **CRC(循环冗余校验):** 实际的CRC校验码生成是采用二进制的模2算法(即减法不借位、加法不进位)计算出来的,这是一种异或操作。这种方法比较好算,但是校验的效果不够理想。 **MD5:** MD5是使用一系列公式来进行更复杂的数学运算,具有以下几个特点: 1.定长:无论原始数据多长,得到的MD5值都是固定长度(4/8字节) 2.冲突概率小:我们的原始数据即使变动了一点点,算出来的MD5值的差别都很大(MD5结果更分散了) 3.不可逆:我们通过原始数据即使出MD5比较容易,但是通过MD5还原成原始数据很难,理论上是不可实现的。 基于MD5的这些特点,MD5的应用场景就有许多了: 1.校验和 2.加密 3.计算Hash值 可能大家在网上会看到一些MD5的方法,其实也很好理解,有人将一些常见的字符串的MD5值进行汇总成一张表,解密的过程相当于查表,但仅限于一些常见的字符串,其他也查不到。 **SHA1:** SHA1和MD5类型,这里就不具体介绍了,感兴趣的同学可以上网查询下资料。 [54b363736e2148a3a82cb2451df1fb8e.gif_pic_center]: https://img-blog.csdnimg.cn/54b363736e2148a3a82cb2451df1fb8e.gif#pic_center [405a0167732d4814a1309b8f06640cfb.png]: https://img-blog.csdnimg.cn/405a0167732d4814a1309b8f06640cfb.png [182c0a6e76bc4d8a81b45de8380ec2ec.png]: https://img-blog.csdnimg.cn/182c0a6e76bc4d8a81b45de8380ec2ec.png [99eb882473424dc2919142da8e757407.png]: https://img-blog.csdnimg.cn/99eb882473424dc2919142da8e757407.png [b0461850e97040d18a59f578a6db6236.png]: https://img-blog.csdnimg.cn/b0461850e97040d18a59f578a6db6236.png [cedc5732a28e475f8d75e6d92205973c.png]: https://img-blog.csdnimg.cn/cedc5732a28e475f8d75e6d92205973c.png
相关 UDP协议 (User Datagram Protocol 即用户数据报协议)是传输层的重要协议之一(还有一个重要协议是TCP) 落日映苍穹つ/ 2024年04月25日 08:44/ 0 赞/ 139 阅读
相关 UDP协议 网络传输中,由于一些外部干扰,就可能会出现数据传输出错的情况。因此,就需要有办法,能够识别出出错的数据。校验和,就是这样的一种检查手段。校验和本质上是一个字符串,体积比原... ゝ一世哀愁。/ 2024年04月23日 21:19/ 0 赞/ 139 阅读
相关 UDP协议 UDP协议 文章目录 UDP协议 一、UDP协议 二、UDP的首部格式 1.首部字段 三、UDP协议的特点 1.无连 悠悠/ 2024年02月23日 02:45/ 0 赞/ 28 阅读
相关 UDP协议 ![在这里插入图片描述][54b363736e2148a3a82cb2451df1fb8e.gif_pic_center] 文章目录 一、前沿知识 应 太过爱你忘了你带给我的痛/ 2023年09月27日 14:24/ 0 赞/ 183 阅读
相关 UDP协议 UDP (User Datagram Protocol)用户数据报协议,在数据传输时彼此之间不需要建立连接,传输前需要把数据定义成数据报,并且传输效率高,但是不安全。 Dat 野性酷女/ 2023年08月17日 16:10/ 0 赞/ 156 阅读
相关 UDP协议 前面我们介绍了了TCP协议,深入浅出TCP协议,为什么需要TCP协议?知道TCP是面向连接的提供可靠性服务的传输层协议,今天讲下同属于传输层的另一个协议——UDP。 正文 素颜马尾好姑娘i/ 2023年02月26日 10:25/ 0 赞/ 65 阅读
相关 UDP协议 一、通信协议。 -- UDP协议 TCP -> Tranmission Control Protocol UDP -> User Data Protocol IP 水深无声/ 2022年12月13日 14:02/ 0 赞/ 285 阅读
相关 UDP协议 UDP 是面向数据报的传输层协议(TCP是面向字节流的协议)。面向报文的传输方式是指应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。 UDP不提供错误 以你之姓@/ 2022年08月21日 01:29/ 0 赞/ 384 阅读
相关 《网络协议》UDP 协议 概述 UDP 是无连接、不可靠的数据报传输层协议,为应用程序发送和接收数据报,只是将数据报的分组从一台主机发送到另一台主机,但并不保证数据报能够到达另一端,任何 清疚/ 2022年08月14日 03:51/ 0 赞/ 386 阅读
相关 UDP协议 1)UDP协议概述 ![20190807084647592.png][] 2)UDP服务器与客户端程序 服务器端: String 谁践踏了优雅/ 2021年11月05日 13:26/ 0 赞/ 485 阅读
还没有评论,来说两句吧...