当前位置: 技术问答>linux和unix
linux是如何给usb网卡封包成sk_buff的
来源: 互联网 发布时间:2016-07-28
本文导语: 请问usb接口的网卡驱动程序中. 我在驱动层可以读到sk_buff结构中的数据. 也可以用USB分析仪读到USB通讯数据. 但我不知道linux如何是将接收到的USB数据如何层层封包成sk_buff的. 请问是否这个封包是否有这个usb网卡的驱...
请问usb接口的网卡驱动程序中. 我在驱动层可以读到sk_buff结构中的数据. 也可以用USB分析仪读到USB通讯数据.
但我不知道linux如何是将接收到的USB数据如何层层封包成sk_buff的. 请问是否这个封包是否有这个usb网卡的驱动程序参与进来. 因为不同的USB接口网卡可能USB通讯数据格式可能不一样.
我应该在linux程序中的哪个文件中查看如何将这个USB网卡的USB数据封成sk_buff结构数据包?
但我不知道linux如何是将接收到的USB数据如何层层封包成sk_buff的. 请问是否这个封包是否有这个usb网卡的驱动程序参与进来. 因为不同的USB接口网卡可能USB通讯数据格式可能不一样.
我应该在linux程序中的哪个文件中查看如何将这个USB网卡的USB数据封成sk_buff结构数据包?
|
1. 封包是发送数据过程中的动作,例如我们打开google网页,封包过程过如下。
HTTP header + data
TCP header + http header + data
IP header + tcp header + http header + data
这是TCP/IP协议栈的封包,
然后由网卡驱动程序封装成帧,以太网为例:
Frame header + IP header + tcp header + http header + data (may have tail)
最后由网卡发送出去。
2. 解包是接收数据过程中的动作,是封包的逆过程。
3. 封包过程,最初发生在应用程序调用send()或者sendto() API后,即进入到TCP/IP协议栈里。见/net/core/socket.c.
|
找usb网卡驱动,看注册网络设备时,填写的操作函数