0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是网络底层

汽车电子技术 来源:物联网IoT开发 作者:杰杰 2023-02-14 10:08 次阅读

前言

从前一篇文章,我们也知道大概的网络相关知识,网络这个系列文章就从底层往顶层讲解,本篇文章就来接触一下网络底层的相关知识

概述网络中的数据递交

当用户发送数据时,将数据向下交给传输层,这是处于应用层的操作,应用层可以通过调用传输层的接口来编写特定的应用程序,并且TCP/IP协议栈一般也会包含一些简单的应用协议如 Telnet 远程登录、FTP文件传输、SMTP 邮件传输协议等,这些协议有自己的首部——APP首部传输层会在接收到上层协议的数据前面加上传输层首部(此处以TCP协议为例,图的传输层首部为TCP首部。当然传输层协议还有UDP协议),传输层会向下交给网络层。同样地,网络层会在数据前面加上网络层首部(如IP首部),然后网络层再将数据向下交给链路层数据链路层会对数据进行最后一次封装,即在数据前面加上数据链路层首部(此处使用以太网接口为例),然后将数据交给网卡。最后,网卡将数据转换成物理链路上的电平信号,数据就这样被发送到了网络中。数据的发送过程,可以概括为TCP/IP的各层协议对数据进行封装的过程;

当设备的网卡接收到某个数据包后,它会将其放置在网卡的接收缓存中,并告知TCP/IP协议栈内核。然后TCP/IP协议栈内核就开始工作了,它会将数据包从接收缓存中取出,并逐层解析数据包中的协议首部信息,并最终将数据交给某个应用程序。数据的接收过程与发送过程正好相反,可以概括为TCP/IP的各层协议对数据进行解析的过程。

图片

各层协议封装

链路层

以太网

关于以太网的理论我就不介绍了,因为这些理论太多了,有兴趣可以自己去网上查看。

链路与数据链路

我们在这里要明确一下, “链路”和“数据链路”并不是一回事。

所谓链路就是从一个结点到相邻结点的一段物理线路(有线或无线)这是实实在在看得见的,比如我们的网线,而中间没有任何其他的交换结点。 在进行数据通信时, 两台计算机之间的通信路径往往要经过许多段这样的链路。

数据链路则是另一个概念。 这是因为当需要在一条线路上传送数据时, 除了必须有一条物理线路外,还必须有一些必要的协议来控制这些数据的传输,这就是我们TCP/IP协议栈要做的事情。 把这些TCP/IP协议栈加到链路上,就构成了数据链路。

一般我们所说的链路层指的都是数据链路。下文均采用链路层表示。

LwIP中的“链路层”

我们知道,网络接口(如以太网接口)是硬件接口,(提示:网络接口又可以称之为网卡,为了统一,下文均采用网卡表示网络接口),LwIP是软件,那么怎么让硬件与软件无缝连接起来呢?而且,网卡又有多种多样,怎么能让LwIP使用同样的软件程序能兼容不同的硬件呢?

因此LwIP使用一个数据结构——netif来描述一个网卡,由于网卡是直接与硬件打交道的,硬件不同则处理基本是不同的,比如网卡的有各种各样的芯片,所以必须由我们自己提供最底层接口函数,LwIP提供统一的接口,比如网卡的初始化,网卡的收发数据,当LwIP底层得到了网络的数据之后,才会经过层层传入内核中去处理;同理,当应用层需要发送一个数据包的时候,也是讲数据包层层往下递交,然后也需要调用网卡的发送函数,将数据发送到网络中,这样子才能把数据从硬件接口到软件内核无缝连接起来。因此LwIP移植的关键是底层的移植,而很多人就卡在这里,如果底层的处理不好,那么就会导致各种各样的问题,比如网卡无缝接收太多数据,导致网速过慢,出现挂掉的现象,时常丢包,或者运行一段时间就导致内存泄漏等等等等乱七八糟的问题。

