5.7.2 UDP协议格式(一)——UDP差错控制

news2024/10/6 8:32:59

5.7.2 UDP协议格式(一)——UDP差错控制

前面我们学习了UDP数据报格式(5.7.1 UDP概述)我们知道UDP只是在IP数据报服务基础上增加了端口的复用和分用功能,以及差错控制的功能,这里我们就一起来学习一下UDP的差错控制方法。在学习前我们先要明白传输层和网络层差错控制的区别,因为有人觉得,既然网络层已有差错控制,为什么传输层还要进行差错控制

一、传输层与网络层差错控制的区别

如图

IP数据报

在网络层中的差错控制是在IP数据报首部中有一个首部校验和字段,它使用的是仿码二进制相加法,它只校验IP数据报的首部,对于IP数据报中的数据部分是不进行数据差错控制的,这样做的目的是因为IP数据报每经过一个路由器都需要重新计算校验和,相对比较繁琐。所以为了提高传输效率,IP数据报首部中校验和字段仅仅校验了IP数据报的首部是否出现差错。而不检查它的数据部分,这样做的优点在于他大大解约了路由器处理每一个报文的时间,因为他非常符合IP数据报中的尽力而为的思想。当然这种方法也有一个非常明显的缺点就是给上一层留下了一个数据是否可靠的问题,在这样的情况下IP数据报的首部与数据部分校验分开允许在上一层选择自己的校验方法。

于是在计算机网路中采用的补充的方法就是在传输层中使用一个对报文段进行差错校验和检测的方法。为了保证将应用层的数据正确的交付给应用进程。

如图

校验和

传输层的TCP和UDP的校验和既要校验TCP/UDP报文段的首部也要校验数据部分,并且只在发送方进行一次校验和的计算,在接收端进行一次检验即可。因为报文段在转发过程中中间的路由器对TCP报文段和UDP的用户数据报而言是透明的,它不会重复计算TCP/UDP报文段首部的校验和。校验和的计算过程我们后面再说。

二、UDP校验和计算

这里我们应该知道UDP校验包含了三个部分

  1. UDP首部

  2. UDP报文内的数据

  3. 伪首部:在计算UDP或者TCP校验和之前还要增加12个字节的伪首部

    如图

    伪首部

    所谓的伪首部是因为这样的首部它仅仅是在计算校验和时所使用,它既不向下层传送,也不递交给上层,

UDP校验和的计算过程如下:

  1. 首先把校验和字段清零
  2. 把所有需要校验的数据划分为16比特的序列也就是两个字节划分成一段
  3. 对序列进行仿码二进制求和
  4. 求和后的结果再取反,结果得到我们需要的校验和。

三、采用计算方法的原因

为什么要使用增加伪首部的方法来计算UDP或者TCP的校验和呢?

主要是考虑要对完整通信双方五元组(5.6.3 套接字)的信息进行校验,五元组包括<源IP地址,源端口,目的IP地址,目的端口,传输协议>,对于这样的特点就要求处理尽可能的简单,处理要快,便于实现高速的数据传输,当然这里我们应该知道端口的信息是在UDP上的。而IP地址和传输协议则是取自于IP数据报的首部。

五元组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

破局之作:首部开源 AIGC 软件工程应用电子书《构筑大语言模型应用:应用开发与架构设计》...

TL;DR 版&#xff1b; 在线&#xff1a;https://aigc.phodal.com 下载 1&#xff1a;https://github.com/phodal/aigc/releases 下载 2&#xff1a;https://pan.baidu.com/s/1wGc75vVHaZwvZyHeltyt8w?pwdphod 2023 年的上半年里&#xff0c;我&#xff08;phodal&#xff09;和…

数据结构KMP算法详解

目录 1. KMP算法是什么&#xff1f; 2. KMP算法的由来 2.1 需要要解决的问题 2.2 一开始想到的方法 2.3 KMP算法诞生了 3.KMP算法的详解 4.KMP算法的实现 5.KMP算法的改进 1. KMP算法是什么&#xff1f; KMP算法是一种改进的字符串匹配算法&#xff0c;即可以快速的从主…

通用分页【下】(将分页封装成标签)

目录 一、debug调试 1、什么是debug调试&#xff1f; 2、debug调试步骤 3、实践 二、分页的核心 三、优化 分页工具类 编写servlet jsp代码页面&#xff1a; 分页工具类PageBean完整代码 四、分页标签 jsp代码 编写标签 tld文件 助手类 改写servlet 解析&…

Let's Learn .NET - Web 开发实战

点击蓝字 关注我们 编辑&#xff1a;Alan Wang 排版&#xff1a;Rani Sun Lets Learn .NET 系列 “Lets Learn .NET” 是面向全球的 .NET 初学者学习系列&#xff0c;旨在通过不同语言&#xff0c;帮助不同地区的开发者掌握最新的 .NET 开发知识与技能。 7月2日&#xff0c;“…

【文件传输FTP】网络杂谈(4)之文件传输协议FTP详解

涉及知识点 什么是 FTP&#xff0c;FTP的概念&#xff0c;FTP客户端程序cuteFTP&#xff0c;FTP客户程序浏览器&#xff0c;FTP的客户程序。深入了解FTP技术。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可去其主页关注下哈&#xff0c;不胜感激 文章…

Tips--解决SquareLine Studio create页面中只有desktop选项

解决SquareLine Studio create页面中只有desktop选项 前言问题解决方法方法1方法2 前言 LVGL是一个强大的GUI框架&#xff0c;很多电子爱好者使用很多。SquareLine Studio是针对LVGL的一款非常强大的图形化设计平台&#xff0c;大大缩减了UI设计的时间。 问题 但是很多小伙…

(二十三)专题地图编制——布局设置

专题地图编制——布局设置 ArcMap地图模板是一种事先设计好的地图样式和布局&#xff0c;可以用于快速创建具有一致性和专业外观的地图。在ArcMap中&#xff0c;可以通过在地图窗口中创建新地图或导入现有地图的方式来使用地图模板。地图模板通常包括基础地图数据、图例、标签…

使用 Jetpack Compose 构建 Switch

欢迎来到这篇关于如何使用 Jetpack Compose 构建 Switch&#xff08;开关&#xff09;的博客。Jetpack Compose 是 Google 的现代 UI 工具包&#xff0c;主要用于构建 Android 界面。它以声明式的方式简化了 UI 的开发。 一、什么是 Switch&#xff1f; 在 Android 中&#xf…

HOT27-合并两个有序链表

leetcode原题链接&#xff1a;合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1…

React修改Antd组件的样式

修改默认的antd组件&#xff0c;需要使用global import React, { useState, useEffect } from react; import { Tabs, Rate, Steps } from antd; import styles from ./index.less;const Index (props) >{return (<div className{styles.class_steps}><Stepsprog…

ATA-2161高压放大器在微流控技术细胞分选中的应用

高压放大器是一种专业的电子测试设备&#xff0c;用于将低电压信号放大为高电压信号。它在许多领域中被广泛应用&#xff0c;就例如微流控领域。今天我们就给大家分享一下ATA-2161高压放大器在微流控技术细胞分选中的应用。 本次实验我们会用到ATA-2161高压放大器、示波器、信号…

4、Redis7 十大数据类型总结与十大常见应用场景

一、缓存 作为Key-Value形态的内存数据库&#xff0c;Redis 最先会被想到的应用场景便是作为数据缓存。目前这几乎是所有中大型网站都在用的必杀技&#xff0c;合理的利用缓存不仅能够提升网站访问速度&#xff0c;还能大大降低数据库的压力&#xff0c;而使用 Redis 缓存数据也…

SpringSecurity认证流程详解和代码实现

一、常见的登录校验流程 常见的登录&#xff0c;主要就是要做认证和授权。 从上面可以看到&#xff0c;登录校验的过程&#xff08;认证&#xff09;&#xff0c;主要就是围绕一个包含了用户信息的token来进行的。 至于授权的流程&#xff0c;也是由SpringSecurity来完成&…

访问PHP网页提示:将您重定向的次数过多,提示 301

访问PHP网页提示&#xff1a;将您重定向的次数过多,提示 301 chrome 浏览器 访问PHP网页提示&#xff1a;将您重定向的次数过多,提示 301 chrome 浏览器 去 chrome 浏览器设置&#xff0c;如下图 chrome://net-internals/#hsts

高性能计算培训价格 零基础入门 从入门到精通

大模型一出&#xff0c;各类企业的各类“模型”竞赛般的亮家伙&#xff0c;算力时代抢先到来。2023年4月超算互联网的正式部署&#xff0c;标志着&#xff0c;很快&#xff0c;越来越多的应用都需要巨大的计算资源。 这给传统的计算机体系结构带来了巨大的挑战&#xff0c;计算…

Layui多选框提交时只能获取到最后一个选中的值的解决办法

<div class"layui-card"><div class"layui-card-header layui-this">包装类型</div><div class"layui-card-body"><input type"checkbox" name"aa" title"1A-100" value"1A-100&…

【Linux】文件基础IO操作:C语言接口 | 系统调用接口 | 重定向

重修C语言文件知识Linux文件知识标记位传参文件的系统调用理解什么是文件文件fd的分配规则重定向C语言文件层面的缓冲区知识 重修C语言文件知识 打开文件操作fopen函数&#xff1a; 我们看一段代码&#xff0c;以写(w)的形式来打开文件&#xff1a; #include <stdio.h>…

Web服务器群集:部署Tomcat

目录 一、理论 1.Tomcat 2.JDK 3.Tomcat安装 4.Tomcat优化 5.Tomcat虚拟主机设置 二、实验 1.JDK安装 2.Tomcat安装 3.Tomcat优化 4.Tomcat 虚拟主机配置 三、总结 一、理论 1.Tomcat &#xff08;1&#xff09;概念 Tomcat服务器是一个免费的开放源代码的Web应用…

emscripten的安装

参考&#xff1a;1.1 安装Emscripten-C/C面向WebAssembly编程 下载emsdk&#xff08;emscripten&#xff09;&#xff0c;git地址&#xff1a;git clone GitHub - emscripten-core/emsdk: Emscripten SDK打开emsdk中emsdk.bat所在的目录&#xff0c;进入cmd&#xff0c;输入 e…

Node.js健康检查和过载保护

[图片来源&#xff1a;unsplash.com[1]] 设想一下&#xff0c;你有30个Node服务器与 "Nginx "服务器平衡。服务器的负载被平均分配&#xff0c;所以如果你有9000个用户&#xff0c;每个服务器有300个客户。把负载平均分配给每台服务器并不意味着你可以避免过载&#…