免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach
打印 上一主题 下一主题

关于构造Http Response包的问题 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-09-05 09:31 |只看该作者
为什么要在内核做啊,在应用层通过pcap抓包也可以做啊。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
32 [报告]
发表于 2008-09-05 09:45 |只看该作者
原帖由 NeteLife 于 2008-9-5 09:31 发表
为什么要在内核做啊,在应用层通过pcap抓包也可以做啊。


因为这里是要做主动探测,内核检测到这种包就直接进行处理了。。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
33 [报告]
发表于 2008-09-05 09:54 |只看该作者
原帖由 platinum 于 2008-9-4 21:47 发表

小写的是 match,大写的是 target
我这里有,给你



白金兄,你给我的是2.4的还是2.6的,我刚看了一下2.4.22的内核,没有ipt_TCPMSS.c啊,只有ipt_tcpmss.c.
2.6.20中只有ipt_TCPMSS.c

论坛徽章:
0
34 [报告]
发表于 2008-09-05 10:32 |只看该作者
原帖由 Godbach 于 2008-9-5 09:54 发表



白金兄,你给我的是2.4的还是2.6的,我刚看了一下2.4.22的内核,没有ipt_TCPMSS.c啊,只有ipt_tcpmss.c.
2.6.20中只有ipt_TCPMSS.c

是 2.4 的,但是是 patch 过的,所以有这个

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
35 [报告]
发表于 2008-09-05 10:34 |只看该作者
原帖由 platinum 于 2008-9-5 10:32 发表

是 2.4 的,但是是 patch 过的,所以有这个


哦,是这样啊。呵呵,我的代码是没有patch的。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
36 [报告]
发表于 2008-09-05 10:41 |只看该作者
看到这个函数的代码,如下:
/**
*        skb_copy_expand        -        copy and expand sk_buff
*        @skb: buffer to copy
*        @newheadroom: new free bytes at head
*        @newtailroom: new free bytes at tail
*        @gfp_mask: allocation priority
*
*        Make a copy of both an &sk_buff and its data and while doing so
*        allocate additional space.
*
*        This is used when the caller wishes to modify the data and needs a
*        private copy of the data to alter as well as more space for new fields.
*        Returns %NULL on failure or the pointer to the buffer
*        on success. The returned buffer has a reference count of 1.
*
*        You must pass %GFP_ATOMIC as the allocation priority if this function
*        is called from an interrupt.
*/


struct sk_buff *skb_copy_expand(const struct sk_buff *skb,
                                int newheadroom,
                                int newtailroom,
                                int gfp_mask)
{
        struct sk_buff *n;

        /*
         *        Allocate the copy buffer
         */
         
        n=alloc_skb(newheadroom + skb->len + newtailroom,
                    gfp_mask);
        if(n==NULL)
                return NULL;

        skb_reserve(n,newheadroom);

        /* Set the tail pointer and length */
        skb_put(n,skb->len);

        /* Copy the data only. */
        if (skb_copy_bits(skb, 0, n->data, skb->len))
                BUG();

        copy_skb_header(n, skb);
        return n;
}

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
37 [报告]
发表于 2008-09-05 10:44 |只看该作者
这里好像是直接用alloc_skb实现了扩充吧,重新分配缓冲区了,最初的head和data,tail指向同一个位置,然后将整个数据区下移newheaderroom的空间,相当于保持原先skb的headroom大小不变

[ 本帖最后由 Godbach 于 2008-9-5 10:48 编辑 ]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
38 [报告]
发表于 2008-09-05 10:55 |只看该作者
基本上搞清楚了这个函数,当tailroom的长度小于需要追加数据时,函数skb_copy_expand将重新申请buffer,其大小为原先skb的headroom大小+ skb->len+ 需要追加数据的长度,相当于把原先的tailroom扩大到等于追加数据的长度。

这样操作之后,tail == end

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
39 [报告]
发表于 2008-09-05 11:24 |只看该作者
原帖由 platinum 于 2008-9-4 17:13 发表
如果未来的数据内容大于以前的,要看 tailroom 有没有空间,没有的话要扩展 skb 空间
我以前总结过但不知道对不对,也希望有高人帮我指点一下
http://blog.chinaunix.net/u/311/showart_1131002.html



白金兄,又看了一遍你的文章,对照内核代码看了看,内核好像是这样处理的,首先是先使用headroom的空间,如果headroom不够用,就是用tailroom,如果tailroom仍然不够用,就用kmalloc申请一块大的空间存储

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
40 [报告]
发表于 2008-09-05 15:50 |只看该作者
标准的Http Redirect包应该是什么样样子呢,下面的可以吗
"HTTP/1.1 302 Found\r\n"

HTTP协议中应答的状态字3xx的都代表是Redirect,如果我想告诉请求方再次发送GET,应该回一个什么样的应答包给请求方呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP