链路层以太网详解

Posted 两片空白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链路层以太网详解相关的知识,希望对你有一定的参考价值。

目录

前言

一.认识以太网

二.以太网帧格式

        2.1 格式介绍

        2.2 认识MAC地址

        2.3 对比IP地址和MAC地址

         2.4 数据碰撞问题

        2.4.1 数据碰撞概念

        2.4.2 交换机

        2.4.3 总结一下如何通信

三.认识MTU

        3.1 MTU对IP协议的影响

        3.2 MTU对传输层的影响

        3.2.1 MTU对UDP协议的影响

        3.2.2 MTU对TCP的影响

         3.2.3 查看硬件地址和MTU的命令

四.ARP协议

        4.1 ARP协议作用 

       4.2 ARP数据报格式

       4.3 ARP协议的工作流程


前言

        虽然网络层IP协议提供了数据传输的能力。点对点(同一局域网主机之间通信),端对端(跨网络主机通信)。但是网络层并不是真正发送数据的,真正发送数据的是链路层。

一.认识以太网

  • 以太网不是一种具体的网络,而是一种技术标准,即包含了链路层的内容,还包含了物理层的内容。例如:规定了网络的拓扑结构(节点以什么形式组织(树/图...)),访问控制方式,传输速率等。
  • 以太网现在是当前应用最广泛的局域网技术。和以太网并列的还有令牌环网,无限LAN等。

总结:以太网是一种标准,是局域网中通信的一种标准。

二.以太网帧格式

        2.1 格式介绍

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

特殊MAC地址:如果将目的MAC地址设为全1,是广播。每一个局域网内的主机,都能收到数据,并且向上解析。

如何向上实现报头和数据分离:以太网协议报头长度是定长的。

向上交付给那个协议:类型0800说明是IP协议。

        2.2 认识MAC地址

  • MAC地址长度48位,6字节,一般用16进制加上冒号形式来表示(例如:08:00:27:03:fb:19)。
  • 在网卡出厂时就确定了,不能修改,是唯一的。
  • 用来唯一标识一台主机的网卡。

        2.3 对比IP地址和MAC地址

        有人说,有了IP地址来标识主机,为什么还需要mac地址呢?

        源IP地址和目的在IP地址是标识了最开始发送数据的主机和最终接收数据的主机。相当于你要取某个地方的起点和终点。

        源MAC地址和目的IP是当前局域网中发送数据的主机和接收数据的主机。相当于你要去某个地方,每次经过一个区间的起点和终点。

        如果跨网络传输,这个发送数据的主机不一定是最开始发送数据的主机,接收数据的主机不一定是最终接收数据的主机。

        所以跨网络通信时,MAC地址每经过一个局域网都会发生变化。IP地址不会变化,但是由于NAT技术,源IP地址也是被不断替换的。

为什么以太网协议封装的数据只能局限在局域网中通信?

        因为,一台网协议会在数据中添加源MAC地址和目的MAC地址。如果要跨网络,必须经过路由器。路由器连接不同的局域网,用的网卡不同,就需要将收过来的数据,解包,再封包,将数据的MAC地址修改了。 

         2.4 数据碰撞问题

        2.4.1 数据碰撞概念

        一个局域网是多台主机共享的,当多台主机往局域网中发送数据时,数据在局域网中会发生干扰,俗称数据碰撞。数据碰撞之后,由于不知道数据的准确性,数据无法再继续发送。

        此时这个局域网就是一个碰撞域,每台主机都会进行冲突检测,检测是否有数据发生碰撞,主机也有冲突避免的算法。

        为了避免碰撞,局域网通信,在一个碰撞域中,任何时刻都只允许只有一台主机向另外一台主机通信。

        2.4.2 交换机

           交换机工作在链路层,具有划分碰撞域和转化数据帧的功能。提高通信效率。

        2.4.3 总结一下如何通信

        在一个局域网中通信,主机A只负责将数据发送到局域网中,局域网中的所有主机都能收到该数据,包括路由器,路由器也是局域网中的一台主机。但是以太网协议会在数据中加入源MAC地址和目的MAC地址,主机收到数据后,会将目MAC地址和自己的MAC地址作比较,不匹配丢弃,匹配的话,就向上会解析。

