本帖最后由 zhuyoong 于 2011-06-24 17:36 编辑 一、socket绑定入口 1、示例代码[code] struct sockaddr_in server_address; server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = inet_addr("0.0.0.0"); server_address.sin_port = htons(9734); server_len = sizeof(server_address); bind(server_sockfd, (struct sockaddr *)&server_address, server_len); [/code]2、绑定入口 前面介绍了socket从库函数...
详见iteye: 1、创建socket:http://diecui1202.iteye.com/blog/1096274 2、创建socket(续):http://diecui1202.iteye.com/blog/1096562
最近想研究TCP segmentation offload (TSO) 和Large receive offload,哪位高手能给解释解释,指点一下相关的linux内核源程序在那个目录和文件中? 多谢了!!!
本帖最后由 zhuyoong 于 2011-06-24 17:35 编辑 一、socket()库函数到系统调用,再到内核 1、linux运行的C库是glibc; 2、socket()调用如下: 1) socket()->__socket():glibc-2.3.6/sysdept/generic/socket.c (weak_alias(name1, name2)) 2) __socket():glibc-2.3.6/sysdept/unix/sysv/linux/i386/socket.S 3) ENTER_KERNEL:[code] movl $SYS_ify(socketcall), %eax /* System call number in %eax. */ /* Use ## so...
本帖最后由 zhuyoong 于 2011-06-24 17:36 编辑 一、注册时机 1、在内核初始化时完成; 2、内核初始化过程(init/main.c):kernel_init()->do_basic_setup()->do_initcalls()->do_one_initcall(); 3、socket文件系统注册过程(net/socket.c):core_initcall(sock_init); 1) core_initcall宏定义如下:[code] #define core_initcall(fn) __define_initcall("1",fn,1) #define __define_initcall(level,fn,id) \ static...
在linux内核网络协议栈里面 我们知道默认的ipv4封包的处理时通过ip_rcv()这个函数来处理的 假设我们自己重新定义一个ipv4的处理函数,那么,在网络中收到了一个ip4的封包,内核是用ip_rcv()这个函数去处理封包呢? 还是通过我们自定义的处理函数去处理收到的封包??
最近学习linux内核网络协议栈,把数据包接收流程大致理了一下, 前面也看了瀚海书香兄的总结,感觉总结的比我精炼,抓住了主干,是一目了然的那种 我的这篇本来是自己看得,因此把我自己学习中一些遇到的问题写了出来,可能其他人会觉得废话比较多,呵呵 另外,因为我看的书Understanding linux Network Internal只讲了ip层及以下, 因此L4层的流程是我自己在代码中找的,不保证100%正确, 如果有错误,还希望大虾及时指出,防止误...