简单来说,netifLwIP抽象出来的网卡描述符,它拥有描述设备中的不同网卡,一个设备至少与一个网卡,才能与网络进行通讯,LwIP协议栈可以使用多个不同的接口,而源码中的ethernetif.c文件则提供了netif访问各种不同的网卡,每个网卡有不同的实现方式,我们呢一般只需要修改ethernetif.c文件就行了,但是本篇文章不讲移植。(此处用LwIP协议栈讲解,本系列教程均基于LwIP

举个例子:我们可以理解将整个网络的数据传输理解为物流,那么网卡就是不同的运输工具,我们可以选择汽车、飞机、轮船等运输工具,不同的运输工具速度是不一样的,但是对于一个物流公司而言,可能同时存在很多种运输的工具,这就需要物流公司去记录这些运输工具,当有一个包裹需要通过飞机运输出去,那么物流公司就会将这个包裹通过飞机发送出去,这就好比我们的网卡,需要哪个网卡发送或者接收网络数据的时候,就会让对应的网卡去工作。(可能不太贴切)

MAC地址简介

MAC地址(英语:Media Access Control Address),直译为媒体访问控制地址,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的地址。在OSI模型中,第三层网络层负责IP地址,第二层数据链接层则负责MAC地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。(引用来自维基百科)

可能我们做计算机相关专业的人,多多少少都会知道IP地址MAC地址(也称之为链路层地址)。在前一篇文章说了,想要不同主机之间进行通讯,那么就必须有IP地址,那现在为什么我们在链路层都需要地址呢?事实上,并不是主机或路由器具有链路层地址,而是它们的网卡具有链路层地址。因此,一个主机拥有多少个网卡,那么它就有多少个MAC地址。MAC地址实际上就是网卡地址或网卡标识符。当某台计算机使用某块网卡后,网卡上的标识符就成为该计算机的MAC地址。MAC地址长度为6字节(48bit),其前3个字节表示组织唯一标志符(Organizationally Unique Identifier,即OUI),由IEEE的注册管理机构给不同厂家分配的代码,以区分不同的厂家,后3个字节由厂家自行分配,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的。

IP地址与MAC地址的关系

TCP/IP协议有自己的IP地址,IP地址(IPv4)是一个32位的IP地址,网络层发送数据包只需要知道目标主机IP地址即可,而以网卡发送数据则必须知道对方的硬件MAC地址,同时IP地址的分配与硬件MAC地址是没有关系的,为了让网络层只需要知道IP地址就可以完成通信工作,那就需要有一个协议将IP地址映射成为对应的MAC地址,此外还需要考虑IP地址可能是动态的,非常灵活,使用静态的映射方法是行不通的,所以ARP协议就提供优质的地址动态解析服务,让32位的IP地址能映射成为48位的MAC地址,让上层应用与底层完全分离开,这样子在上层应用就能灵活使用IP地址作为标识,进行通信。

简单来说,就是计算机中会维护一个ARP缓存表,这个表记录着IP地址与MAC地址的映射关系,我们可以通过在电脑的控制台通过arp -a指令查看一下我们自己计算机的ARP缓存表:

图片

ARP缓存表

我给大家举个例子,IP地址就相当于你家的地址,MAC就是你的身份证,你的身份证是全国唯一的,这没疑问吧,但你的地址是可以跟别人重叠的(你家人也是住在你家)。当你寄快递的时候,快递员要确认这个快递是从你家寄出去的,是你本人亲自寄出去的,同样的,当你收快递的时候,快递员也是先电话找到你,然后必须是你本人才能拿到快递,再拿回家。(可能也不贴切,将就理解一下)## 数据帧

链路层的主体部分是网卡中实现的,在发送的数据帧的时候,协议栈取得由高层传递过来的数据报(注意,数据帧与数据报不是一个东西,数据报是形容网络层及其以上的报文,而数据帧一般形容链路层的数据,是一帧一帧的,也是链路层的服务——数据成帧),在链路层中封装该数据报,也就是填写数据帧的各个字段,然后遵循链路接入协议将该帧数据进行传输;在接收端,控制器接收了整个数据帧,抽取出网络层的数据报,往上层传递。

下面来看看以太网帧:

图片

以太网帧

事实上,前同步码与帧开始符字段不能算是真正的以太网帧数据结构,他们是在网卡发送的时候自动添加进去的,为了数据的准确传输。

以太网帧以一个7字节的前同步码开始。该前同步码的值都是规定为10101010;而后紧接着一个字节的帧开始符,其值是10101011。前同步码字段的作用是实现物理层帧输入输出的同步,而帧开始符表示着以太网数据帧的开始,剩下的5个字段才是真正的以太网数据帧结构。

目标MAC地址(6字节) :这个字段包含目标网卡的MAC地址,当一个网卡收到一个以太网数据帧,如果该数据帧的目标地址是网卡自身的MAC地址或者是MAC广播地址,它都将该帧的数据字段的内容传递给网络层;如果它收到了具有任何其他MAC地址的帧,则将该数据帧丢弃。

源MAC地址(6字节) :自身的MAC地址。

类型字段(2字节) :类型字段允许以太网复用多种网络层协议。我们只需要记住主机能够使用除了IP协议以外的其他网络层协议。事实上,一台给定的主机可以支持多种网络层协议,以对不同的应用采用不同的协议。因此,当以太网帧到达网卡中,网卡需要知道它应该将数据字段的内容传递给哪个网络层协议。比如如有IP协议、ARP协议等。

注意了:当这个字段的值小于1518时,它表示后面数据字段的数据长度,当大于1518的时候才表示递交给哪个协议。

数据字段(46~1500字节) :这个字段承载了IP数据报。以太网的最大传输单元(MTU)是1500字节。这意味着如果IP数据报超过了1500字节,则主机必须将该数据报分片(IPv4支持数据报分片,而IPv6不支持)。数据字段的最小长度是46字节,这意味着如果IP数据报小于46字节,数据报必须被填充到46字节。当采用填充时,传递到网络层的数据包括IP数据报和填充部分,网络层使用IP数据报首部中的长度字段来去除填充部分。

CRC(4字节) :CRC字段包含了以太网的差错校验信息。

补充 :所有的以太网都向网络层提供不可靠的无连接服务,在接收到不对的以太网帧时,或者CRC校验不通过时,主机将直接丢弃以太网帧,并不会告知发送的一方。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传输协议
    +关注

    关注

    0

    文章

    78

    浏览量

    11427
  • 应用层
    +关注

    关注

    0

    文章

    46

    浏览量

    11490
  • 传输层
    +关注

    关注

    0

    文章

    29

    浏览量

    10876
收藏 人收藏

    评论

    相关推荐

    无线传感器网络底层平台的深层研究

    目前,对WSN(Wireless Sensor Network)的研究主要集中在协议栈、定位算法、能耗管理以及体系结构设计上,而针对无线传感网络操作系统的研究却相对较少,尤其是对其底层平台的研究更少,所以针对无线传感网络操作系统
    发表于 09-09 15:23 2244次阅读
    无线传感器<b class='flag-5'>网络</b><b class='flag-5'>底层</b>平台的深层研究

    移植ubuntu core 16.04(ubuntu-base)到i.MX6ULL开发板

    ubuntu 本身支持 linux 的网络底层设置命令:ifconfig,route,ip 等命令,但为了让网络设置更加简单,Debian 提供了一个标准的高级网络设置工具,包含 if
    的头像 发表于 02-16 09:40 1682次阅读

    AD16版本为什么底层不可以铺铜

    AD16版本的,为什么铺铜的时候,顶层可以铺铜,GND网络底层却不可以?有时候遇到的是两个层铺铜都只有边款,而没有铜箔
    发表于 02-26 10:44

    无线传感器网络底层平台由什么组成?

    无线传感器网络应用一般需要无线操作系统的支撑,才能有效地管理和调度资源,提高系统的效率。无线传感器网络底层平台是连接上层软件和底层硬件的桥梁,是无线操作系统研究的重要技术之一。合理的
    发表于 04-16 06:41

    基于近距离无线技术的家电集中控制方法

    家用电器的网络化是家庭网络化的基础,也是智能家电技术发展的必然趋势。文章以无线射频收发芯片作为家电控制网络底层实体传输媒介,构建了集中式家电近距离无线控制
    发表于 12-16 14:46 127次下载
    基于近距离无线技术的家电集中控制方法

    基于GPRS无线散状控制网络底层设计(下位机篇)

    发表于 07-30 13:48 2次下载

    能有效提高实时性和可靠性的嵌入式实时操作系统微机保护装置设计

    VxWorks网络协议是一个基于开放系统的互连(OSI)模型,而且系统为了向高层协议层提供一个统一的、规范的、方便协议移植的网络接口,在高层IP层之下添加了一个MUX层,由MUX层负责与网络
    发表于 07-27 08:56 706次阅读
    能有效提高实时性和可靠性的嵌入式实时操作系统微机保护装置设计

    华为路由WS5200评测 值不值得买

    相比手机、电脑、电视机,在家居设备中,可能路由器的「出镜率」并不高,但作为网络底层支撑者,它的重要性不言而喻。
    的头像 发表于 11-14 10:43 6.7w次阅读

    区块链技术和加密货币的意义是什么

    当用户决定长期持有网络底层代币时,而不是当某人将代币用于任何类型的短期价值转移时,加密货币网络中的价值就会增加。
    发表于 10-09 09:39 1433次阅读

    Chainlink的去中心化预言机网络底层设计方案

    DeFi生态圈现在可以访问最丰富的链上价格数据,在以太坊上开发具有开放性的金融产品!目前以太坊主网已经上线了超过25个去中心化的预言机网络,用户包括Synthetix等主流DeFi应用。
    发表于 02-03 12:31 1437次阅读
    Chainlink的去中心化预言机<b class='flag-5'>网络</b><b class='flag-5'>底层</b>设计方案

    分布式存储加持区块链 数据将追溯、监控、存储、共享

    把区块链作为底层技术,搭建此类平台,专门存储生态大数据,可以设置节点管理、存储管理、用户管理、许可管理、业务通道管理等。针对上层业务应用提供高可用和动态扩展的区块链网络底层服务的实现
    发表于 08-02 11:09 1477次阅读

    XuperUnion百度超级联盟网络底层方案

    gitee-XuperUnion.zip
    发表于 04-22 10:48 0次下载
    XuperUnion百度超级联盟<b class='flag-5'>网络</b><b class='flag-5'>底层</b>方案

    CAN网络底层的重要知识点介绍

    CAN总线早期主要应用于汽车、工业控制领域,随着CAN总线技术的不断成熟,已不再局限于汽车行业,现在已经普遍应用于航天、医疗、机器人等各行各业。
    的头像 发表于 11-25 14:24 1254次阅读

    【原创】网络安全篇--网络底层嗅探扫描基础

    /article/6914486963169018371/?log_from=17c5b0061d7db_1675651773094   注3:本文描述的“网络”主要指基于IPV4的以太网,网络底层特指:链路层
    的头像 发表于 02-16 18:32 1867次阅读
    【原创】<b class='flag-5'>网络</b>安全篇--<b class='flag-5'>网络</b><b class='flag-5'>底层</b>嗅探扫描基础

    四种数据中心网络虚拟化技术对比

    网络虚拟化技术允许在共享的物理网络基础设施上创建多个虚拟网络。它将逻辑网络底层物理网络解耦,为
    的头像 发表于 08-23 14:30 1660次阅读
    四种数据中心<b class='flag-5'>网络</b>虚拟化技术对比