解析数据接收的过程经历了什么
1.物理网卡
- 物理网卡接收(
vmware
的网络适配器就是一个网卡,是vmware
模拟的) - 物理网卡是光信号或者电信号与数字信号的相互转换
2.NIC
- 接收后每个网卡都会配对的有一个网络适配器(
NIC
)
- 问题,
NIC
什么数据结构存? - 使用
ifconfig
就是查看NIC
的数量以及相关信息 - 网卡每来一帧数据
NIC
都会将它组织成sk_buff
(其中有很多指针,指向数据包中的各个层的头部),发送给协议栈,协议栈就解析其各个头
3.内核协议栈
NIC
把数据抛给内核协议栈,协议栈解析其sk_buff
中指向的各个头,注意这个协议栈是所有网卡共用的
- 协议栈与
NIC
驱动的数据交互是怎样的
- 网卡每来一帧数据
NIC
都会将它组织成sk_buff
(其中有很多指针,指向数据包中的各个层的头部),发送给协议栈,协议栈就解析其各个头
4.标准接口层Posix API
- 标准接口层调用各种网络系统调用
5. 应用层
应用层就接收到了…
上述过程发生的拷贝
- 网卡数据拷贝到
NIC
,组织出sk_buff
APP
调用recv..
将数据从内核态拷贝到用户态