数据链路层是OSI模型中的第二层,负责将数据分成小块传输,并通过物理连接将数据帧从一个节点传输到另一个节点。数据链路层处理数据的封装、传输、流控、错误检测、地址解析和连接管理等功能,保证数据在网络中可靠传输。它是网络通信中的关键层级,确保数据能够安全、有效地在网络中传输。
一、认识以太网
以太网(Ethernet)是一种当今最常用的局域网技术,用于在计算机和其他网络设备之间共享数据。以太网技术最初由施乐、英特尔和德州仪器等公司于20世纪70年代共同开发,并在1980年代以IEEE 802.3标准化。以太网是一个开放的标准,其规范由IEEE(Institute of Electrical and Electronics Engineers)维护。
以下是一些关于以太网的重要特点和功能:
-
传输介质:以太网传输数据的常见介质是双绞线、光纤和无线电波。其中最常用的是双绞线,如Cat5、Cat6等。在传输数据时,以太网使用CSMA/CD协议(Carrier Sense Multiple Access with Collision Detection)来避免碰撞和冲突。
-
拓扑结构:以太网支持多种拓扑结构,如星型、总线型、环形等。其中最常见的是星型拓扑,其中所有设备连接到一个中心交换机或集线器。
-
数据帧:以太网使用数据帧来传输数据。数据帧由目的地址、源地址、类型字段和数据字段组成。目的地址和源地址是MAC地址,用于标识物理设备。类型字段表示数据类型,例如IP数据包。
-
速率:以太网支持不同的速率,包括传统的10 Mbps(以太网)、100 Mbps(快速以太网)、1 Gbps(千兆以太网)和更高速率,如10 Gbps、40 Gbps和100 Gbps。
-
用途:以太网被广泛用于企业和家庭网络中,用于连接计算机、打印机、路由器、交换机等设备,并通过互联网进行数据通信。它是目前最流行的局域网技术之一。
总的来说,以太网是一种成熟、稳定且高效的局域网技术,广泛应用于各种网络环境中,为用户提供快速、可靠的数据通信。
二、以太网帧格式
以太网帧是在数据链路层传输数据的基本单位,它包含了发送和接收数据的必要信息。以下是典型的以太网帧格式:
-
Preamble(前导码):8个字节的前导码,用于同步接收方的时钟。
-
Start Frame Delimiter(起始帧定界符):1个字节,指示帧的开始。
-
Destination MAC Address(目的MAC地址):6个字节,表示接收帧的设备的MAC地址。
-
Source MAC Address(源MAC地址):6个字节,表示发送帧的设备的MAC地址。
-
Length/Type(长度/类型字段):指示数据字段的长度或帧类型。如果值大于 1500(0x05DC)表示帧类型,否则表示数据长度。如:0x0800表示IP报文的MAC帧类型,0x806表示ARP请求或应答的MAC帧类型,0x8035表示RARP请求或应答的MAC帧类型。
-
Data(数据字段):46 - 1500 字节,包含了实际传输的数据。
-
Frame Check Sequence(帧校验序列):4个字节的CRC值,用于检测数据在传输过程中是否出现错误。
注意:以太网帧的大小通常在64到1518字节之间,这个范围包含了前述内容的总和。如果数据字段的长度不足64字节,则会填充数据字段以满足最小帧大小(64字节)。以太网帧的结构保证了数据在网络中的正确传输和接收,并通过源和目的MAC地址进行设备之间的唯一标识。
MAC帧如何做到解包和分用的呢?
采用定长报头的方案,先读取前6个字节获取到目的MAC地址,如果发现不是发送给自己的MAC帧,在链路层直接丢弃即可。如果目的MAC地址正是本主机,则继续读取两字节的类型字段,决定向上交付给网络层的某个协议。
三、以太网工作原理
3.1 MAC地址
MAC地址(Media Access Control Address)是数据链路层(第二层)网络设备的硬件地址,用于在局域网中唯一标识和识别设备。每个网络设备都有一个唯一的MAC地址,由设备的制造商分配。
以下是关于MAC地址的一些重要信息:
-
唯一性:MAC地址是全球唯一的,每个网络设备的MAC地址都不相同。
-
格式:MAC地址通常以十六进制形式表示,由48位二进制数字组成,分为6个字节。MAC地址中的前3个字节是厂商识别码(Organizationally Unique Identifier,OUI),后面3个字节是设备序列号。
-
用途:MAC地址用于在局域网中唯一标识和定位网络设备,以确定数据帧的发送者和接收者。交换机等网络设备使用MAC地址来识别数据包的目的地,并将数据包传送到正确的设备。
-
获取:可以通过操作系统的命令行工具(如Windows的ipconfig /all或Linux的ifconfig)来查看设备的MAC地址。通常设备的MAC地址也会印在设备的网卡或路由器上。
-
修改:一般情况下,MAC地址是固定不变的,由设备制造商预先设置。
总的来说,MAC地址在局域网中扮演着重要的角色,用于唯一标识和定位网络设备,是数据链路层通信的基础。
MAC地址仅在局域网中有效
MAC地址仅在局域网中有效。MAC地址是由网络设备的网卡(Network Interface Card,NIC)硬件设备预先分配的,每个设备都有唯一的MAC地址。
在局域网中,设备之间通过MAC地址进行通信和识别。当设备发送数据包时,数据包中包含目标设备的MAC地址,路由器或交换机通过这个MAC地址来确定数据包应该转发到哪个设备。因此,MAC地址在局域网中起到了定位和识别设备的作用。
然而,在不同的网络之间传输数据时,通信会经过多个路由器和网络设备,不同网络之间通常使用IP地址来识别和定位设备。在不同网络之间的通信中,数据包在传输过程中会被封装和解封装,且通常会被路由器剥离原始的MAC地址信息,再根据目标IP地址重新封装数据。因此,MAC地址仅在局域网中有效,在广域网(WAN)或因特网(Internet)等范围更广的网络中,使用IP地址来进行通信和识别设备更为常见。
3.2 以太网的拓扑结构
3.2.1 总线结构
总线结构是一种通信拓扑结构,用于连接多个设备并允许它们之间进行通信。在以太网中,总线结构通常采用集线器(hub)来构建。
当一个设备要发送数据时,它首先在总线上发送数据包。其他所有设备都会收到这个数据包,但由于总线的性质,只有被寻址的目标设备会接收并处理该数据包,而其他设备会忽略它。
在共享介质的网络当中,当多个设备同时尝试发送数据帧时,可能会在介质上发生碰撞。总线结构下的以太网会使用CSMA/CD(载波侦听多路访问/碰撞检测)协议来处理碰撞。当检测到碰撞时,所有设备会停止发送数据并等待一段随机时间后重试发送。
总线结构的以太网通信原理基本与其他拓扑结构的以太网相同,只是在设备连接方面有所不同。总线结构适用于小型网络(因为随着主机数量的增多,发生碰撞的概率也会增大),且其通信原理通过CSMA/CD协议来确保数据的正常传输。
提示:
- 有些抓包工具在数据链路层有所谓的混杂模式,就是将目的MAC地址不是自己的报文也继续向上交付,进而被抓包工具读取到,以实现局域网内监听的功能。
- 可以在总线结构中使用交换机来隔离碰撞域,以达到减少数据碰撞的目的。
3.2.2 星型结构
在星型结构的以太网中,设备通过交换机连接在一起,形成一个星型拓扑结构。每个设备都与交换机直接相连,而交换机负责转发数据包并控制流量。以下是带交换机的星型结构以太网的通信原理:
-
数据发送:当一个设备要发送数据时,它首先将数据包发送到交换机。交换机会根据目标设备的MAC地址将数据包定向转发到目标设备,而不会将数据包广播到所有设备。
-
数据转发:交换机会根据目标设备的MAC地址建立MAC地址表,记录每个设备的位置。当收到数据包时,交换机会查找MAC地址表并确定应将数据包转发到哪个接口,从而实现数据包的直接传输。
-
碰撞检测:在局域网中使用星型拓扑结构可以减少数据碰撞的可能性,但并不能完全避免碰撞的发生。
-
数据冲突处理:即使发生数据冲突,交换机也能实现单个端口的流量控制,避免数据包的丢失或混乱。
总的来说,带交换机的星型结构以太网通过交换机的智能转发和控制能力,实现了高效的数据通信和流量控制。相比于总线结构,星型结构以太网更适合大型网络,因为它提供了更高的性能和可靠性。
星型结构如何处理数据碰撞?
在星型拓扑结构中,所有设备连接到中心交换机或集线器,每个设备之间通过交换机进行通信。由于每个设备与交换机之间是独立的连接,因此在理论上可以减少碰撞的发生。当一个设备向交换机发送数据时,交换机会将数据帧转发给目标设备,而其他设备不会受到影响。
但是,即使是在星型拓扑结构中,如果多个设备同时尝试向交换机(或同一主机)发送数据,仍然存在碰撞的可能性。此时交换机会使用一些技术来处理碰撞,例如缓冲数据、排队处理和优先级调度。因此,虽然星型拓扑结构能够减少碰撞的发生,但并不能完全避免,特别在网络负载较高的情况下仍需要考虑碰撞的问题。
提示:目前无论是企业级还是家庭局域网,一般采用的都是星型拓扑结构。企业局域网一般使用专门的中心交换机级联局域网内的所有网络设备,并通过路由器实现跨网络通信。而在家庭局域网中,家用路由器一饰两角即承担交换机数据帧转发的工作,也负责路由选择,跨网络通信的任务。
【通信知识】什么是以太网(Ethernet)?看完就明白了_哔哩哔哩_bilibili
交换机的核心工作原理 | 集线器、2层交换机和3层交换机的主要区别_哔哩哔哩_bilibili
3.3 最大传输单元MTU
MTU(Maximum Transmission Unit)是指在网络通信中,数据包在通过网络传输时能够承载的最大数据量。以太网是常见的网络通信协议,其MTU通常为1500字节。如果数据包的大小超过了MTU,则需要进行分片处理,将大的数据包分成多个小的数据包进行传输。MTU的大小对网络性能和效率有较大影响,因此在网络配置中通常需要根据网络环境和需求来设置合适的MTU值。
- MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层产生的限制.
- 以太网帧中的数据长度规定最小46字节,最大1500字节(ARP数据包的长度不够46字节,要在后面补填充位),最大值1500称为以太网的最大传输单元(MTU)。
- 不同的数据链路层标准的MTU是不同的; 例如FDDI协议(一种基于光纤传输的局域网技术)的MTU通常为4500字节。
- 如果一个数据包从FDDI网络路由到以太网链路上,数据包长度大于以太网的MTU了,则需要对数据包进行分片(fragmentation);
MTU对IP协议的影响
由于数据链路层MTU的限制,对于较大的IP数据包要进行分片和重组,相关内容在IP协议中已经详细讲过:
- 将较大的IP包分成多个小包, 并给每个小包打上标签:每个小包IP协议头的 16位标识(id) 都是相同的;
- 每个小包的IP协议头的3位标志字段中:第1位保留位始终为0,第2位为1表示不分片,第3位为1表示后续还有更多分片;
- 到达对端时再将这些小包依据IP协议头中的片偏移字段按顺序重组, 拼装到一起返回给传输层;
- 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据;
MTU对UDP协议的影响
- 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.
- 这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据包被丢失的概率就大大增加了.
MTU对于TCP协议的影响
-
TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(MaxSegment Size);
-
TCP在三次握手建立连接的过程中, 通信双方会进行MSS协商.
-
最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).
-
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.
-
MSS的值就是在TCP首部的40字节变长选项中(kind=2);
查看硬件地址和MTU
使用ifconfig命令, 即可查看ip地址(inet), mac地址(ether), 和MTU;
四、ARP协议
4.1 ARP协议的作用
- 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
- 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址;
- ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于将IP地址映射到MAC(物理)地址。在使用IP地址发送数据时,ARP协议负责查询目标主机的MAC地址,并将其映射到对应的IP地址上,以便在局域网中进行通信。
- ARP协议在局域网中起着非常重要的作用,无论是在以太网、Wi-Fi还是其他类型的局域网中,都会使用ARP协议来进行IP地址和MAC地址的映射。因此,了解ARP协议的工作原理和作用对于理解局域网通信是非常重要的。
注意:ARP协议是建立在以太网协议之上的,ARP消息被封装在以太网帧中,通过以太网协议传输,并使用以太网头来确定数据包的源和目的地址。通常,ARP协议被归于链路层。
4.2 ARP协议的工作原理
ARP协议的工作原理可以简要概括为以下几个步骤:
-
当主机A需要与主机B通信时,主机A首先检查自己的ARP缓存表中是否已经存储了主机B的MAC地址。如果有,则直接进行通信;如果没有,则进行下一步。
-
主机A发送一个ARP请求广播消息到局域网上的所有主机,询问哪个主机拥有目标IP地址(主机B)对应的MAC地址。
-
如果主机B在同一局域网上,并且在线,它将收到ARP请求消息,并会回复一个ARP响应消息,包含自己的MAC地址。
-
主机A收到来自主机B的ARP响应消息后,将IP地址和MAC地址的映射关系存储在自己的ARP缓存表中。
-
主机A可以使用得到的目标主机的MAC地址,将数据包封装在以太网帧中,并通过网络传输到主机B。
总结来说,ARP协议的工作原理是通过ARP请求和ARP响应消息来进行IP地址和MAC地址的映射,从而实现局域网内主机之间的通信。ARP协议利用广播消息来查询目标主机的MAC地址,并建立临时的IP地址与MAC地址的映射表,以便进行数据包的传输。
ARP缓存
ARP缓存表(ARP Cache Table)是主机在通信过程中用来存储IP地址和MAC地址之间映射关系的临时表格。每台主机在进行网络通信时,会根据需要动态地更新ARP缓存表中的映射信息,以提高数据传输效率。
具体来说,ARP缓存表中的每一条记录包含以下信息:
-
目标主机的IP地址:表示需要通信的目标主机的IP地址。
-
目标主机的MAC地址:对应目标主机的物理地址,即通信时需要用到的MAC地址。
-
条目的有效期:表示该记录在缓存中的存储时间,一般有一个有效期限制,超过该时间会被删除。
ARP缓存表是在局域网内进行通信时非常重要的数据结构,它可以帮助主机快速建立IP地址与MAC地址的映射关系,从而实现快速高效的数据传输。
ARP缓存条目需要有有效期是为了确保网络数据包能够正常传输,并防止因为缓存中存储了过期或无效的映射信息而导致通信故障。以下是需要设置ARP缓存条目有效期的几个原因:
-
更新IP地址与MAC地址映射:网络拓扑结构可能会发生变化,主机的IP地址可能会改变,或者主机重新加入网络后,其MAC地址可能会有变化。设置有效期可使ARP缓存表定期更新,确保存储的映射信息是最新的。
-
防止缓存占用资源:网络中可能有大量的主机,如果ARP缓存表中一直保留过期的条目,将占用宝贵的资源并影响性能。设置有效期可周期性地清理过期的ARP缓存条目。
-
防止ARP欺骗攻击:ARP欺骗攻击是一种网络攻击手段,攻击者发送伪造的ARP响应消息,将合法主机的MAC地址映射为攻击者的MAC地址,从而窃取网络通信。设置有效期可以减少ARP欺骗攻击的风险,因为缓存中的条目会定期更新。
arp -a
命令在Linux和Windows系统中查看arp缓存
提示:
- 主机的IP地址和子网掩码按位与能得到网络号;ping该网络下的所有IP,就可以得到所有主机的IP和MAC的映射关系
- 如果收到多次arp应答,ARP缓存会更新为最近一次应答所指示的IP/MAC映射关系。
ARP欺骗
ARP欺骗(ARP spoofing)是一种网络攻击技术,也称为ARP缓存投毒(ARP cache poisoning),攻击者通过发送虚假的ARP响应消息来篡改网络中主机的ARP缓存表,从而实现网络数据包的篡改、窃取或劫持。以下是ARP欺骗的工作原理和可能造成的影响:
工作原理:
-
攻击者首先通过发送伪造的ARP响应消息向目标主机发送虚假的IP地址与MAC地址的映射关系,使目标主机误以为攻击者的MAC地址是真正的IP地址的所有者的MAC地址。
-
目标主机接收到虚假的ARP响应消息后,会将误导性的映射信息存储在自己的ARP缓存表中,从而发生“ARP中毒”。
-
一旦ARP中毒成功,攻击者就可以拦截、窃取、篡改或者重放网络中的通信数据包,影响网络通信的完整性和安全性。
可能的影响:
-
窃取用户敏感信息:攻击者可以窃取目标主机发送的敏感信息,如用户名、密码、银行账号等,进而导致个人隐私泄露。
-
网络监听和劫持:攻击者可以拦截网络中的通信数据包,并修改或重定向数据包的流向,影响网络通信的机密性和可靠性。
-
拒绝服务(DoS)攻击:攻击者可以篡改网络中的ARP缓存以导致通信中断,或者使网络资源不可用,实施拒绝服务攻击。
4.3 ARP数据报的格式
ARP(Address Resolution Protocol)数据报的格式包含以下字段:
-
硬件类型(Hardware Type):2个字节,指定硬件地址类型,如以太网(1)。
-
协议类型(Protocol Type):2个字节,指定协议地址类型,如IPv4(0x0800)。
-
硬件地址长度(Hardware Address Length):1个字节,指定硬件地址长度,以字节为单位。
-
协议地址长度(Protocol Address Length):1个字节,指定协议地址长度,以字节为单位。
-
操作码(Opcode):2个字节,指定ARP消息类型,如ARP请求(1)或ARP响应(2)。
-
发送端硬件地址(Sender Hardware Address):变长字段,发送方的硬件地址(MAC地址)。
-
发送端协议地址(Sender Protocol Address):变长字段,发送方的协议地址(IP地址)。
-
目标硬件地址(Target Hardware Address):变长字段,目标硬件地址(MAC地址)。
-
目标协议地址(Target Protocol Address):变长字段,目标协议地址(IP地址)。
ARP数据报的长度取决于硬件地址和协议地址的长度,以及包含的信息数量和字段长度。ARP数据报通常在以太网帧中传输,以太网帧头部包含源MAC地址和目标MAC地址,以便数据帧能够正确发送到目标设备。
重复出现的MAC地址
注意到源MAC地址、目的MAC地址在以太网首部和ARP数据报中各出现一次。尽管ARP数据报中包含硬件地址(MAC地址)和协议地址(IP地址)的信息,但其目的并不是直接传输数据,而是帮助主机解析IP地址到MAC地址的映射关系,从而实现数据帧的正确发送。
在数据链路层的以太网帧中,包含了源MAC地址和目标MAC地址信息,这些信息用来指示数据包的发送和接收者,以太网帧可以通过局域网传输数据。
总的来说,ARP数据报中的硬件地址和协议地址字段以及以太网帧中的MAC地址字段各自在局域网中发挥着不同的作用,共同实现了局域网中数据的传输和地址解析。综合利用这些信息,网络设备能够在局域网中准确、高效地进行通信。