1.网卡
网卡(Network Interface Card,简称NIC),也称网络适配器,是连接计算机与计算机网络的硬件设备。
网卡插在计算机主板插槽中,负责将用户要传递的数据转换为网络上其他设备能够识别的格式,通过网络介质传输。
将光电信号转化成数据
2.协议栈
协议栈(Protocol Stack),又称协议堆叠,是网络中各层协议的总和,它形象地反映了一个网络中文件传输的过程。协议栈中的协议通常是针对特定目的而设计的,使得设计更加简洁和高效。
我们可以将协议栈看作是一个由多个层次组成的系统,每一层都执行特定的功能,以确保数据在网络中正确地传输。
协议栈能过识别的解析的是一个结构体sk_buff
3.网卡driver
网卡接收到的数据通常配合网卡的驱动程序,网卡驱动程序是计算机硬件和操作系统之间的接口,它允许操作系统与网卡硬件进行通信和控制。
4.netmap
Netmap是一个开源项目,由Luigi Rizzo等人开发完成。它允许应用程序在用户态直接与网卡通信,绕过了操作系统内核的处理,从而显著提高了网络性能。
4.dpdk
它通过绕过操作系统内核的网络协议栈,直接在用户空间进行数据包的收发和处理,以提高网络应用程序的性能
- DPDK通过绕过内核协议栈,直接访问网卡和网络设备,减少了数据包处理的延迟和开销。
- 它使用了轮询(polling)而不是中断来处理数据包,节省了大量的CPU中断时间和内存拷贝时间。
5.文件描述符(File Descriptor)
是一个在Unix及类Unix系统(如Linux、MacOS以及BSD等)中用于唯一标识被打开文件的整数。
- 唯一标识操作系统中某个被打开的“文件”。
- 允许系统调用通过文件描述符来访问对应的文件。
- 标准输入:文件描述符为0,通常对应键盘输入。
- 标准输出:文件描述符为1,通常对应显示器输出。
- 标准错误:文件描述符为2,也通常对应显示器输出,但用于输出错误信息。
- 分配规则:从当前最小的未被分配的文件描述符开始分配。