在内核协议栈植入一段代码

很久以前写的一个功能,可以在内核协议栈植入一段代码,比如广告javascript。主要是修改http协议,难点在于修改了tcp包后,需要重组,可采用nf_conntrack_helper机制中的函数nf_nat_mangle_tcp_packet解决重组包问题。

涉及到的技术点包括netfilter,netlink,selinux,socket,json等,直接上源码。

https://github.com/yanjinjin/webad_last

流程如下

一个网络数据包的接收流程为 网卡----->网卡驱动----->内核协议栈------>应用程序

一个网络数据包的发送流程为 应用程序------>内核协议栈------>网卡驱动------>网卡

如上图&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 内核协议是指在Linux操作系统中实现网络通信的核心组件。它是一个自上而下的分层体系结构,用于处理从应用层到物理层的网络数据传输。 在协议的顶层是应用层协议,例如HTTP、FTP和DNS等。应用层协议使用套接字与传输层进行通信。传输层包括TCP和UDP协议,负责在主机之间提供可靠的数据传输和错误恢复。TCP提供面向连接的服务,确保数据的可靠交付,而UDP提供无连接的服务,并且不进行错误恢复。 传输层下面是网络层,它负责将数据包从源主机传输到目标主机。网络层使用IP协议进行数据包的路由和转发。IP协议定义了IP地址和数据包封装格式等规范。 在网络层下面是数据链路层,它包括以太网、Wi-Fi和PPP等协议。数据链路层负责将数据包从网络层传输到物理层,并提供错误检测和传输控制。 最底层是物理层,它包括电缆、光纤和无线电等物理介质,负责实际的数据传输。 Linux内核协议的实现在内核空间中。它使用网络协议的核心模块来处理网络数据的收发、封装和解封装等操作。每个层级的协议会根据需要访问下一层的服务,并将处理后的数据传递给上一层或下一层协议协议的设计目标是高性能和灵活性。Linux内核协议使用分层设计,使得各个层级的功能独立,并且可以根据具体需求进行扩展和定制。内核代码的高度优化使得协议能够高效地处理大量的网络数据,并提供可靠、快速的网络通信服务。 总之,Linux内核协议是Linux操作系统中负责实现网络通信的关键组件。通过合理的分层设计和优化的内核代码协议能够提供高性能和灵活性的网络通信服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值