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

相关推荐
longerxin20203 小时前
nano编辑器插入、编辑完整操作教程(Linux日志/配置专用)
linux·运维·编辑器
听风3477 小时前
Arch Linux 软件安装完全指南
linux·运维·archlinux·pacman
网络安全零基础教程8 小时前
网络安全春招面试避坑与复盘指南
linux·网络·安全·web安全·面试·职场和发展
扛枪的书生8 小时前
TigerVNC 安装流程
linux
Mortalbreeze8 小时前
深入 Linux Socket 编程:端口号、网络字节序与 struct sockaddr 详解
linux·服务器·网络·c++
躺柒8 小时前
读半导体简史08大型机
linux·服务器·c语言·数据库·unix·ibm
井川廊咏8 小时前
【总集篇】Linux | 如何创建一个 home 目录在 /data 磁盘的 sudo 用户(补档)
linux·运维·服务器
Kina_C9 小时前
LVS负载均衡的十二种核心调度算法
linux·运维·算法·负载均衡·lvs
shencz20009 小时前
用bc脚本求解大质数
linux
AOwhisky9 小时前
Linux(CentOS)系统管理入门笔记(第十五期)——文件系统与存储管理(上篇):设备识别、挂载与文件查找
linux·运维·笔记·centos·文件系统