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

相关推荐
云栖梦泽7 小时前
从 IMX415 摄像头驱动理解 Media Controller 框架
linux·开发语言·c++·嵌入式硬件
纳兰青华7 小时前
CentOS Stream 9 下载与安装完全指南:为什么它是当前最稳妥的选择?
linux
草邦设计开发团队_媒体资源平台7 小时前
Linux 稳定常驻启动 PHP 队列,服务器重启自动恢复
linux·服务器·php·队列执行
A_humble_scholar8 小时前
Linux(十六)从页表到线程封装:深入理解 Linux 线程的共享、控制与封装
linux
海盗12348 小时前
.NET编码规范03-C#命名规范大全
linux·服务器·.net
WZF-Sang8 小时前
TCP和UDP协议
linux·服务器·网络·c++·学习·tcp/ip·udp
做个文艺程序员8 小时前
Linux第11篇:存储管理——磁盘分区、LVM 与文件系统
linux·运维·服务器
天空'之城8 小时前
Linux 系统编程 14:Reactor 反应堆模式
linux·开发语言·网络编程·reactor 反应堆模式
孫治AllenSun8 小时前
【Linux】服务器设置固定ip
linux·服务器·tcp/ip
法号:行颠8 小时前
《Linux内核源码全景解读:从上电到用户态》之 目录
linux