Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)

文章目录

    • 1. 以太网(基于碰撞区与碰撞检测的局域网通信标准)
    • 2. 以太网的帧格式(MAC帧)
    • MAC地址,IP地址的区分
    • MTU
    • MTU对IP协议的影响
    • MTU对TCP/UDP协议的影响
    • 3.ARP协议(局域网协议,MAC帧上层)
    • ARP协议通信过程

TCP:提供数据传输的可靠性策略(丢包重传,流量控制,拥塞控制,滑动窗口等等)
IP:提供数据传输的能力,让数据可以从主机A经过网络传输到主机B。IP协议在进行通信时,先将数据交付给下一跳主机(发送数据的主机A一定和下一跳网络处于同一网络段,一定是局域网通信)

TCP的机制保证了IP传输数据的可靠性。

以太网MAC协议:负责局域网通信细节


不同的局域网,他们使用的通信细节不同(以太网,令牌环网等)。

1. 以太网(基于碰撞区与碰撞检测的局域网通信标准)

  • 以太网并不是具体的网络,而是技术标准,既包含数据链路层部分也包含物理层部分(网络拓扑结构,访问控制,传输速率等)

数据在以太网中的传输过程为:

在主机A向主机B传递报文时,局域网上所有的主机底层都可以收到报文数据,只不过只有主机B对报文进行了解析,其他主机直接丢弃了报文。

实际局域网通信过程中不仅仅只有主机A与主机B通信,局域网上所有主机都有可能互相通信

局域网特性要求任何时候只能一台机器发送信号,A与B发信息时可能此时D向C发信息,这时就形成了局域网碰撞现象。

如果网络中的数据发生碰撞,主机可以检测到。(主机A发送信息与接受的信息不同,说明发生了碰撞)

当发生碰撞时,所有的主机进行碰撞避免算法,来避免碰撞。

注意:局域网发生碰撞的概率很低,网络通信速度与计算机处理速度很快。

以太网通信过程

当前计算机中,每一台计算机上都至少有一张网卡,而每一张网卡都内置了48位序列号(MAC地址),这个序列号是全球唯一的。(MAC地址用来识别数据链路层中相连的节点)

局域网发送的数据称为MAC数据帧

数据帧上有dst MAC地址,当MAC数据帧在局域网上传输时,每一台主机与dst MAC地址对比,如果匹配上,则处理数据。匹配不上则丢弃数据。

注意:
如果dst MAC地址设置为全F,这个数据帧所有主机都会处理,称为广播发送信息

总结:以太网通信可以使用“多线程的临界资源”视角来看,局域网相当于临界资源,任何主机都可以向网络中发送数据,局域网的主机共享局域网,但同一时刻,局域网的主机只有一台可以发送数据。


2. 以太网的帧格式(MAC帧)

Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)_第1张图片

  • 报头与有效载荷分离:

MAC帧采用定长报头,报头大小为6+6+2=14字节。通过定长报头实现分离。


  • MAC帧将有效载荷交付上层

MAC帧报文中有2字节的类型字段。
如果是0800,是IP协议数据报
0806是ARP协议数据报
8035是RARP协议的数据报

根据类型字段决定将有效载荷交付上层的某个协议。


CRC校验

Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)_第2张图片
校验数据的规则,这里不提。


目的地址与源地址
在这里插入图片描述

目的地址与源地址:局域网通信双方网卡的硬件地址(MAC地址)。

MAC地址,IP地址的区分

MAC地址:可以看作是计算机的身份证。(人的身份证)
IP地址:可以看作是计算机所在的位置信息。(人的居住地址)

IP地址可以发生改变,MAC地址不能改变。

在实际通信过程中,报文的目的IP地址是不改变的,用来支持路由规则。而报文中的源MAC地址目的MAC地址一定在通信过程中会改变,因为上一跳主机和下一跳主机是在不断变化的。

MTU

  • IP层交付给下层数据超过MTU数量的限制,会在IP层分批发送数据。封装成多条MAC帧发送,对端IP层进行组装.
  • 以太网数据长度规定最小46字节,最大1500字节。数据不足46字节,需要补充随机数据到46字节。大于1500字节IP层会分片发送
  • 最大值1500字节称为MTU,不同的网络MTU不同

MTU对IP协议的影响

由于数据链路层的MTU的限制,对于较大数据的IP协议需要分包

  1. 较大的IP数据包分成小包,并给每个小包打上标签
  2. 每个小包IP协议报头16位标识符都是相同的
  3. 每个小包IP协议的3位标识字段,第二位为0表示允许分片,第三位表示更多分片,如果分片,每片报文第三位设置为1代表后序还有分片,整个报文的最后一片这个字段设置为0,代表最后一片。(不分片的报文这一位设置为0),第一位保留
  4. 任意一个小包丢失,接受端重组就会失败,这时靠TCP的重传机制重传。UDP则报文丢包

MTU对TCP/UDP协议的影响

UDP:

  1. 如果UDP携带数据超过1472字节(1500-20(IP报头)-8(UDP头部)),IP层会发生分片发送情况,使丢包的概率增大。
  2. 如果IP层分片发送数据,任何一片丢失这次通信就算失败,UDP没有任何确保可靠性措施。

TCP:

  1. TCP报文的最大长度受限于MTU,TCP单个报文的最大消息长度称为MSS。
  2. TCP进行三次握手时,双方会对MSS协商,减少分片
  3. 如果分片丢失,TCP会执行丢包重传。
  4. MSS的值可以在TCP报头的选项中加长

Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)_第3张图片

3.ARP协议(局域网协议,MAC帧上层)

ARP协议:介于数据链路层和网络层之间的协议。

ARP协议:建立主机IP地址与MAC地址之间的映射。根据目的IP地址获取目的MAC地址,让下一跳能够准确到达目的IP对应的主机

Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)_第4张图片

  • 硬件类型为数据链路层的网络类型,一般为1代表以太网。
  • 协议类型:指要转化的地址类型,0x0800为IP地址。
  • 硬件地址长度:MAC帧对应长度,以太网中一般为6字节。
  • 协议地址长度:需要转化协议的长度,如果是IP协议转化为MAC帧协议,字段为IP长度4字节。
  • op字段:op为1代表ARP请求报文,op为2代表ARP应答报文
  • 6位目的地址与6位源地址,2位类型是MAC帧协议报头。

ARP协议通信过程

ARP请求过程:
Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)_第5张图片

  1. 局域网都可以收到这个报文(但不一定处理)。

  2. 因为MAC识别到帧类型是0806,代表是ARP协议,局域网所有主机都会将收到的这个报文交给上层的ARP协议。(每个主机都会处理这个报文)

  3. 每个主机都拿到
    在这里插入图片描述
    部分。域网中每台主机先看op字段,判断是ARP请求还是响应,之后每台主机会对比目的IP字段和自己主机IP。如果对不上,则将报文丢弃,正确匹配后主机保留报文。

  4. 接受到报文后,主机B知道了发送方的MAC地址(MACA)。继续处理报文

主机B会填充自己的ARP响应:
Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)_第6张图片
将ARP应答报文返回给主机A。

  1. 到达主机A的局域网后,所有主机MAC帧识别到目的以太网地址不是FFFFFF,而是MACA。除了主机A其他主机在MAC帧层直接把数据丢弃。
  2. 主机A通过提取ARP应答报文中的,发送端以太网字段和发送端IP地址,来保存对端的MAC地址和IP地址。

综上,ARP请求到对端局域网以广播的形式将报文交付给接受端。而ARP响应回发送端时不是广播形式,因为目的以太网地址确认,非指定MAC地址的主机直接将报文丢弃。

  1. 虽然上图的MAC层报文有两个目的MAC地址和源MAC地址,但并不冗余,因为这两个地址是给两个协议看的。
  2. ARP层收到ARP报文时首先要看op字段,判断报文是ARP响应还是请求。因为任何一台主机都可能收到ARP应答,或发起ARP请求。如果op是1代表对端请求本机的MAC地址,如果op是2代表这个主机之前问过对端主机的MAC地址,并且这个报文就是对端主机的应答
  3. 因为在局域网A主机向B主机进行通信,需要知道B主机的MAC地址(只有知道目的MAC地址,才可以封装MAC帧,才可以在局域网中通信),而主机A只知道主机B的IP地址,所以需要ARP协议将主机B的IP协议转化位主机B的MAC地址。
  4. 虽然MAC帧中的目的MAC地址可以写成FFFFFF,这样进行局域网的通信。但实际上,主机A向主机B通信,其他主机不应该参与这个报文处理过程,应该直接丢弃,浪费系统资源。其次要区分广播和单向数据传输的界限,否则要真正使用广播时可能回导致歧义。

RARP协议: 逆地址解析协议,将MAC地址转化为IP地址。

你可能感兴趣的:(#,网络,Linux,网络)