
linux网络协议栈
wh8_2011
这个作者很懒,什么都没留下…
展开
-
linux 网络协议栈
R.wen (rwen2012@126.com)由于太长, 这只是一部分内容,完整的文档在附件中。有兴趣的请看看并帮忙指正,谢谢。1),Skb_buff/* To allow 64K frame to be packed as single skb without frag_list */#define MAX_SKB_FRAGS (65536/PAGE_S转载 2015-10-19 09:54:13 · 583 阅读 · 0 评论 -
数据包接收系列 — 上半部实现(内核接口)
本文主要内容:网络数据包接收的上半部实现,主要分析内核接口相关部分。内核版本:2.6.37上半部的实现接收数据包的上半部处理流程为:el_interrupt() // 网卡驱动 |--> el_receive() // 网卡驱动 |--> netif_rx() // 内核接口转载 2015-10-20 09:17:26 · 758 阅读 · 0 评论 -
数据包接收系列 — 上半部实现(网卡驱动)
本文主要内容:网络数据包接收的上半部实现,主要分析网卡驱动相关部分。内核版本:2.6.37Author:zhangskd @ csdn blog 网卡概述 (1) 网卡收包网线上的物理帧首先被网卡芯片获取,网卡芯片会检查物理帧的CRC,保证完整性。然后网卡芯片将物理帧头去掉,得到MAC包。网卡芯片会检查MAC包内的目的MAC地址,转载 2015-10-20 09:40:07 · 732 阅读 · 0 评论 -
不错的网络协议栈测试工具 — Packetdrill
Packetdrill - A network stack testing tool developed by Google.项目:https://code.google.com/p/packetdrill/本文:zhangskd @ csdn blog 简介 The packetdrill scripting tool enables quick, p转载 2015-10-20 09:29:10 · 1333 阅读 · 0 评论 -
Netfilter的使用和实现
本文主要内容:Netfilter的原理和实现浅析,以及示例模块。内核版本:2.6.37Author:zhangskd @ csdn blog 概述 Netfilter为多种网络协议(IPv4、IPv6、ARP等)各提供了一套钩子函数。在IPv4中定义了5个钩子函数,这些钩子函数在数据包流经协议栈的5个关键点被调用。这就像有5个钓鱼台,在每转载 2015-10-20 09:27:27 · 717 阅读 · 0 评论 -
数据包接收系列 — 下半部实现(软中断)
本文主要内容:下半部的实现,分析数据包从上半部结束后到L3的处理过程。内核版本:2.6.37下半部的实现接收数据包的下半部处理流程为:net_rx_action // 软中断 |--> process_backlog() // 默认poll |--> __netif_receive_skb() // L2处理函数转载 2015-10-20 09:20:09 · 717 阅读 · 0 评论 -
Linux网络协议栈(一)——Socket入门(1)
1、TCP/IP参考模型为了实现各种网络的互连,国际标准化组织(ISO)制定了开放式系统互连(OSI)参考模型。尽管OSI的体系结构从理论上讲是比较完整的,但实际上,完全符合OSI各层协议的商用产品却很少进入市场。而使用TCP/IP 协议的产品却大量涌入市场,几乎所有的工作站都配有TCP/IP协议,使得TCP/IP 成为计算机网络的实际的国际标准。2、套接字(socket)转载 2015-10-03 18:10:38 · 541 阅读 · 0 评论 -
数据包接收系列 — IP协议处理流程(一)
本文主要内容:在接收数据包时,IP协议的处理流程。内核版本:2.6.37Author:zhangskd @ csdn blog IP报头 IP报头:[java] view plaincopystruct iphdr { #if defined(__LITTLE_ENDIAN_BITFIELD)转载 2015-10-20 09:23:55 · 1655 阅读 · 0 评论 -
硬中断和软中断
本文主要内容:硬中断 / 软中断的原理和实现内核版本:2.6.37Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳转载 2015-10-20 09:41:00 · 553 阅读 · 0 评论 -
数据包接收系列 — IP协议处理流程(二)
本文主要内容:在接收数据包时,IP协议的处理流程。内核版本:2.6.37Author:zhangskd @ csdn blog 我们接着来看数据包如何发往本地的四层协议。 ip_local_deliver 在ip_local_deliver()中,如果发现数据报有被分片,则进行组装。然后调用NF_INET_LOCAL_IN处的钩转载 2015-10-20 09:26:04 · 1479 阅读 · 0 评论 -
Linux网络协议栈(一)——Socket入门(2)
3、套接字的实现套接字最先是在UNIX的BSD版本实现的,所以也叫做BSD套接字,它隐藏了各个协议之间的差异,并向上提供统一的接口。Linux中实现套接字的基本结构:3.1、BSD套接字3.1.1、核心数据结构为了实现BSD套接字,内核提供一个重要的数据结构struct socket,它的定义如下: //BSD套接字(include/linux/net.h)st转载 2015-10-03 17:50:05 · 743 阅读 · 0 评论 -
数据包接收系列 — NAPI的原理和实现
本文主要内容:简单分析NAPI的原理和实现。内核版本:2.6.37概述NAPI是linux新的网卡数据处理API,据说是由于找不到更好的名字,所以就叫NAPI(New API),在2.5之后引入。简单来说,NAPI是综合中断方式与轮询方式的技术。中断的好处是响应及时,如果数据量较小,则不会占用太多的CPU事件;缺点是数据量大时,会产生过多中断,而每个中断转载 2015-10-20 09:22:43 · 793 阅读 · 0 评论 -
以snull为例分析linux网卡驱动的技术文档[转载]二
OPENING AND CLOSING打开和关闭 我们的驱动能够在模块再如或者核心引导的时候探测出接口。下一步是给接口指定一个地址,以便驱动能够通过他来交换数据。打开和关闭接口是由ifconfig命令完成的。 当ifconfig给端口指定一个地址的时候,它执行两个任务。首先它通过 ioctl(SIOCSIFADDR) (Socket I/O Control转载 2015-12-22 10:39:56 · 953 阅读 · 0 评论