63 网络交互的过程中目标设备的选择

前言

这里主要是 调研一下 发送网络数据包的过程中 选择网络设备 

比如 向本机发送信息, 走的是 lo 

向局域网其他主机发送信息, 走无线网卡 或者 有线网卡 

 

 

基于 linux 的调试

这里主要是基于 ping 192.168.1.2 的调试 

skb->dev 的初始化是在 

 

skb->_skb_refdst 初始化实在 skb 初始化的时候 

 

rt->dst 来自于 cork->dst, 如下是 cork->dst 初始化的地方 

 

rt 主要是根据上下文信息 去路由表查询

 

查找 fib 路由转发表的时候, 路由转发类型是 LOCAL 类型 

 

如果是 LOCAL 路由, 直接使用设备 net->loopback_dev

 

 

sock 的来由

socket 是来自于 fd 对应的 file 的 private 

上面的过程中的 fd 对应的这个 file->private 是当前是 socket 本身 

 

 socket 来自于 socketfs 中创建的当前 fd 对应的 socket_alloc 对象创建时分配的一个 socket

 

socket_alloc 是在 socket 系统调用的时候分配的一个 socket_alloc 对象 里面包含了一个 socket 对象用于处理当前网络请求

这里是分配空间, 以及初始化 

 

sock->__sk_common->skc_net 来自于 socket 系统调用传入的 net, 为 current->ns_proxy->net_ns

 

 

 

 

 

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

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

相关文章

DE2-115板子上用 Verilog编程实现一个分秒计数器

一、实验目的 掌握 Verilog 语言在硬件描述中的应用,通过编程实现分秒计数器的逻辑功能。 学习并实践按键消抖的原理与实现方法,提升对硬件电路中信号处理的理解。 熟悉在 DE2-115 开发板上进行 Verilog 程序的开发、调试及下载验证流程,将…

R4 LSTM-火灾温度预测

import tensorflow as tf import pandas as pd import numpy as npgpus tf.config.list_physical_devices("GPU") if gpus:tf.config.experimental.set_memory_growth(gpus[0], True) #设置GPU显存用量按需使用tf.config.set_visible_devices([gpus[0]],&…

什么是跨域问题?后端如何解决跨域问题?

跨域问题是指浏览器为了安全,对不同域(包含不同协议、不同端口或不同主机名)的请求进行限制,从而导致请求无法正常访问后端接口。 跨域问题的产生源于浏览器的同源策略(Same-Origin Policy),这…

vue | rollup 打包 | 配置 rollup.config.js 文件,更改 rollup的行为

原因:将入口文件 转为 esm 和 umd 两种格式,要配置 rollup Rollup 已内置到 vite 工具中, 命令行打包,参数多,麻烦——》解决:创建配置文件,js 写的,rollup.config.js 配置 rollup.…

服务器中物理处理器和逻辑处理器的区别?

