ChinaUnix.net
相关文章推荐:

linux 内核 tcp 校验和

本帖最后由 splendidlong 于 2013-09-07 11:42 编辑 紧急求助:我在linux内核中dev.c中的修改一个数据包的目的地址目的端口,然后重新计算iptcp校验,但是最后包只能发到IP层,tcp层收不到,查看发现时tcp校验不正确,代码如下: // 修改目的地址为本地服务器地址 ih->daddr = 2852978698;//10.0.13.170 //修改目的端口 tcph->dest = htons(21); skb_reset_transport_header(skb2); // 计算...

by splendidlong - Linux系统管理 - 2013-09-06 17:23:43 阅读(1295) 回复(0)

相关讨论

我们知道在linux内核tcp发送数据的的基本的流程图如下: 请问一下函数 tcp_sendpage tcp_sendmsg的区别在那里??? 字面的意思好理解,我只是清楚,根据数据来至用户层( tcp_sendmsg)页面缓存(tcp_sendpage)的却别来选择。不是那么清楚,希望高手能给一个更加详细的说明! 我在内核打印发现: 建立了一个FTP连接,前面的数据都是走的tcp_sendmsg 后面我get了一个文件(几十K) 走的是 tcp_sendpage 求大家帮我分析...

by SCDXMOE - 内核源码 - 2014-01-09 17:47:14 阅读(3382) 回复(8)

对于linux tcp的参数有几个没有看明白,望高手指点一下: tcp_orphan_retries 网上解释:在近端丢弃tcp连接之前﹐要进行多少次重试。默认值是7,没看懂 tcp_retries1: 这个参数是什么含义?网上解释是放弃回应一个tcp连接请求前﹐需要进行多少次重试。RFC 规定最低的数值是3﹐这也是默认值,﹐没看懂 tcp_retries2 : 限制普通tcp data的最大重传次数,默认值是15 tcp_syn_retries: 表示的是3次握手过程中第1个步骤syn的最大...

by Huntsmen - Linux环境编程 - 2013-11-08 23:23:26 阅读(7188) 回复(4)

内核中在调用tcp_copy_to_iovec()函数之间复制skb到用户空间时,如果skb->ip_summed=CHECKSUM_UNNECESSARY,会调用skb_copy_and_csum_datagram_iovec(skb, hlen,tp->ucopy.iov);里面有下面一段代码: if (iov->iov_len < chunk) { if (__skb_checksum_complete(skb)) goto csum_error; if (skb_copy_datagram_iovec(skb, hlen, iov, chunk)) goto fault; } else { csum = csum_partial(skb->data, hlen, skb->csum...

by niaocai_123 - 内核源码 - 2014-03-20 11:42:01 阅读(712) 回复(0)

最近被搞掺了. 假设我只修改目的或者源地址 如何重新计算tcp校验呢? 这么做可以不: from 是旧的ip iph->daddr = to; inet_proto_csum_replace4(&tcph->check, skb, from, to, 1); 但这样做后, 在conntrack_in 的tcp_error里面会认为校验失败 郁闷了. 请问大家是怎么做的.

by Arthur_ - 内核源码 - 2009-12-03 13:49:57 阅读(6367) 回复(31)

大侠们您们好:我在linux内核中的tcp发送数据点函数tcpsendmsg()函数 发送数据时 在每一个数据包中末尾加了一个标志 但是 数据 本分也就是整个包>76之后 接收方就接收到就丢弃(不清楚原因) 我看了在数据包<76>76的数据报的校验码处理不一样 怎么样把这个包伪造之后让接收方认为是正确的包 多半是在校验码的地方出现问题 忘高手给点意见.... 谢谢

by SCDXMOE - 内核源码 - 2012-11-30 15:39:20 阅读(2407) 回复(4)

我现在使用tcp_v4_checksum(),发现计算出来的校验不正确,不知道参数该如何设置,请各位大侠救我!

by guotie - 内核/嵌入技术 - 2005-11-03 16:05:31 阅读(1521) 回复(6)

我现在使用tcp_v4_checksum(),发现计算出来的校验不正确,不知道参数该如何设置,请各位大侠救我!

by guotie - 内核源码 - 2005-11-03 16:05:31 阅读(2211) 回复(6)

u_char bufsend[]="HTTP/1.1 302 Found\r\nDate: \r\nServer: \r\nLocation: http://1.1.1.1/testqq.exe\r\nContent-Type: text/html\r\nContent-Length: 0\r\n\r\n"; int lenofbufsend=sizeof(bufsend);stcpptr->check=htons(0x0000); unsigned short attachsize=0; struct psd_header* psd_tcpptr=NULL; attachsize=ntohs(sipptr->tot_len)-20; psd_tcpptr=(struct psd_header*)m...

by 易风云 - C/C++ - 2013-04-11 09:34:20 阅读(2356) 回复(4)

要重新计算tcp校验时,把googlecu翻了遍!!! 结果就是,一半一半吧! 现总结如下: ms有两种方法,一种是从头开始,整个重新计算校验;还有一种呢就是,修改不超过连续16个字节,就在原来的基础上修改。为什么说一半一半呢,是第一种方法,我怎么都没有成功,但我的需求后一种方法也可以满足,就没有再深究了。(浅尝辄止,明明知道,就是改不了啊!!!sharememory的问题也是一样,这个下一篇在写) 先说我会的吧: ...

by tomorrow0530 - Linux文档专区 - 2007-09-21 11:06:16 阅读(1549) 回复(0)

利用netfilter,自己写一个可以修改tcp包头的钩子函数。 上网找了些资料,说是在内核中有精妙的实现方式。 只需要调用tcp_v4_check函数即可,当然,也可以调用更低层的函数,例如csum_tcpudp_magic()函数。计算tcp头部的checksum,csum_tcpudp_magic()的参数为源地址(网络字序),目的地址(网络字序)、skb->len、skbuff的校验。skubuff的校验是skb->csum,当然也需要自己计算,这其实是个中间值,用来计算出最终的tcp头部c...

by tomorrow0530 - Linux系统管理 - 2007-09-21 10:41:16 阅读(5553) 回复(5)