数据链路层

数据链路层

  • 认识以太网
    • 以太网帧格式
    • 认识MAC地址
    • 对比理解MAC地址和IP地址
    • 认识MTU
    • MTU对上层协议的影响
    • 查看硬件地址和MTU
  • ARP协议
    • ARP协议的作用
    • ARP数据报的格式
    • ARP协议的工作流程

用于两个设备(同一种数据链路节点)之间进行传递

认识以太网

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

数据链路层_第1张图片

跨网络传输的本质是由无数个局域网转发的结果,理解跨网络传输的本质,首先需要理解局域网中报文的转发原理;上文中网络层的作用是路由选择,真正去实现路由的是数据链路层

以太网帧格式

以太网的帧格式如下所示:

数据链路层_第2张图片

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP
  • 帧末尾是CRC校验码

学习报文最重要的两个问题:
如何解包?
定长报头加上后面4字节校验码

如何分用?
报头中的类型决定交付的协议类型

理解局域网转发的原理
数据链路层_第3张图片

报文在数据链路层经过以太网的封装,形成数据帧;由主机1发送至局域网中,该报文会被局域网中所有的主机获取,在数据链路层先识别目的地址,如果不符合直接丢弃;如果符合,直接向上交付

如果大量主机同时发送数据,此时每个主机都会受到大量数据,进而导致数据传输效率低下,解决措施有:令牌环,以太网

在以太网中规定:在任何时刻,只能有一个主机发送消息,如果多个消息被同时发送,会导致局域网中的数据发生碰撞,从而变成无效数据;一个局域网,一个碰撞域

再后来交换机的引入,也大大降低了碰撞的概率

数据链路层_第4张图片

交换机划分了碰撞域,当识别局部性碰撞时,对碰撞数据不进行转发

重新看待局域网,可以将局域网当作临界资源;规定任何时刻只能有一台主机能够向临界资源中写入数据

认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示
  • 在网卡出厂时就确定了, 不能修改
    数据链路层_第5张图片

对比理解MAC地址和IP地址

  • IP地址描述的是路途总体的 起点 和 终点
  • MAC地址描述的是路途上的每一个区间的起点和终点

认识MTU

由于碰撞域的存在,一台主机发送数据时,发送的数据是较长些好,还是较短些好,为什么呢?
较长或者较短都会影响传输效率,适中较好

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

  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位
  • 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)
  • 不同的数据链路层标准的MTU是不同的

MTU对上层协议的影响

在上文的网络层中已经介绍过分片,这里不加赘述

数据链路层_第6张图片

查看硬件地址和MTU

数据链路层_第7张图片

ARP协议

在这里插入图片描述

再回到数据帧中,再局域网中可通过目的IP和子网掩码确定目标网络,目标网络中存在着许多的主机,通过目标主机MAC地址便可确定目标主机,但是数据帧中需要填充的内容就是目标主机的MAC地址,所以在与目标主机传输数据之前,还存在一个过程:获取目标主机MAC地址,ARP协议便可完成这一任务

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

数据链路层_第8张图片

ARP协议的作用

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  • 因此在通讯前必须获得目的主机的硬件地址

简单来说,ARP协议,根据IP地址,得到对方主机的MAC,获取对方主机的MAC地址后,再发送MAC帧

ARP数据报的格式

数据链路层_第9张图片

  • 硬件类型指链路层网络类型,1为以太网
  • 协议类型指要转换的地址类型,0x0800为IP地址
  • 硬件地址长度对于以太网地址为6字节
  • 协议地址长度对于和IP地址为4字节
  • op字段为1表示ARP请求,op字段为2表示ARP应答

ARP协议的工作流程

数据链路层_第10张图片

主机1调用ARP请求,填入字段,目的地址填入FFFFFF,进入数据链路层封装成MAC帧,发送至局域网中,被局域网中的每个主机收到,对比目的IP是否相等,进行丢弃;到达目的主机后,向上交付给ARP协议,读取op内容判断ARP的类型:请求或应答;填入MAC地址,返回数据链路层进行封装,再发送至局域网中,直接到达主机1(由于MAC已经获取,其他主机不再获取MAC帧),至此可以开始发送数据

你可能感兴趣的:(Linux,网络,网络协议,linux,c++)