LINUX内核协议栈 TCP/IP
文章平均质量分 54
hongchunhua
这个作者很懒,什么都没留下…
展开
-
LINUX协议栈详解 数据包接收
NAPI介绍NAPI混合了中断和轮询,在高负载情况下可以有效减少CPU的负载,从而提高性能,从这一点可以认识到一种优化的方式就是降低CPU负载,例如DMZ,就是另一个例子,将更多的工作交给其他硬件来执行,而不是CPU,从而达到减轻CPU压力。NAPI的原理:当内核正在处理接收数据原创 2011-07-12 18:14:45 · 1530 阅读 · 0 评论 -
PPTP CLIENT
最近了解了一下pptp client的代码,简单记录一下,以防后面有用。按照流程,pptp client启动时,会启动pppd去创建新的ppp连接,并生成新的接口,例如ppp1。 大体的数据流程是,当创建了ppp1,同时可以配置路由,原创 2011-08-29 15:54:28 · 2413 阅读 · 0 评论 -
TCP提供可靠性方式
1, 应用数据被分割成TCP认为最适合发送的数据块,UDP则对应用程序产生的数据报长度保持不变。TCP中最大报文段长度MSS,表示TCP传往另一端的最大块数据的长度。双方可以协商MSS,但是不能完全避免分片,因为中间某个路由器MTU更小。2, TCP发送一个段原创 2011-09-14 15:30:12 · 584 阅读 · 0 评论 -
关于IP分片
物理介质上规定了MTU,最大传输单元,以太网一般为1500,所以如果UDP TCP等要发送数据超过这个数,那么就会进行分片。一般规定IP分片在目的端才进行重组。LINUX在开启netfilter时,是做重组的,而不是在目的端重组,重组函数为ipv4_conntrack_def原创 2011-09-14 11:06:59 · 1203 阅读 · 0 评论 -
二层接口ATM接口和ETH接口
从做大型防火墙到家用路由器CPE设备,最先迷糊的是这些网络接口,一下内容只是我的记录,不代表正确性。什么是ATM接口VPI 虚拟路径标识VCI 虚拟通路标示VPI和VCI是用于标示各ATM终端的标识ATM接口是一种底层的接口,其通过VP原创 2011-09-07 17:19:53 · 5474 阅读 · 0 评论 -
第二部分 连接跟踪
并没有任何特定的先决条件。从2.6.23到2.6.25,API保持了极其的相识。在2.6.26(-rc1)中有一点点类型变化。Xtables-addons并没有提供包括连接跟踪在内的可移植的API,因为并没有模块的合入需要这个,但是编译系统还是非常方便的使用。6 nf_con翻译 2011-09-06 11:48:55 · 4748 阅读 · 1 评论 -
LINUX协议栈详解 网桥介绍
1, 中继器 网桥 路由器中继器就是一个简单的数据拷贝,不对数据包进行任何改动。网桥负责连接两个局域网,负责将数据转发,不对数据包进行改动。路由器,处理L3的数据,一般都是IP数据包。2, 网桥实现上是一个混杂模式,任何一个数据包都有可能被收上来处理,也正是这样才能对数据进行原创 2011-07-20 14:17:35 · 1131 阅读 · 1 评论 -
LINUX协议栈详解 ARP协议
ARP协议负责从IP地址到物理MAC地址的转换。ARP格式/* * This structure defines an ethernet arpheader. */ struct arphdr { __be16 ar_h原创 2011-07-28 18:29:01 · 1675 阅读 · 0 评论 -
LINUX协议栈详解 协议处理
协议处理,主要介绍了从驱动中获取数据后,如何进行分发给不同的协议处理,包括IP协议、ARP协议等处理。__netif_receive_skb协议处理的开始,主要的数据结构是ptype_all和ptype_base,其中ptype_all是一个链表结构,ptype_base则是一个原创 2011-07-13 23:07:06 · 3508 阅读 · 0 评论 -
LINUX协议栈详解 流控TC
在数据包发送一节提到了流控TC的实现,现在进一步研究。数据包发送是通过dev_queue_xmit实现的,if (q->enqueue) { rc = __dev_xmit_skb(skb, q, dev, txq);原创 2011-07-14 17:09:32 · 6766 阅读 · 1 评论 -
LINUX协议栈详解 数据包发送
数据包发送和接收有点类似,我们一般都用int dev_queue_xmit(struct sk_buff *skb)来发送数据包,例如我们自己构造完整的数据包,最后调用真正的物理发送函数。但是我们也知道发送也是有软中断处理的,open_softirq(NET_TX_SOFTIRQ原创 2011-07-12 19:16:59 · 1513 阅读 · 0 评论 -
为什么netfilter规则对RAW socket不起作用?
使用的开源dhcp client代码,其中希望将dscp设置为0xC0,但是发现discovery包可以设置成功,但是renew数据包不能,查看代码发现discovery数据包是跑raw socket的,但是renew则是通过udp socket发送,查看内核代码发现raw so原创 2011-10-10 16:17:00 · 1594 阅读 · 0 评论