APP下载
报价宝  ›  科技  › 

一篇文章告诉你:Linux 网络驱动 网络卡原理 它们之间怎么互动?

报价宝 来源:baojiabao.com 发布时间:2019-09-01 08:55:00 09月11日更新
报价宝综合消息一篇文章告诉你:Linux 网络驱动 网络卡原理 它们之间怎么互动?

驱动和网络卡的互动过程很少人会关注,但是如果你懂这方面的知识,会对使用者态的网络程式设计更加理解深刻和通透。

驱动和网络卡之间是异步通讯。驱动在请求传送资料之后CPU就去干别的事情去了。网络卡传送完包之后通过中断通知CPU,CPU再通过驱动程式了解到结果。和传送资料一样,接收资料也是异步的。网络卡把资料倒腾到主存之后再通过中断通知CPU。

因此,预留一些空间来快取传送和接受的buffer是必要的。大多数情况下,网络卡使用环结构,这个环基本上就是一个伫列,它具有固定的条目数,每一个条目储存一个传送或者接受的资料。条目被顺序的轮流使用,可以复用。如下图所示,可以看到资料传送过程。

传送资料流

驱动接收上层的资料并建立一个网络卡可以理解的资料包描述(send descriptor),包含了主存地址和大小。由于网络卡只认识实体地址,所以驱动还需将虚拟地址转换成实体地址,之后把send descriptor放到Tx ring之中。下一步通过通知网络卡有新的资料了,之后网络卡通过DMA(直接内存访问)获取元资料和资料传送出去。传送完之后通过DMA把结果写回,之后传送中断通知。

资料的接收和传送反推过程差不多,自己看图:

不多说了,自己看图也能理解了。

本片文章内容非常精简,但不代表知识量少,大家可能也发现了源理君的文章篇幅不是很长,但会把知识讲清楚、明白。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 手机价格 笔记本价格 红米手机价格 耳机价格