网络层分析

网络访问层仍受到传输介质的性质和相关适配器的设备驱动程序的影响很大。网络层与网络适配器的硬件性质几乎是完全分离的。为什么是几乎呢?该层不仅负责发送和接受网络数据,还负责在彼此不直接连接的系统之间转发和路由分组。查找最佳路由并选择适当的网络设备来发送分组,也涉及对底层地址簇的处理(比如特定硬件的 MAC 地址)。

ip_rcv 函数是网络层的入口点,分组向上穿过内核的过程如下:

image.png

接收分组

接收分组

在分组转发到 ip_rcv 之后,必须检查接收到的信息确保它是正确的。主要检查计算的校验和与首部中存储的校验和是否一致。其他检查包括分组是否到达了 IP 首部的最小长度,分组协议是否确实是 IPv4。
在进行检查之后,内核并不立即继续对分组的处理,而是调用一个 netfilter 挂钩,使得用户空间可以对分组数据进行操作。netfilter 挂钩插入到内核源码中定义好各个位置,使得分组能够被外部动态操作。

分组转发

IP 分组可能如上所述交付给本地计算机处理,他们也可能离开互联网路层,转发到另一个计算机,而不牵涉本地计算机的高层协议实例。分组的目标地址可分为以下两类。

  • 目标计算机在某个本地网络中,发送计算机与该网络有连接。
  • 目标计算机在地理上属于远程计算机,不连接到本地网络,只能通过网关访问。

第二种场景要复杂得多。首先必须找到剩余路由中的第一个站点,将分组转发到该站点,这是向最终目标地址的第一步传输。因此,不仅需要计算机所属本地网络结构的相关信息,还需要相邻网络结构的相关的外出路径的信息。

发送分组

image.png

转移到网络访问层:ip_output 函数代码流程,其中根据分组是否需要分片。

image.png

调用流程

参考资料:https://github.com/0voice

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

罗技键鼠更换新台式机无蓝牙通过接收器安装

优联驱动下载: http://support.logitech.com.cn/zh_cn/software/unifying (下载安装后按照步骤一步步操作,匹配后即可使用) 向京东客服反馈后提供的驱动下载安装连接 有问题欢迎评论沟通~

《Keras3 minist 手写数字AI模型训练22秒精度达到:0.97》