三.认识MTU

  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据报小于46字节时,要在后面补充位数。
  • 最大值1500字节称为以太网的最大传输单元(MTU),不同网络类型有不同的MTU。
  • 如果一个数据包的长度超过了MTU,则需要对数据进行分片,分片是网络层IP做的。
  • 不同的数据链路层标准的MTU是不同的,在数据传输过程中,数据可能会被路由器继续分片。

        3.1 MTU对IP协议的影响

        发送时,网络层IP协议的数据需要发送到链路层,由于MTU的影响,对于超过MTU的数据,IP要对其进行分片处理。

  • 同一组数据的每一个分片IP协议的16位标识id是相同的。
  • 每一个分片IP协议报头的3位标志段,第二位为0,表示允许分片,第三位为1,表示后面还有分片,第三位为0,表示后面没有分片。
  • 每一个分片IP协议报头的13为偏移量,表示的是当前分片距离起始位置的偏移量,用于接收端组装的。
  • 一旦一些分片丢失,数据重组失败,但是IP层不负责重传数据。
  • 负责数据重传的是传输层,准确来说是TCP协议,UDP协议不可靠。

        3.2 MTU对传输层的影响

        3.2.1 MTU对UDP协议的影响

        UDP协议的特点是:无连接,不可靠和面向数据报的。

  • 当一个UDP携带的数据超过1472(1500 - 8(UDP报头) - 20(IP报头))时,在IP层就一定会进行分片
  • 分片之后,一个数据被分成了多份,说明,数据丢包的概率增加了。
  • 并且,UDP没有可靠性保证,数据不会重传

        3.2.2 MTU对TCP的影响

  • TCP协议的一个数据报也不能是无限大的,不仅受之于流量控制,拥塞控制的影响,还受MTU的影响。TCP的有效载荷的最大消息长度,称为MSS。
  • TCP在建立连接,三次握手时,通信双方会进行MSS协商。
  • 双方SYN时会在TCP报头写入自己能支持的MSS值。
  • 双方知道知道对方的MSS后,选择最小值作为最终MSS。
  • MSS值在TCP报头填入位置在选项。

        虽然TCP会协商MSS,但是,仍然可能会被分片。接收端就收在组装时,如果发现一个分片丢失,接收端TCP收不到数据,就认为整个数据丢失,会让发送方,重发整个数据。

MSS和MTU的关系: 

         3.2.3 查看硬件地址和MTU的命令

四.ARP协议

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

        4.1 ARP协议作用 

        我们通过上面知道以太网标准的格式,需要在数据中加入源MAC地址和目的MAC地址,那我们时怎么知道对方的MAC地址的呢?

        我们是通过APR协议来获取对方的MAC地址。

        通过对方的IP地址来获得对方的mac地址。

      4.2 ARP数据报格式

  • 以太网首部和上面相同。但是ARP协议,类型设为0806
  • 硬件类型:指链路层网络类型,1为以太网。
  • 协议类型:指要转换的地址类型,0800为IP地址,意思是通过IP地址找MAC地址。
  • 硬件地址长度:对于以太网地址为6字节。
  • 协议地址长度:对于IP地址为4字节
  • op字段:为1表示ARP请求,为2表示ARP应答。

        4.3 ARP协议的工作流程

  • ARP协议先广播数据到居于网中,目的MAC地址为全1。
  • 每台主机收到数据后,解开以太网报头和IP报头,拿到目的IP地址。
  • 拿目的IP地址和字节主机的IP地址向比较,匹配就返回ARP响应。
  • 发送端收到响应就获得了对方的MAC地址。

如果局域网中的主机没有目标主机,怎么知道对方的IP地址呢?(ARP字段要填写)

        我们知道最终要接收数据主机的IP地址(应用层会数据URL中)在IP成先查路由表发现不在当前局域网中,会发送给路由表中默认的网段,也就是路由器。主机知道路由器的IP地址,一般是当前局域网的网络号,主机号为1。会在ARP协议的目标IP地址填入路由器的IP地址。路由器收到后会ARP响应。

        如果查看路由表,最终要接收数据主机的IP地址在当前局域网中,会在ARP目的IP地址填入最终要接收数据主机的IP地址。最终要接收的主机收到会响应ARP。

         局域网中的主机收到ARP请求,向判断op字段是否是请求,因为当前主机可能还收到了别的主机的响应。再解开报头,获得目的IP地址,是否与自己的IP地址匹配,匹配响应,不匹配丢弃。(广播的,局域网中的主机都会解开报头,匹配目的IP地址)

        局域网中发送请求的主机收到ARP响应,向判断op字段是否是响应,因为当前主机可能还收到了别的主机的请求。再解开报头,MAC地址与自己的匹配,不匹配的丢弃。发送请求的主机就获得了对方的MAC地址。(不是广播的,请求知道了发送主机的MAC地址)

以上是关于链路层以太网详解的主要内容,如果未能解决你的问题,请参考以下文章

详解数据链路层-数据链路层设备王道计算机网络笔记

TCP/IP详解——链路层

链路层以太网详解

数据链路层中的点对点通信详解

[TCP/IP详解卷1:协议] Chapter2.链路层

数据链路层和交换机原理详解(重点)