Linux网卡基本结构和传输流程总结_linux网卡类型-程序员宅基地

技术标签: tcp  驱动  linux内核  驱动开发  

简介

网卡的功能主要有两个:
一、是将电脑的数据封装为帧,并通过网线(对无线网络来说就是电磁波)将数据发送到网络上去;
二、是接收网络上其它设备传过来的帧,并将帧重新组合成数据,发送到所在的应用层中。
本文介绍网卡的结构和基本的网卡传输流程。

网卡的结构

网络设备主要分为 PHY、MAC 和 DMA 三个硬件模块。以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为PHY,同时通过DMA进行数据的传输。
物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。
在这里插入图片描述
具体的硬件结构如下:
在这里插入图片描述
上图中各部件为:
①RJ-45接口 ②Transformer(隔离变压器) ③PHY芯片 ④MAC芯片 ⑤EEPROM
⑥BOOTROM插槽 ⑦WOL接头 ⑧晶振 ⑨电压转换芯片 ⑩LED指示灯

RJ-45的接头实现了网卡和网线的连接。它里面有8个铜片可以和网线中的4对双绞(8根)线对应连接。其中100M的网络中1、2是传送数据的,3、6是接收数据的。1、2之间是一对差分信号,也就是说它们的波形一样,但是相位相差180度,同一时刻的电压幅度互为正负。这样的信号可以传递的更远,抗干扰能力强。同样的,3、6也一样是差分信号

以太网MAC芯片的一端接计算机PCI总线,另外一端就接到PHY芯片上。以太网的物理层又包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。而PHY芯片是实现物理层的重要功能器件之一,实现了前面物理层的所有的子层的功能。

网络传输的流程

MAC从PCI总线收到IP数据包(或者其他网络层协议的数据包)后,将之拆分并重新打包成最大1518Byte,最小64Byte的帧.这个帧里面包括了目标MAC地址、自己的源MAC地址和数据包里面的协议类型(比如IP数据包的类型用80表示).最后还有一个DWORD(4Byte)的CRC码。
PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则(10Based-T的NRZ编码或100based-T的曼彻斯特编码)把数据编码,再变为模拟信号把数据送出去。
PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。
可是目标的MAC地址是哪里来的呢?这牵扯到一个ARP协议(介乎于网络层和数据链路层的一个协议)
IP地址和MAC地址之间的关联关系保存在主机系统里面,叫做ARP表,由驱动程序和操作系统完成。在linux系统里面可以用 arp -i xxx网卡名称,如:arp -i enp0s3 的命令查看ARP表。收到数据帧的时候也是一样,做完CRC以后,如果没有CRC效验错误,就把帧头去掉,把数据包拿出来通过标准的借口传递给驱动和上层的协议客栈,最终正确的达到我们的应用程序。
还有一些控制帧,例如流控帧也需要MAC直接识别并执行相应的行为。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Luckiers/article/details/123772146

智能推荐

如何获取手机屏幕_如何实时获取手机屏幕内容-程序员宅基地

文章浏览阅读1.7k次。主要用用获取手机屏幕尺寸_如何实时获取手机屏幕内容

Servlet Response直接返回JSON数据_servlet response返回数据-程序员宅基地

文章浏览阅读1.7w次,点赞9次,收藏21次。获取打印输出流打印输出流:response.getWriter() 返回的是 PrintWriter可以通过 response.getWriter().write()和response.getWriter().print()响应数据给客户端,如果前端没有接收数据的位置,就会在浏览器上生成一个新的页面来显示内容。区别:write():仅支持输出字符类型数据,字符、字符数组、字符串等print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过writ_servlet response返回数据

JAVA毕业设计Web企业差旅在线管理系统计算机源码+lw文档+系统+调试部署+数据库_基于javaweb的差旅报销系统毕业设计-程序员宅基地

文章浏览阅读98次。JAVA毕业设计Web企业差旅在线管理系统计算机源码+lw文档+系统+调试部署+数据库。springcloud基于微服务架构的小区生活服务平台的设计与实现。jsp会议管理系统的设计与实现sqlserver。ssm+sqlserver精准扶贫项目管理系统。ssm+sqlserver音乐资源分享网站。ssm基于Web的精品课程网站的设计与实现。ssm基于JavaEE的网上图书分享系统。_基于javaweb的差旅报销系统毕业设计

