伪头部校验

news2025/1/19 11:23:54

本章问题

UDP和TCP的伪首部只用于计算校验和,在UDP和TCP的报文中是不存在的,为什么要引入伪首部呢?为什么伪首部的要有这些字段?这里我们就先看一下TCP和UDP的首部格式。
 

TCP和UDP首部


源端口目的端口:是0-65535任何数字,在收到请求时系统会为客户端动态分配,0-1023为知名端口号
UDP报文长度(单位4byte):表示udp报头 + udp数据总长度 = 8 + len
校验和:计算之前校验和位置填0,发送之前将校验结果填上,目标端收到后会再次进行校验结果为0表示正确
UDP伪头部:包含UDP1+UDP+data三部分共12 + 8 + len 个字节,UDP发送时需要通过伪头部进行16位校验,伪头部只是在校验时用到,数据收发不用伪头部
TCP报头长度(单位4byte):表示TCP报头不包含数据的长度=20+选项长度,UDP无选项
TCP伪头部:包含TCP1+TCP+选项长度+数据长度4部分组成,如果没有选项和数据刚好就是12+20=32个字节,tcp发送时需要对12+20+选项长度+数据长度这些字节进行16位校验,伪头部只是在校验时用到,数据收发不用伪头部,因为这只是IP报头的一部分而已。

我们为什么会使用伪头部校验?

伪首部是为了增加 校验和 的检错能力:通过伪首部的目的IP地址来检查TCP报文是否收错了、通过伪首部的传输层协议号来检查传输层协议是否选对了。

伪首部的目的是为了防止有人截获tcp数据然后加上IP包头伪造数据包,重放攻击。伪首部只是一个虚拟的概念,是为了计算tcp校验和而虚构的,不存在协议层中任何一个位置。
由于socket协议栈在开始已经知道应用层数据要发往哪里,但是还没有到tcp层封装,故虽然知道ip源地址和目的地址,但是没有填入数据包。

为什么伪首部要有目的IP地址?

我们知道数据传输过程中会产生误码,0可能变为1,1可能变为0,并且每种校验码都有一定的查错能力,超过这个范围,就无法察觉错误了。而早期的通信环境大概比较糟糕,因此,在传输过程中出现误码,可能使IP报文的目的地址出现错误,接收主机的UDP计算校验和时,目的IP地址来自IP层,由于目的IP地址出现错误,导致发送主机计算检验和时使用的目的IP地址与接收主机计算检验和时使用的目的IP地址不同,UDP发现错误,丢弃报文。

为什么伪首部要有源IP地址?

为了让接收主机确认源IP地址没有出现错误。假设我们想要开发一款基于UDP的程序,A发送UDP报文给B,B要发送回应报文给A,假设传输过程出现误码,源IP地址出现错误,则A计算检验和时使用的源IP地址与B计算校验和时使用的源IP地址不同,B就可以发现错误,从而丢弃报文,定时重传等可靠性由应用程序自己保证。

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

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

相关文章

CSP认证刷题笔记(3)最大矩形(13年CSP认证第三题)

文章目录 题目描述基本思路求解代码 题目描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1≤i≤n)个矩形的高度是 hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3,1,6,5,2,3。 请找出…

聚苯并咪唑(PBI)为超高性能工程塑料 未来应用前景较好

聚苯并咪唑(PBI)为超高性能工程塑料 未来应用前景较好 聚苯并咪唑(简称PBI),是一类以苯并咪唑基团作为结构重复单元的杂环聚合物。聚苯并咪唑不溶于水,溶于强极性溶剂,具有耐高温、耐腐蚀、抗辐…

学习C语言的重要性以及如何学好

配套视频:https://www.bilibili.com/video/BV1kw4m1Q7AV/?spm_id_from333.999.0.0 一、C语言在互联网领域重要的开源项目 https://github.com/mysql/mysql-server 数据库开源项目【互联网重型开源项目】 编程语言:C/C/ASM 部分汇编代码 开源项目核心…

Verilog基础语法——条件语句if-else与case

Verilog基础语法——条件语句case、if-else 写在前面一、if-else语句二、case语句2.1 case语句2.2 casez语句2.3 casex语句 写在后面 写在前面 在Verilog语法中,常用的条件语句有if-else语句和case语句,用于判断条件是否为真,并执行判断条件后…

使用docker安装doccano

使用docker安装doccano 1 介绍 数据标注的工具比较多,比较出名的有Doccano、Label Studio等。 Label Studio :图像标注、文本标注、音频标注、视频标注、时间序列标注,功能比较多。 Doccano:主要是针对文本的标注,…

平芯微PW4057H中文规格书

产品概述(百度翻译) PW4057H 是可以通过外部电阻编程的恒流/恒压充电的充电管理电路。该器件内部包括功率晶体管应用时不需要外部的电流检测电阻和阻流二极管。 PW4057H 只需要极少的外围元器件,并且符合 USB 总线技术规范,非常适…

