数据从网卡到应用的过程

欢迎访问陈同学博客原文

最近看的《网络是怎样连接的》非常有趣,真的是 “计算机网络概论” 图解趣味版

本文写写数据从网卡到应用的过程,内容与图片很多整理自《网络是怎样连接的》、《Tomcat内核设计与剖析》,有的图片因清晰度不够我进行了重绘。

总览

本文围绕这张图从下至上展开。假设一个HTTP请求的数据到达网卡,那数据是如何被层层处理并到达应用呢?

网卡

网卡(Network Adapter),也称网络适配器,是一个 硬件设备,有全球唯一的 MAC(Media Access Control)地址,MAC地址在网卡生产时就被烧制在ROM中,网卡初始化时恢复到计算机中。

网卡收到的数据是 光信号或电信号,然后将其还原成 数字信息(1和0组成)

下图是还原的数字信息结构。

根据 FCS(帧校验序列,Frame Check Sequence) 校验数据,判断数据在传输过程是否因噪音等影响导致信号失真,从而导致数据错误,需要丢弃这种无效的数据包

然后 检查 数据包中MAC头部中的 接收方的MAC地址,若不是发给自己,则丢弃数据包;若数据包是发给自己,则将数字信息保存到网卡内部缓冲区。

以上过程网卡自行搞定,不需要CPU参与,CPU也不知道数据包的到达。

网卡驱动

硬件需要驱动程序来控制,就像电脑需要操作系统一样,而网卡驱动就是CPU控制和使用网卡的程序。

网卡处理完数字信号后,接下来的数据接收需要CPU参与,此时网卡通过中断将数据包达到的事件通知给CPU。接着,CPU暂停手头工作,开始用网卡驱动来干活。

  • 从网卡缓冲区读取接收到的数据
  • 根据MAC头部的以太类型字段判断协议种类并调用处理该协议的软件(即协议栈)

通常我们接触的以太类型是 IP协议,因此会调用TCP/IP协议栈来处理。

协议栈

因各层协议看上去像堆叠状态,也就取名"协议栈"。 像TCP、UDP、IP等协议都是规范,而协议栈则是实现各类协议的网络控制软件。例如:Windows、Linux各自对协议进行了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值