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

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值