在服务器或任何计算机系统中,**物理处理器(Physical Processor)和逻辑处理器(Logical Processor)**是两个不同的概念,它们分别代表了硬件层面和操作系统层面的处理能力。 物理处理器(Physical P…

【Gin框架】中间件

1. 什么是中间件 (Middleware)? 在 Web 框架的语境下,中间件 (Middleware) 是一种可重用的软件组件或函数,它被设计用来在 HTTP 请求-响应生命周期中的特定点拦截和处理请求或响应。在 Gin 框架中,中间件特指符合 gin.HandlerFun…

STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议

STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议,主要用于帮助位于网络地址转换 (NAT) 设备(如路由器)后面的客户端发现自己的公共 IP 地址和端口号。这对于建立点对点 (P2P) 通信至关重要,尤其是在 VoIP&#…

AQS详解

概念 AQS(AbstractQueuedSynchronizer) 是并发包(java.util.concurrent)的核心组件,用于构建锁和同步器(如 ReentrantLock、Semaphore、CountDownLatch 等)。它通过维护一个 CLH 队列 和 同步状…

python实战项目76:51job数据采集与分析

python实战项目76:51job数据采集与分析 一、数据采集二、数据预处理2.1 导入相关库、读取数据2.2 查看数据2.3 处理数据、删除重复值、删除空值2.4 处理薪资水平字段数据三、数据可视化3.1 不同公司规模招聘岗位数量分布3.2 不同公司性质招聘岗位数量分布3.3 不同年限要求招聘岗…

每天一个前端小知识 Day 7 - 现代前端工程化与构建工具体系

现代前端工程化与构建工具体系 1. 为什么要工程化?(面试高频问题) 问题痛点: 模块太多、无法组织;代码冗长、性能差;浏览器兼容性差;团队协作混乱,缺少规范与自动化。 工程化目标…

shell脚本--变量及特殊变量,算术逻辑运算

1.变量是什么 2.变量类型 3.动态,静态,强弱类型 4.变量的命名 5.变量的定义和引用 5.1三种变量类型 普通变量 环境变量 局部变量 5.2单引号,双引号,强弱引用 双引号对变量赋值的影响01:59:给变量加双引号&#x…

Python粒子群优化算法结合热力图TIFF文件案例

Python粒子群优化算法结合热力图TIFF文件案例 1. 项目概述 本项目使用粒子群优化算法(PSO)在热力图TIFF文件中寻找温度最高点。热力图通常以地理空间数据形式存储(TIFF格式),包含温度分布信息。PSO算法模拟鸟群觅食行为,通过粒子协作在搜索空间中寻找最优解。 import …

使用Mambaout替换YOLObackbone 整合全局信息,提升遮挡目标检测中定位能力,以及小目标、多尺度

近年来,Transformer 架构虽在各类任务中成为主流,但注意力机制的二次复杂度对长序列处理构成挑战。为此,类似 RNN 的模型如 Mamba 被引入,其核心是状态空间模型(SSM),旨在以线性复杂度处理长序列…

力扣网C语言编程题:接雨水(动态规划实现)

一. 简介 本文记录力扣网上的逻辑编程题,涉及数组方面的,这里记录一下 C语言实现和Python实现。 二. 力扣网C语言编程题:接雨水 题目:接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子…

关于ubuntu环境下vscode进行debug的随笔

CMakeLists.txt的编写 顶层目录的CMakelists.txt 目录:./CMakeLists.txt #./CMakeLists.txt cmake_minimum_required(VERSION 3.10) project(xxx_project_name LANGUAGES CXX) #设置工程名# 设置 C 标准和编译选项 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_ST…

技术演进中的开发沉思-9:window编程系列-内核对象线程同步(下)

今天我们继续走进 Windows 内核的世界,就昨天没说完的内核对象与线程同步内容接着继续,它们就像精密仪器里的齿轮,虽不显眼,却至关重要。 异步设备 I/O 在 Windows 系统中,异步设备 I/O 就像是一场精心编排的接力赛。…

用AI从0开始量化交易-Anaconda环境(env)和缓存(pkg)更改储存位置

之前介绍了Anaconda的安装和环境建立,最近自己的量化交易工具开发的差不多了,却发生了尴尬的问题,C盘被不断增大的conda环境和缓存占据得快满了。 在网上找了些教程,大多是讲迁移的,专门讲改本地改储存位置的比较少&am…

Python爬虫工作基本流程及urllib模块详解

在2025年的数据驱动时代,网络数据成为企业与个人的“金矿”,而Python爬虫则是挖掘这金矿的“利器”!无论是抓取电商价格、分析社交媒体趋势,还是构建知识库,Python爬虫都能让你事半功倍。然而,爬虫开发并非…

thinkphp8 模型-一对一,一对多,多对多 学习

thinkphp 命令创建模型(和laravel基本一样) php think make:model User 在模型里创建字段 protected $table User; protected $pk id; // 定义返回哪些字段 protected $field [id, name]; // 返回字段的类型 protected $schema [id > int] 模…

非线性方程组求解:复杂情况下的数值方法

在科学研究和工程应用中,非线性方程组的求解是一个常见的挑战。尤其当方程组包含复杂函数(如特殊函数、积分、微分等),使得雅可比矩阵难以解析求导时,传统的基于解析雅可比矩阵的 Newton-Raphson 方法难以直接应用。本…