| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Linux网络 IP/TCP校验和、checksum、伪首部相关问题 -> 正文阅读 |
|
[网络协议]Linux网络 IP/TCP校验和、checksum、伪首部相关问题 |
1、校验和作用校验和是为防止报文在信道传输出现误码导致报文错误,或者传输过程中间网络设备错误造成报文错误等,并不保证报文被他人恶意篡改。防君子不防小人,而已修改报文内容重新计算校验和是无法检测的。 2、校验内容网络报文校验和包括3层校验和4层校验, 4层校验:需要校验 伪头部+4层头+4层负载(应用层负载)。 3、计算方式校验和的计算方法是统一的,即所有2字节数据的二进制反码求和。内核实现是以四字节求和取反得到校验和。 发送方填充校验和: 接收方验证校验和: 几个关键点: 4、伪首部相关问题伪首部并非TCP&UDP数据报中实际的有效成分。伪首部是一个虚拟的数据结构,其中的信息是从数据报所在IP分组头的分组头中提取的,既不向下传送也不向上递交,而仅仅是为计算校验和。这样的校验和,既校验了TCP&UDP用户数据的源端口号和目的端口号以及TCP&UDP用户数据报的数据部分,又检验了IP数据报的源IP地址和目的地址。伪报头保证TCP&UDP数据单元到达正确的目的地址。 Q:已经有了ip头校验,为什么还需要在tcp层再次校验ip相关信息? Q:伪首部可以直接使用整个ip头吗? 5、linux内核校验和计算校验和需要遍历每个字节,对性能影响还是很大的,所以linux对校验和的计算做了很多优化处理 skb->ip_summed表明L3和L4的计算结果,区分接收和发送: 1、接收过程skb->csum可能包含L4一部分校验和; (1) CHECKSUM_NONE: (2) CHECKSUM_COMPLETE: (3) CHECKSUM_UNNECESSARY: (4) CHECKSUM_PARTIAL:
2、发送过程skb->ip_summed字段包含了L4软件告诉设备驱动程序当前校验和的状态,各取值含义如下: (2) CHECKSUM_PARTIAL:L4软件计算了伪报头,并且将值保存在了tcp/udp首部的check字段中,硬件需要计算其余部分的校验和。硬件适合做简单的++操作,伪头部稍复杂交给cpu。 参考: |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:24:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |