当前位置: 首页 > news >正文

数据链路层

1.以太网

以太网是一种技术标准,而不是一种具体的网络,即包含了数据链路层的内容,也包含了一些物理层的内容。

以太网是当前的最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等。

以太网帧格式

源地址和目的地址是指网卡的硬件地址,也就是MAC地址,长度是48位,在网卡出厂时固化的。

帧协议类型字段有三种值,分别是IP,ARP,RAPR,帧末尾是CRC检验码。

MAC地址

MAC地址是用来标识数据链路层中间相连的节点。长度为48位,及六个字节,一般用16进制数字加上冒号的形式表示,MAC地址在网卡出厂时就确定了,不能被修改,mac地址是唯一的。

MAC地址在链路层的作用

标识网络节点:在数据链路层,网络中的每一节点都需要一个唯一标识来区分,MAC地址就可以实现区分,就像在生活中一样,每一个人都有自己的身份证,都可以用身份证来标识自己,MAC在局域网等本地网络中,为每一个设备提供了专属于自己的硬件标识符,让设备之间能够互相定位和识别。

MAC报头域有效载荷分离

以太网MAC帧的帧头和帧尾都是固定长度18字节,因此当底层接收到一个MAC帧后,直接提取出MAC帧中固定长度的帧头和帧尾,剩下就是有效载荷。

MAC帧通过字段决定将有效载荷交付给上层协议

MAC帧头中有两个字节类型字段,这个字段填写有协议的编号,0800就是交付给IP协议,0806就是交付给ARP协议,0838就是交给RARP协议。

数据碰撞

以太网所有的主机共享一个通信道路,在同一时刻只允许一台主机发送数据,否则各个主机发送的数据就会相互干扰,站在系统角度看,各个主机所共享的通信道路就是一种临界资源,这个临界资源同一时刻只允许一台主机使用。

同一时刻,多态主机同时发送数据,发送的数据就会互相干扰,就会造成数据碰撞,这些数据就会变成无效的数据,被丢弃掉,每一个局域网都可以看成一个碰撞域,某个主机发送的数据与其它主机发送的数据之间产生了干扰,就说明两个主机之间发生了碰撞。

算法知道发送碰撞

通过碰撞检测算法进行检测,发生碰撞通过碰撞避免算法解决

检测到发生碰撞,在链路层协议就会触发策略,发生数据碰撞的主机就不发数据了,等一段时间发送,数据碰撞发送的概率低,当发送的数据多了,也会出现多的碰撞。所以局域网不能太大,大就代表发送的数据多,就会出现多的碰撞。

数据长度与碰撞

数据量长就容易发生碰撞,数据量太短效率低下,数据长度需要在一个范围才是合适,最大1500,最小46个字节。

MAC地址和IP地址

IP地址描述的是整个路途的起点和终点

MAC地址描述的是这整个路途中遇到的小结点之间的起点和终点,就像中国到俄罗斯,中国是IP的起点,俄罗斯是IP的终点,广东到北京就是MAC地址的起点和终点。

2.MTU概念

MTU相当于发快递时对包裹储存的限制,这个限制是不同的数据链路层对应的物理层,产生的限制。

以太网帧中的数据长度最小规定为46字节,最大为1500个字节,ARP数据包长度不够46字节,就要在后面补上填充位。最大值1500字节是以太网的最大传输单元,不同网络类型有不同的MTU。

不同的数据链路层标准的MTU是不同的,如果一个数据包从A的链路层发送到B的链路层,而A的MTU大于B的MTU,则需要对数据进行分片了,因为发送最大的是两个端点之间最小的哪一个MTU。

MSS大小为1460=MTU-IP报头-TCP报头,

MTU对IP协议的影响

数据链路层MTU的限制,对于较大的IP数据包要进行分片。

将大的IP包分成多个小包,然后传输给数据链路层。

通过IP首部的识别码在分片过程中保证能把分开的数据聚合在一起,在根据偏移字段和标志字段进行组装。

 MTU对TCP协议的影响

TCP的数据包是有限的,也受限制与MTU,TCP的单个数据包的最大消息长度为MSS,这个MSS一般是1460大小,有效数据载荷的大小。TCP建立连接的过程中,通信双方会进行MSS协商。MSS的值正好是在IP不会被分片处理的最大长度,双方在发送SYN时候,会在TCP头部写入自己能支持的MSS的值,双方得知对方的MSS值,就会选择小的哪一个作为最终MSS。

查看硬件地址和MTU

使用ifconfig命令,就可以看到自己的IP地址,mac地址和MTU。

3.ARP协议 

ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议。

ARP协议的作用

