以ping包发送过程分析ipsec执行(草稿)
来源:互联网 发布:中华网络传奇一条龙 编辑:程序博客网 时间:2024/06/05 16:49
ping包发送过程分析:
1、安全路径查找和创建
ping_sendmsg ------> ip_route_output_flow----->xfrm_lookup这里面会查找安全路由,或者是根据源、目的IP地址找到SPD项,再找到SAD项后创建安全路由,安全路由最终会把数据包导到ah4_output\esp4_output做相应的填充ah\esp填充
2、执行安全路径
ping_sendmsg ------> ping_push_pending_frames ------->ip_push_pending_frames-------->ip_finish_skb-------->__ip_make_skb
|------------->ip_send_skb---------->ip_local_out------------>skb->dst->output(skb)dst_output()函数就是调用路由项的输出函数, 对于安全路由, 该函数是xfrm4_output()函数, 对于普通路由, 是ip_output()函数
xfrm4_output{x->outer_mode->afinfo->output_finish,这里执行的就是xfrm4_output_finish}----->xfrm4_output_finish----->xfrm_output------->xfrm_output2------>xfrm_output_resume------->xfrm_output_one,在这个函数里面执put行的x->outer_mode->output(x, skb)中output就是ah_output或者esp_output来填充ah\esp相关字段到skb
xfrm_output_resume--------->skb_dst(skb)->ops->local_out(skb)这里执行的是struct dst_ops xfrm4_dst_ops的ops->local_out,也就是__ip_local_out函数,这时候执行的是ip_output----->ip_finish_output---->ip_finish_output2------>__ipv4_neigh_lookup_noref查找邻居子系统的缓存表,也就是arp缓存表找IP对应的mac地址,如果找不到就发arp广播后创建arp邻居
ip_finish_output2--------->__neigh_create(&arp_tbl,.....)中创建的arp邻居,也就是执行struct neigh_table arp_tbl的成员函数arp_constructor来创建,这个arp邻居中两个重要的成员neigh->ops = &arp_direct_ops;neigh->output = neigh_direct_output;见arp_constructor()函数
ip_finish_output2--------->dst_neigh_output(){n->output(n, skb)}------>neigh_direct_output()------>dev_queue_xmit(skb)
- 以ping包发送过程分析ipsec执行(草稿)
- 文件系统执行过程【草稿】
- IPsec vpn 过程分析
- socket 发送PING包
- 分析 ping 包
- ping过程分析
- ping命令执行过程详解
- ping命令执行过程详解
- ping命令执行过程详解
- ping命令执行过程详解
- ping命令执行过程详解
- ping命令执行过程详解
- ping命令执行过程详解
- ping命令执行过程详解
- ping命令执行过程一
- IPSEC VPN隧道抓包分析
- Live555中RTP包的打包与发送过程分析
- Live555中RTP包的打包与发送过程分析
- js链接 打开新的页面
- RK平台UVC摄像头shell测试脚本
- 微信小程序经验分享
- Java SE学习笔记:MAP与SET(集合与映射)
- c语言结构体及成员的互换,并且打印结构体地址和成员地址
- 以ping包发送过程分析ipsec执行(草稿)
- 多线程-2、锁
- protected关键字
- IntelliJ IDEA 导入maven项目并将它及依赖打成jar包
- 开启DMVPN 第三阶段 :: Hub--- ip nhrp redirect ; Spoke--- ip nhrp shortcut--Bruce 实验和理论都验证是正确的。
- scrapy-redis 和 scrapy-splash结合 做分布式渲染爬取
- 《Java编程思想》学习笔记
- Android安全之防止被反编译
- poj 1077 Eight