《Keras3 minist 手写数字AI模型训练22秒精度达到:0.97》 一、修改源码加上如下两条代码二、源码修改如下三、Keras3 minist 训练22秒结束,训练过程截图四、Keras3 minist 源码截图 一、修改源码加上如下两条代码 import os os.environ["KERAS_BAC…

装饰模式的理解和实践

在软件设计中,设计模式提供了一种可复用的解决方案,用于解决常见的设计问题。装饰模式(Decorator Pattern),也称为包装模式(Wrapper Pattern),是结构型设计模式之一。它通过一种对客…

游戏引擎学习第43天

仓库 https://gitee.com/mrxiao_com/2d_game 介绍运动方程 今天我们将更进一步,探索运动方程,了解真实世界中的物理,并调整它们,以创建一种让玩家感觉愉悦的控制体验。这并不是在做一个完美的物理模拟,而是找到最有趣…

Maven(生命周期、POM、模块化、聚合、依赖管理)详解

Maven构建项目的生命周期 在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试,部署等工作,这个过程就是项目构建的生命周期。虽然大家都在不停的做构建工作&…

第六届地博会开幕,世界酒中国菜美食文化节同期启幕推动地标发展

第六届知交会暨地博会开幕,辽黔欧三地馆亮点纷呈,世界酒中国菜助力地理标志产品发展 第六届知交会暨地博会盛大开幕,多地展馆亮点频出,美食文化节同期启幕推动地标产业发展 12月9日,第六届粤港澳大湾区知识产权交易博…

通过“思维链”提升ChatGPT提示词质量,更好的辅助学术论文

目录 1.写在开头 2.思维链是啥 1.写在开头 对于初步接触AIGC工具的宝子们,可以直接用最符合你习惯的方式去使用Kimi、ChatGPT这类AI工具。想到什么问题就问什么。对于比较简单直接的问题,不需要去想怎么写好提示词,直接在聊天窗口里表述你…

nacos bootstrap.yml 和 spring.config.import 加载配置的流程区别

相关依赖 springboot:2.7.15 nacos:2.2.3 bootstrap.yml加载方式 加载流程如下图所示 从图中可以看出,: 1.bootstrap.yml 的加载是在 BootstrapApplicationListener.onApplicationEvent 接收到 ApplicationEnvironmentPreparedEventEvent 事件后另起一个 Sprin…

高效项目托管指南:从本地到 GitHub 的完整流程

在现代软件开发中,将项目托管在 GitHub 上是一个常见且高效的方式。GitHub 不仅可以用作版本控制工具,还能帮助你与团队协作或展示自己的项目。本文将带你一步步完成项目的打包和上传。 高效项目托管指南:从本地到 GitHub 的完整流程 1. 准备…

【漏洞复现】CVE-2024-34102 Magento Open Source XXE漏洞

目录 漏洞介绍 影响版本 环境搭建 查看版本 漏洞复现 手动复现 漏洞 poc Magento Open Source 是一个免费开源的电子商务平台,适合中小企业或开发团队通过自定义代码和插件创建在线商店。它由社区开发和支持,功能强大但需要更多的技术投入。Adobe…

Scala的隐式对象

Scala中,隐式对象(implicit object)是一种特殊的对象,它可以使得其成员(如方法和值)在特定的上下文中自动可用,而无需显式地传递它们。隐式对象通常与隐式参数和隐式转换一起使用,以…

C# 委托详解02(委托和事件单独开一篇)

上一篇仅仅简单通过代码,以及相关运行示例,对委托有了基本概念。这一篇侧重对委托的更加深入的理解。有问题欢迎评论。本人技术不高,也欢迎指正。 希望看完我能够解释清楚以下问题,而大家能够从中找到自己的答案。 什么是委托&a…

【零成本抽象】基本概念与在C++中的实现

零成本抽象概念是由 Bjarne Stroustrup 提出的,他在 1994 年的著作中就有相关设想,2016 年其在 C++ 大会登台演讲时,明确阐述了 C++ 中的 “零成本抽象” 这一理念。 一、零成本抽象概念 Bjarne Stroustrup提出的零成本抽象概念,是指在编程中使用高级抽象机制时,不会产生…

Docker 安装 Jenkins:2.346.3

准备:已安装Docker,已配置服务器安全组规则 1581 1、拉取镜像 [rootTseng ~]# docker pull jenkins/jenkins:2.346.3 2.346.3: Pulling from jenkins/jenkins 001c52e26ad5: Pull complete 6b8dd635df38: Pull complete 2ba4c74fd680: Pull complet…

分布式事物XA、BASE、TCC、SAGA、AT

分布式事务——Seata 一、Seata的架构: 1、什么是Seata: 它是一款分布式事务解决方案。官网查看:Seata 2.执行过程 在分布式事务中,会有一个入口方法去调用各个微服务,每一个微服务都有一个分支事务,因…

分布式日志系统设计

一、分布式日志系统定义 分布式日志系统是一种用于收集、存储和分析大规模分布式系统日志的系统。它可以帮助开发人员和系统管理员实时监控和调试系统,提高系统可靠性和可用性,同时也可以用于日志分析和故障排查。 二、简单设计思路 日志收集&#xff…

VSCode设置字体

参考文章:【面向小白】vscode最佳实践(2)—— 字体设置(fira code更纱黑体),这篇文章末尾给了安装字体的链接。 配置的字体还是很好看的。 ‘Fira Code Retina’, ‘Sarasa Mono Sc’ 需要注意的一个点&am…

leaflet 双屏对比

本章主要讲的是leaflet的双屏对比,本文参考了插件:Leaflet.Sync,我这里对原有的文件进行了重写,去掉了一部分不需要的内容,增加了flyTo和panTo方法,新的方法,如果需要可以自行下载资源。 目录 …

什么是语义空间?

一、概念 今天我们来聊一聊一个比较抽象的概念——语义空间。语义空间(Semantic Space)是自然语言处理(NLP)领域中一个重要的概念,在语义空间中,文本中的语义信息通过数学的方式来表示和处理。语义空间是一…

Linux系统nginx版本升级

最近公司漏扫有涉及到需要升级nginx的部分, 以下是一些总结经验 检查当前nginx版本 执行命令: nginx -V 如果没有设置环境变量则需要进入到nginx目录sbin目录下执行: ./nginx -V 下载最新版nginx nginx下载地址: https://nginx.org/en/download.html 1)选择稳定版本 wget h…