基于openswan klips的IPsec VPN实现分析(二)数据接收
来源:互联网 发布:查理大学 知乎 编辑:程序博客网 时间:2024/05/16 08:51
http://blog.csdn.net/rosetta/article/details/8494381
转载请注明出处:http://blog.csdn.net/rosetta
接收数据解密和加密发送数据处理基本相似,无非就是逆过程。
Klips对接收数据的处理流程如下:
数据解密过程(以esp为例)
ipsec_rcv()
->ipsec_rcv_decap()
->ipsec_rcv_decap_once()//proto_funcs = esp_xform_funcs(当然这里还有ah,ipcomp对应的结构体指针赋值)
->proto_funcs->rcv_checks
->proto_funcs->rcv_setup_auth
->proto_funcs->rcv_decrypt
解完密后由 netif_rx(irs->skb);发送给上层协议栈处理。
下面详细分析数据接收并解密过程。
Ipsec_rcv()从物理网卡获取到数据包,这个处理函数是在ipsec_klips_init()中的openswan_inet_add_protocol()增加协议支持时注册的,首先判断skb是否有数据并确保skb是一份拷贝数据,然后判断是否是ESP包、AH包或者是COMP包,如果是则再判断物理网卡是否有对应的虚拟网卡绑定,然后走到ipsec_rcv_decap()。
在ipsec_rcv_decap()里依据ESP、AH或COMP选择对应的xform_functions结构体,此结构包含认证函数指针、解密函数指针。再进入ipsec_rcv_decap_once() proto_funcs->rcv_checks检查ESP包是否是4字节对齐(rfc24062.4节),接着判断是否存在有效的SA;proto_funcs->rcv_setup_auth设置哈希检验函数相关结构体;
proto_funcs->rcv_decrypt解密,解完密的数据再去查询SP,如果查找匹配的SP(eroute)就调用netif_rx()把数据包扔给上层协议栈处理。
- 基于openswan klips的IPsec VPN实现分析(二)数据接收
- 基于openswan klips的IPsec VPN实现分析(二)数据接收
- 基于openswan klips的IPsec VPN实现分析(一)数据发送
- 基于openswan klips的IPsec VPN实现分析(一)数据发送
- 基于openswan klips的IPsec VPN实现分析(三)安全协议
- 基于openswan klips的IPsec VPN实现分析(四)应用层和内核通信(1)
- 基于openswan klips的IPsec VPN实现分析(五)应用层和内核通信(2)
- 基于openswan klips的IPsec VPN实现分析(六)应用层SADB操作
- 基于openswan klips的IPsec VPN实现分析(七)内核SADB维护(1)
- 基于openswan klips的IPsec VPN实现分析(八)内核SADB维护(2)
- 基于openswan klips的IPsec VPN实现分析(九)加密算法维护
- 基于openswan klips的IPsec VPN实现分析(十)认证算法维护
- 基于openswan klips的IPsec VPN实现分析(十一)NAT穿越
- CentOS 6.3下基于Openswan IPSec VPN的实现
- 使用openswan搭建ipsec vpn
- openswan klips代码分析--(1)初始化流程
- openswan klips数据加解密过程
- 使用openswan构建lan-to-lan VPN(KLIPS)
- 关于sqrt函数 error C2668: 'sqrt' : ambiguous call to overloaded function
- 关于怎么绘制星级评价方法
- 一位资深HR的职场感言
- 迅雷笔试题的Utf-8编码检测的实现
- Muduo里的blockingQueue实现线程池伪码
- 基于openswan klips的IPsec VPN实现分析(二)数据接收
- OftenTap亲密度通讯录: 联系人亲密度管理, 群发短信/邮件, 快捷拨号器
- MySQL新建用户,授权,删除用户,修改密码
- 尾递归
- 大话设计模式八:工厂方法模式(factory method)
- win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法
- 6.3.2 层次遍历
- 使用代理模式的数据库连接池
- platform平台设备驱动