最近工作需要修改一套tcp协议栈,简单的看了一下内核tcp协议栈的函数调用过程,只是一个大致的流程,并没有做详细的调查,准备修改的时候在仔细的看.还有就是仅仅看了tcp部分,下面的ip以下的都没有查看. 在这里简单的说一下关于tcp连接开始的三次握手的函数调用关系: 客户端:(发起连接请求) tcp_v4_connect -> tcp_connect_init -> tcp_transmit_skb -> icsk->icsk_af_ops->send_check ...
From: http://topic.csdn.net/u/20110818/11/2ba543bf-a34a-417f-87d7-3567122664a7.html?seed=2089953752&r=75291466#r_75291466
tcp的server
socket流程是socket()创建套接字,bind()绑定,listen()监听,accept()接收然后才是send(),recv()...
这篇文章我们简要分析linux内核的IP协议栈的总体结构,按照由简至繁的原则,逐步剖析相关代码。我们的分析以linux-2.4.35版本为准。 如下图所示,我们先将IP协议栈代码与内核其它代码作一个粗略的切割。 从上图我们可以确定四个代码函数作为网络数据收发的切入点。首先,网卡驱动程序接收到硬件上传数据,将该数据通过网卡适配层的接入函数netif_rx接收进入协议栈。IP协议栈处理网络数据将有两种处理可能,1)如果该数据包的目的...
最近做一个项目,需要在网络层和数据链路层之间增加一层,即2.5层:对TCP/IP驱动,它是NDIS驱动,对真实的以太网驱动,它又是一个协议驱动。总的来说,它实现的功能与IP协议类似,提供路由算法并找路。只是现在大多数应用都基于TCP/IP协议,所以不想更改IP协议就另加了一层。我的问题是,我们采用源路由策略,那么,我的路由算法应该在内核的那个位置加载呢
最近做一个项目,需要在网络层和数据链路层之间增加一层,即2.5层:对TCP/IP驱动,它是NDIS驱动,对真实的以太网驱动,它又是一个协议驱动。总的来说,它实现的功能与IP协议类似,提供路由算法并找路。只是现在大多数应用都基于TCP/IP协议,所以不想更改IP协议就另加了一层。我的问题是,我们采用源路由策略,那么,我的路由算法应该在内核的那个位置加载呢
linux tcp ip 协议栈 优化 . 下面为优化linux 网络(network tuning )经常提及的参数[code]setup in /etc/sysctl.conf # Network tunning net.ipv4.tcp_fin_timeout = 35 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_keepalive_intvl = 35 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 A better explanation: /proc/sys/net/ipv4/tcp_fin_timeout Time to hold socket in state FIN-WAIT-2, i...
本帖最后由 simohayha_cu 于 2010-12-13 02:23 编辑 xps全称是Transmit Packet Steering,是rfs/rps的作者Tom Herbert提交的又一个patch,预计会在2.6.37进入内核。 patch的详细信息可以看这里: http://amailbox.org/mailarchive/linux-netdev/2010/8/23/6283586 这个patch主要是针对多队列的网卡发送时的优化,当发送一个数据包的时候,它会根据cpu来选择对应的队列,而这个cpu map可以通过sysctl来设置:[code]/sys/class...