ARP协议建立了主机IP地址和MAC地址的映射关系,在网络通讯时,源主机应用层序知道目的主机的IP地址和端口号,但是不知道目的主机的硬件地址,数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包硬件地址与本机不符,就会丢弃,所以需要正确的硬件地址才会被网卡接收,就需要得到目的主机的硬件i地址。

ARP协议工作流程

源主机发出ARP请求,询问IP地址是192.168.0.1的主机硬件地址是多少。并将这个请求广播到本地网段(以太网帧首部硬件地址是FF:FF:FF:FF:FF:FF表示广播)

目的主机接收到广播的ARP请求,发现其中的与本机相符,就会发送一个ARP应答数据包给源主机,会把自己的硬件地址填写到这个应答包里面。每台主机都维护一个ARP缓存表,可以用arp-a命令查看,缓存表中的表项有过期时间(一般为20分钟),如果二十分钟没有使用某个表项,则该表项失效,下一还要发ARP请求来获得目的主机的硬件地址。

 

ARP数据包格式

 

注意到源MAC地址,目的MAC地址在以太网首部和ARP请求中各出现了一次,以太网地址就是MAC地址。

硬件类型指链路层网络类型。1表示以太网

协议类型指要转换的地址类型,0x8000为IP地址

硬件地址长度对于以太网地址为6个字节

协议地址长度对于IP地址为4个字节

op字段为1表示ARP请求,op字段为2表示ARP应答

关于在以太网中出现两次 MAC 地址的情况

  • 在以太网环境中,以太网帧首部和 ARP 请求中都出现 MAC 地址,对于链路层为以太网的情况,这看似是多余的。因为以太网帧首部已经包含了 MAC 地址信息,用于在以太网链路层进行数据传输的地址解析和帧的转发。而 ARP 协议主要是用于将网络层的 IP 地址映射到链路层的 MAC 地址,它的工作主要是为了解决不同网络层协议(如 IP)与链路层以太网之间的地址转换问题。

  • 但是,如果链路层是其他类型的网络,而不是以太网,那么这种设计就可能是必要的。因为不同的链路层网络可能有不同的地址格式和地址解析方式。例如,某些链路层网络可能没有像以太网 MAC 地址这样的 48 位地址格式,或者其地址解析机制与以太网不同。在这种情况下,通过在 ARP 请求中包含 MAC 地址等相关信息,可以确保在不同类型的链路层网络之间进行有效的地址解析和数据传输。而且当数据帧经过不同类型的网络传输时,需要确保在每个网络段中都能正确地进行地址解析和数据转发。

 

ARP请求的过程

同一局域网内,主机A给主机B发送数据,但是主机A不知道主机B的MAC地址,此时主机A就会发送ARP请求,把ARP请求广播到局域网中,等待主机B发送ARP应答给主机A,其它主机在IP协议层会丢弃掉报文,因为目的IP地址不符合,每一层都有对应的数据才不会丢弃报文,只要有一层不一样就会丢弃报文,主机A根据ARP应答得知主机B的MAC地址。

主机A构建ARP请求流程

1.主机A构建ARP请求,ARP请求中的op字段设置为1

2.ARP请求中的硬件类型字段设置为1,表示以太网通信

3.ARP请求协议类型设置为0800,代表的是用另一台主机的IP地址获取另一台主机的MAC地址

4.ARP请求硬件地址长度和协议地址长度为6字节和4字节,MAC地址48字节,IP地址32字节

5.ARP请求中的发送端以太网地址和发送端IP地址,对应就是主机A的MAC地址和IP地址

6.ARP请求目的以太网地址和目的IP地址,对应主机B的MAC地址和IP地址,因为初始是未知的,就会把目的以太网MAC地址的二进制序列设置为全一(即 FF:FF:FF:FF:FF:FF),表示在局域网进行广播

ARP请求创建完后,需要向下交给以太网协议,进行封装MAC帧,然后才可以发送到以太网中

 

封装完MAC帧之后,就可以发送到局域网中了,每个主机都会对数据帧进行解包,主机识别到MAC帧中的帧类型为0806,知道了这是一个ARP请求数据包,就会把MAC帧有效数据往上传给ARP协议,ARP协议会进行解包,查看op字段确定为请求报文,ARP协议解包后把有效载荷上传给IP协议层,ip协议读取IP地址,只有一致的会进行解包,不一致的就会丢弃报文。

ARP应答

应答构建完后,就要向下进行交付给以太网,进行封装MAC帧,然后发送到以太网,封装MAC帧时会把MAC地址填入报文中,ARP应答报文中的帧类型字段设置为0835,表示ARP应答

封装完成的数据帧

 

