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

相关推荐
疯狂吧小飞牛17 小时前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈17 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
todoitbo19 小时前
用虚拟局域网打通 Win/Mac/Linux 三端:跨设备协作的实用方案
linux·运维·macos
源远流长jerry19 小时前
RDMA 基本操作类型详解:从双端通信到单端直访
linux·网络·tcp/ip·ip
Sylvia-girl20 小时前
Linux下的基本指令1
linux·运维·服务器
wyt53142920 小时前
Redis的安装教程(Windows+Linux)【超详细】
linux·数据库·redis
17(无规则自律)20 小时前
【Linux驱动实战】:字符设备之ioctl与mutex全解析
linux·c语言·驱动开发·嵌入式硬件
天赐学c语言21 小时前
Linux - 应用层自定义协议与序列/反序列化
linux·服务器·网络·c++
jarreyer21 小时前
CentOS 7 无法使用 yum 安装软件
linux·运维·centos
薛定谔的悦1 天前
告别传统BMS!深度解读阳光电源 BM^2T 电池管理技术白皮书
linux·能源·储能·bms·ems