Fork Me on GitHub

源码开放学ARM

LASO - Learn ARM with Source Open

首页         目录索引         资料下载         代码下载         联系作者        
下载PDF打印版本

网络数据封装过程

TCP/IP协议栈结构

1. 应用层
2. 运输层
3. 网络层
4. 链路层

网络协议栈层次图

传输过程

1. FTP客户端-服务器
2. TCP协议
3. IP协议
4. 以太网协议

协议分层

1. User APP
2. TCP/UDP
3. ICMP/IP/IGMP
4. ARP/RARP

协议封装过程

1. 用户数据 -> 应用数据
2. TCP头 + 应用数据
3. IP头 + TCP头 + 应用数据
4. 以太网帧头 + IP头 + TCP头 + 应用数据 + 以太网帧尾

驱动和协议层的关系

网络协议接口层

1、网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据。这一层的存在使得上层协议独立于具体的设备。

2、网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。

3、设备驱动功能层各函数是网络设备接口层net_device数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序,他通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接受操作。

4、网络设备与媒介层是完成数据包发送和接受的物理实体,包括网络适配器和具体的传输媒介,网络适配器被驱动功能层中的函数物理上驱动。对于Linux系统而言,网络设备和媒介都可以是虚拟的。

上一节 | 目录索引 | 下一节

blog comments powered by Disqus