- 浏览: 314625 次
- 性别:
- 来自: 上海
最新评论
-
JQ_AK47:
...
Linux下直接发送以太包 -
winsen2009:
谢谢分享,如果能再来一个列子就更好了,刚接触看完还是不懂的用
UNPv1_r3读书笔记: SCTP编程
文章列表
linux内核太构造数据包的第二种方式就是直接调用dev_queue_xmit函数,将构造完毕的数据包直接发送到网卡驱动。从NF框架来看,该函数的调用是在 POSTROUTING点之后了,也可以理解为直接通过调用二层的发送函数,将三层构造的数据 ...
转自:http://blog.chinaunix.net/u/33048/showart_2043789.html,作者:Godbach
一、构造数据包简析
这里并不详细介绍如何在内核中构造数据包,下文如有需要会在适当的位置进行分析。这里简单的分析讲一下内核态基于Netfilter框架构造数据包的方式。
内核中可以用到的构造数据包的方式,个人认为可以分为两种。
其一,我们直接用alloc_skb申请一个skb结构体,然后根据实际的应用填充不同的成员,或者基于当前数据包的skb,调用skb_copy_expand()函数等新申请一个nskb,并且拷贝skb的内容。
其二,也 ...
/****************************************************
* dev_alloc_skb - 分配内存为接受的包
* @length: 分配的长度
* GFP_ATOMIC:原子类型,此函数经常用于终端上下文中
***************************************************/
struct sk_buff *dev_alloc_skb(unsigned int length)
{
return __dev_alloc_skb(length, G ...
#define ETH_ALEN 6 /* Octets in one ethernet addr */
#define ETH_HLEN 14 /* Total octets in header. */
#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */
#define ETH_DATA_LEN 1500 /* Max. octets in payload ...
#include <linux/module.h>
#include <linux/init.h>
#include <linux/netfilter_ipv4.h>
#include <linux/netfilter.h>
#include <linux/ip.h>
static unsigned int skb_buff_ops(unsigned int hooknum,
struct sk_buff *skb,
con ...