英睿达硬盘数据恢复方法:从丢失到找回的详细指南

在数字化时代,硬盘作为我们存储重要数据的关键设备,承载着大量的个人、工作甚至商业信息。然而,无论是由于意外删除、格式化、病毒感染还是硬件故障,硬盘数据丢失的情况时有发生。英睿达硬盘作为市场上的知名品牌,其数…

后仿真中的必懂VCS仿真选项之 +ignorempcond

当多个输入同时改变时,VCS支持延迟注释。它忽略条件检查,并从适用的延迟中插入最小的延迟。 当多个输入同时改变时,它们会对特定的输出信号产生影响。 如果没有匹配的条件弧线从输入(切换)延伸到输出,那么VCS不会标注零延迟。 …

ITSM的服务台如何让工作更流畅

在现代企业的信息技术管理框架内,IT服务管理(IT Service Management, ITSM)体系扮演着至关重要的角色,而其中的服务台则是这一复杂体系的心脏地带。服务台不仅仅是解答技术疑问的一线窗口,更是企业IT运维效率与用户满意…

STM32_IIC通信

IIC通信 • I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线 • 两根通信线:SCL(串行时钟线)、SDA(串行数据线) • 同步,半双工 • 带数据应答 • 支持总线挂载多…

C++ 程序员常用的VScode的插件

vscode中好用的插件 Better CommentsBookmarksC/C ThemeChinese (Simplified) (简体中文) Language Pack for Visual Studio CodeclangdClang-FormatCodeLLDBCMakeCMake ToolsCode RunnerCode Spell CheckerCodeSnapColor Highlightvscode-mindmapDraw.io IntegrationError Len…

VirtualBox虚拟机串口通信

主机:Win11 VirtualBox: 7.0 两台Guest虚拟机: CentOS 现在希望两台CenOS虚拟机能通过串口通信。 设置前先关闭两台虚拟机。 设置方式就是在VirtualBox的设置里面设置串口,需要注意的是其中一台不勾选“连接至现有通道或套接字”,另外一…

分享我经常用的一个图片下载插件,不会写爬虫代码也能随意下载图片

更多精彩内容在公众号。 ImageAssistant(图片助手)是一款专为Chrome浏览器设计的扩展程序,它具备强大的网页图片处理功能。以下是关于ImageAssistant的一些主要特点和功能: 批量下载图片:ImageAssistant的核心功能之一…

什么是蜜罐,在当前网络安全形势下,蜜罐能提供哪些帮助

在当前的互联网时代,网络安全威胁日益严峻,攻击手段层出不穷。为了应对这些威胁,网络安全专家们不断探索新的防御手段,在过去的几年里,一种更加积极主动的网络安全方法正在兴起。蜜罐技术便是这样一种备受瞩目的主动防…

GPT大模型不再遥不可及:本地化部署让每个人都能拥有

本地化部署是GPT发展的一个趋势。 本地化部署指的是将大模型部署在用户自己的设备上,而不是依赖于云服务商提供的接口。本地化部署有以下几个优势: 数据完全私有化,降低数据丢失和泄露风险,对数据安全性和私密性有保障。 降低使…

uniapp微信小程序使用vscode代替HBuilderX开发uniapp微信小程序并且vscode改动代码微信开发者工具能实时更新

前言 最近公司开发新的小程序项目,经调研综合所有人员考虑,用uni-app Vue3tsvite技术栈开发;而官方推荐使用HBuilderX开发,而考虑到目前公司所有前端人员对VsCode更熟悉,故此总结了一下uniapp项目使用vscode代替HBuild…

【Python探索之旅】字典

字典的基本特性 创建字典 修改字典 添加键值对 删除键值对 字典方法 遍历字典 完结撒花​ 前言 字典是 Python 中内建的一种具有弹性储存能力的数据结构,可存储任意类型对象,与序列使用整数索引不同,它使用键(key)进行索引。 通常任何不…

Lazyboy品牌发布会“球幕气膜”

Lazyboy品牌发布会“球幕气膜”为品牌活动提供了一个独特、现代化、环保的展示空间。这座球幕气膜不仅为发布会提供了一个视觉震撼的场地,也为与会嘉宾带来了全新的体验。作为轻空间(江苏)膜科技有限公司(以下简称“轻空间”&…

微信自主创建表单投票小程序源码系统 带充值刷礼物功能 附带源代码以及完整的安装部署教程

系统概述 本小程序实现的核心功能包括:用户注册登录、表单提交投票、查看投票结果、在线充值以及赠送礼物等。其中,投票表单可以根据实际需求进行自定义设置,满足不同类型的调查或评选活动。同时,通过引入第三方支付接口&#xf…

PyQt5实现PDF预览

PyQt不支持PDF预览的,为了解决这个问题,本文思路是:想将PDF生成长图片,让后PyQt加载长图片达到预览效果。 步骤 1: PDF生成长图片程序 import fitz # PyMuPDF from PIL import Imagedef pdf_to_long_image(pdf_path, output_pa…