0
点赞
收藏
分享

微信扫一扫

[yarn]yarn异常

王老师说 2023-11-08 阅读 45

文章目录


1. 认识以太网

数据链路层负责在同一局域网(同一链路)中两台设备的通信。 局域网的种类有很多,如:以太网、令牌环网。以太网是最常见的局域网技术,广泛用于家庭、企业和数据中心网络。

2. MAC协议

MAC帧的格式

在这里插入图片描述

目的MAC地址和源MAC地址: 标识该数据帧的目的主机和源主机;

类型: 指的是封装上层数据的协议类型,有三种类型:IP, ARP, RARP,分别对应数字:0800, 0806, 8035。

CRC校验码: 判断该数据帧的正确性。

MAC地址和IP地址的区别

  • MAC地址用于标识同一链路相互连接的不同主机,在通信过程中描述路途上每一个区间的起点和终点。 MAC地址的长度为6字节48位,一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。MAC地址通常是唯一的,在网卡出厂时就设定了,不能修改。
  • IP地址用于标识网络中的不同主机,在通信中描述全过程的起点和终点。

MTU

MTU(Maximum Transmisson Unit)最大传输单元,指数据链路层中一个数据帧有效载荷的最大长度。

不同数据链路对于数据帧的长度限制不同,以太网MAC帧数据部分的长度规定最小是46字节,最大是1500字节。如果数据长度小于46字节,要求在数据部分后面填充额外的空白字节,以满足最小长度要求。最大是1500字节,这就是MTU。

为什么要设置MTU?

  • 提高网络传输的效率;
  • 降低碰撞概率,减少碰撞后重传的成本。大数据帧传输时间长,增加碰撞的风险,碰撞避免的成本很高。(关于数据碰撞,后面详谈)

MTU对上层的影响:

MSS与MTU的关系:

在这里插入图片描述

通常情况下:

MSS = MTU(1500byte) - IP报头长度(20byte) - TCP报头长度(20byte) = 1460byte


3. 局域网通信原理

  1. 局域网采用“广播”的策略进行数据通信,即在同一链路中,主机A向主机B发送数据,并不是直接向B转发,而是群发到同一链路的所有主机中,由接收主机辨认数据包是否是发给自己的。

  2. 在同一链路上,每台主机有一个MAC地址,用于标识了该主机在链路中的唯一性。 每个发出的数据帧都携带源MAC地址和目标MAC地址。当主机A向主机B发送消息时,同链路所有主机都收到这个消息,并在数据链路层查看消息的目标MAC地址是否为本主机MAC地址,不是则在MAC层将消息丢弃,是则向上交付。

在这里插入图片描述

碰撞检测和避免

  • 碰撞检测

    数据链路层的碰撞检测机制,通俗理解:因为主机以广播的形式向同一链路的目标发送数据,所以发送方自己也能收到自己发出去的数据。碰撞检测就是在链路中收取自己发送的数据帧,通过CRC校验等方式,检测数据是否损坏。

  • 碰撞避免

    碰撞避免就是当检测到发生数据碰撞,发送方的数据链路层会随机等待一段时间,再尝试重传数据帧。这个等待时间是为了避免多个设备在同一时间重新发送数据,从而减少再次发生碰撞的可能性。因此,不仅TCP有重传机制,数据链路层也有,只不过机制比较简单。

另外的,同一链路中设备越多,数据碰撞的概率越高。因此数据链路层引入了 交换机(Switch) 以解决这个问题。

交换机是工作在数据链路层的设备,其主要作用是划分碰撞域,如下:

在这里插入图片描述


4. ARP协议

ARP协议(Address Resolution Protocol)就是用于IP地址转换MAC地址。 ARP通俗来讲就是一个“询问”的过程,知道目标IP,在局域网中群发询问目标IP对应的MAC地址,与IP对应的目标主机会返回它的MAC地址。

ARP协议也是数据链路层协议,但在MAC协议之上。

ARP数据报的格式

ARP是MAC帧的一种类型(MAC帧报头的类型字段填为0806),只不过规定了MAC数据部分的字段格式。

在这里插入图片描述

各个字段解释:

  1. 硬件类型:指链路层网络类型,1表示以太网;
  2. 协议类型:指要转换的地址类型,0x0800表示IP地址;
  3. 硬件地址长度:物理地址长度,以太网MAC地址是6字节;
  4. 协议地址类型:要转换的地址长度,IP地址是4字节;
  5. op:op字段为1表示ARP请求,op字段为2表示ARP应答。

一次ARP的过程(主机A想要得知主机C的MAC地址):

在这里插入图片描述

  1. 主机A向主机C发送ARP请求(格式如下图),此时主机A并不知道主机C的MAC地址,只知道其IP地址,因此将目的MAC地址设为全1,目的IP设为ipC。(帧类型ARP的0806, op是1表示ARP请求)

在这里插入图片描述

  1. 主机A的ARP请求广播到局域网中,所有主机都会收到。

    • 对于其它非目标的主机,收到这个MAC数据帧后,发现MAC报头的类型字段为0806,得知该数据帧是ARP数据帧,便由MAC协议交付给上层的ARP协议。ARP协议解开报头,查看op字段,确定为ARP请求(这是固定过程,每个主机都可能会收到ARP请求或应答,必须先判断是请求还是应答,再作进一步处理)。然后判断目标IP是否为本机的IP地址,检测到不是,在APR层丢弃数据包。
    • 对于主机C,收到数据帧,判断是ARP请求,在ARP层判断目标IP为本机IP,则表示这个ARP请求想要获取本机的MAC地址。紧接着进行应答的构建
  2. 主机C构建ARP应答(格式如下图),然后广播到链路中
    在这里插入图片描述

  3. 主机A收到ARP数据帧,其它主机丢弃应答(这里MAC报头中的目标地址已经确定,主机通过判断MAC报头中的目标地址,决定是否在MAC层丢弃,而不用交付给ARP层)。主机A收到了一个发送给自己的ARP应答,提取源MAC地址macC和源IP地址ipC,得到了一组IP地址和MAC地址的映射关系。主机A终于得到了主机C的MAC地址,可以正常通信了!

细节:

  1. ARP层收到一个ARP数据帧,解开报头后,第一步必然是查看op字段。

    • op为1表示该帧为ARP请求,执行动作:判断目标IP是否为本机IP,是则表示该ARP请求想要获取本机的MAC地址,紧接着构建并发送应答;否则在APR层丢弃该请求。
    • op为2表示该帧为ARP应答,不用考虑是否丢弃,因为已经再MAC层完成,执行动作:提取源MAC地址和源IP地址,得到一组IP和MAC地址映射关系
  2. ARP请求的丢弃发生在ARP层,ARP应答的丢弃发生在MAC层。

ARP缓存

每个主机都会维护一张ARP缓存表,用于存储历史建立的IP与MAC地址的映射关系。 数据链路层收到IP数据包后,根据目标IP地址,查看ARP缓存表,若表中存在与目标IP地址对应的映射关系,则直接打包MAC帧发往目标主机,否则进行ARP过程。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。

Linux下通过arp指令查看ARP缓存表。

在这里插入图片描述


ENDING…

举报

相关推荐

YARN

⑤Yarn

Yarn

Hadoop Yarn

Yarn框架

0 条评论