ARP缓存表

ARP缓存表是一种用于存储IP地址和MAC地址之间映射关系的缓存表。当一台主机需要与另一台主机进行通信时,会先检查自己的ARP缓存表,是否之前已经有目标主机的IP地址和MAC地址的映射关系,查到就会只用映射关系,而不用广播形式获取MAC地址。

主机之间通信不是每次都会进行ARP请求,而是先去ARP缓存表中里查看是否有另一台主机的MAC地址是否存在。这个ARP缓存表存储的数据也有期限,超过了就会被删除,保持ARP缓存表的更新和有效性。 

4.NAT与NAPT

NAT网络地址转换,不仅仅将私有IP地址转换为公网IP地址,还可以进行端口号替换,NAPT通过转换IP地址和端口号,允许多个内网设备共享一个公网IP地址进行互联网访问。NAPT在路由器上维护一个转换表,记录内网IP地址,端口号和公网IP地址,端口号之间的映射关系。内网设备发送数据到互联网时,NAT设备将数据包中的源IP和源端口转换为公网IP和一个新的端口号,并将映射关系记录在转换表中。互联网的响应数据返回时,NAT设备根据转换表中的记录,将数据包中的目的IP和端口号转换回内网设备的IP地址和端口号,实现数据正确转发。

NAT与NAPT区别

转换方式不同:NAT仅对IP数据包的源IP地址或目的IP地址进行转换,不涉及端口号。NAPT转换IP地址同时,还对IP数据包的源端口号或目的端口号进行转换,允许多个内网设备共享一个公网IP地址进行互联网访问。

地址转换数量不同:NAT一对一的地址转换,一个内网IP转换为公网IP。

NAPT是一对多,因为有了端口号存在,就可以一个公网映射多个内网IP地址,同一的子网的地址不同,端口相同,转换后,公网相同,但是端口号不同,以此来进行区分。

地址转换表不同:

NAT转换表记录内网IP和公网IP之间的映射关系。NAPT记录内网IP地址,端口号与公网IP地址,端口号之间的映射关系。

路由器之间不会存mac地址 有RPR协议可以将ip地址转换成mac地址 如果IP地址不知道就可以用路由表算法来解决这个问题 得到对应的IP地址

路由表算法与 IP 地址解析

  • 路由表算法的作用 :路由表算法主要用于帮助路由器确定数据包的转发路径。路由器根据路由表中的路由信息,选择最优路径来转发数据包到目标网络。

  • 与 IP 地址解析的关系 :路由表算法本身并不直接用于获取未知的 IP 地址,而是用于在已知目标 IP 地址的情况下,确定如何将数据包转发到目标网络。如果目标 IP 地址未知,需要借助其他机制(如 DNS 查询等)来获取目标 IP 地址,而不是仅靠路由表算法。

 

http://www.xdnf.cn/news/673327.html

相关文章:

  • 动态规划(8):路径问题
  • cos和dmz学习
  • docker-compose搭建emqx 服务
  • 大学大模型教学:基于NC数据的全球气象可视化解决方案
  • 计算机组成原理:IEEE 754标准
  • 武汉火影数字VR大空间制作
  • Spring Cloud 详解:2025 最新技术与最佳实践
  • 第二章 1.4 数据采集安全风险防范之数据分类分级
  • vue + ant-design + xlsx 实现Excel自定义模板导入功能
  • 打卡day38
  • 基于vue框架的动物园饲养管理系统a7s60(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • SSM-IOC入门案例/DI入门案例
  • OpenHarmony平台驱动使用(四),GPIO
  • 08SpringBoot高级--自动化配置
  • 3D虚拟工厂
  • leetcode每日一题(好几天之前的) -- 3068.最大节点价值之和
  • 国产化Word处理控件Spire.Doc教程:在 C# 中打印 Word 文档终极指南
  • 李沐《动手学深度学习》 | 4.5-4.6 正则化技术:权重衰退与Dropout
  • 类和对象(3)
  • openpi π₀ 项目部署运行逻辑(五)——模型微调
  • ASP.NET Core 中JWT的基本使用
  • 分布式架构:解读不同数据一致性模型
  • ⚡ Hyperlane —— 比 Rocket 更快的 Rust Web 框架!
  • 3D草图绘制管道
  • 26考研 | 王道 | 第五章 传输层
  • AI in Game,大模型能力与实时音视频技术融合,交出AI应用新答卷
  • EMQX启用单向认证的SSl/TLS连接的配置步骤
  • 如何在加密数据上实现模糊查询?技术方案全解析
  • 视觉语言多模态模型的优化
  • 调试(gdb/cgdb)