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

相关推荐
时空无限4 分钟前
ubuntu apt 查看软件之间的依赖
linux·运维·ubuntu
Escalating_xu7 分钟前
【Linux】线程概念与控制:从地址空间、LWP 到 pthread_create、join、detach 与 NPTL
java·linux·redis
Escalating_xu17 分钟前
【Linux】进程信号:从产生、阻塞与递达到 sigaction、可重入与内核返回路径
linux·运维·面试·职场和发展
2603_9664372621 分钟前
格式化之后数据还能恢复吗?说清恢复条件
linux·运维·数据库
RisunJan34 分钟前
Linux命令-traceroute(IP 路由路径追踪)
linux·运维·tcp/ip
拾光Ծ1 小时前
Linux五种I/O模型与fcntl非阻塞控制
java·linux·服务器·i/o模型
二炮手亮子3 小时前
Linux命令行合集(涵盖定时任务、防火墙、SHH、线上问题实战等)
linux·运维
张洛闻Eren10 小时前
MySQL 维护稳定系统【MySQL第二课】
linux·数据库·mysql·云原生
ltl10 小时前
Linux 异步 I/O:epoll 与 io_uring 对比
linux
ltl11 小时前
压缩算法工程实践:吞吐、比率与 CPU 权衡
linux