ERROR: The executable **/python.exe is not functioning解决方案_error: the executable g:\workspace\pythonproject\v-程序员宅基地

文章浏览阅读2.4k次。我是从3.8.3更新到3.11.4,pycharm版本是2020.1.2,所以网上说的更改文件权限、检查路径是否有中文我统统都试过了,所以我狠心直接重装新版本的2022.3.3,一顿操作过后发现能成功创建project了也不报错。将python版本更新后,使用pycharm突然无法创建虚拟环境virtualenv失败,提示路径从C:\Users\Lenovo\AppData\Local\下的什么什么到创建的路径的下的什么什么 我这里已经解决了忘记截图保存。_error: the executable g:\workspace\pythonproject\venv\scripts\python.exe is

【计算机毕业设计】189电商平台-程序员宅基地

文章浏览阅读80次。如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统商品交易信息管理难度大,容错率低,管理人员处理数据费工费时,所以专门为解决这个难题开发了一个电商平台,可以解决许多问题。电商平台可以实现商家管理,商品订单管理,用户管理,商品管理,商品评价管理等功能。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。电商平台可以提高商品交易信息管理问题的解决效率,优化商品交

js处理xml文件,成execl格式_js浏览器环境excel转xml-程序员宅基地

文章浏览阅读344次。nginx配置映射,js读取xml文件,整理成规整excel格式的字符传_js浏览器环境excel转xml

随便推点

java/php/net/python 企业固定资产信息管理系统【2024年毕设】-程序员宅基地

文章浏览阅读47次。springboot基于Springbootvue的教学辅助系统设计与实现。springboot基于springboot的智能ERP管理系统。springboot基于Springboot的高校教室管理系统。springboot基于springboot的产后护理系统。springboot基于java电商后台管理系统。springboot特困生在线申报和信息服务系统。ssm基于微信小程序的汉服租赁平台的设计与实现。ssm基于vue的高校宿舍报修系统的设计与实现。springboot少数民族饰品销售系统。

ArcGIS Engine IGeometry和WKB的转换_arcgis shape字段wkb-程序员宅基地

文章浏览阅读3.2k次。wkt 、wkb、几何对象的转换_arcgis shape字段wkb

Ubuntu14.04 64位运行32位程序 ./qt-creator-linux-x86-opensource-2.6.1.bin 问题解决_error while loading shared libraries: libgobject-2-程序员宅基地

文章浏览阅读972次。./qt-creator-linux-x86-opensource-2.6.1.bin./qt-creator-linux-x86-opensource-2.6.1.bin:: error while loading shared libraries: libgobject-2.0.so.0: cannot open shared object file: No such file or ..._error while loading shared libraries: libgobject-2.0.so.0: cannot open share

基于GitLab+Docker+K8S的持续集成和交付_getlab ci kubectl kubeconfig-程序员宅基地

文章浏览阅读5.5k次。基于GitLab+Docker+K8S的持续集成和交付_getlab ci kubectl kubeconfig

EMQX5.0使用Mysql认证,和Navicat Mysql数据库连接_emqx连接mysql-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏33次。在阿里云的服务器内安装好EMQX后,接下来使EMQX和Mysql数据库连接。_emqx连接mysql

浏览器中支持硬件加速_video acceleration information-程序员宅基地

文章浏览阅读3.9k次。1 什么是硬件加速硬件加速是指,应用程序使用计算机硬件的能力,比软件实现的功能能够更有效地执行某些操作。在 Chrome/Chromium 浏览器中,硬件加速能够利用计算机的图形处理单元(GPU)来处理图形密集型任务,例如:播放视频、浏览地图、网页渲染、游戏或需要更快数学运算的任何内容。通过分离特定任务,您的 CPU 就有机会专注于处理其它事务,而 GPU 则专门负责处理图形密集型任务的进程。2 硬件加速包括哪些内容硬件加速通常包括3D图形加速和视频硬件解码加速两部分。3 支持硬件加速需要满_video acceleration information

推荐文章

热门文章

相关标签