网络链路层之(1)基础概念
Author: Once Day Date: 2024年3月27日
一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…
漫漫长路,有人对你微笑过嘛…
全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CSDN博客。
参考文章:
-《TCP/IP详解卷一》
文章目录
- 网络链路层之(1)基础概念
- 1. 概述
- 1.1 介绍
- 1.2 常见实现
- 1.3 TCP/IP协议族中作用
- 2. 环回接口
- 3. 最大传输单元(MTU)
- 4. 常见数据链路层隧道协议
- 5. 常见链路层攻击
1. 概述
1.1 介绍
数据链路层,将网络层交下来的IP数据报组装成帧(frame),在两个相邻的链路节点上传输。该层还可以对帧进行检错甚至纠正。
数据链路层主要使用两种类型的信道:
-
点对点信道,使用1对1的通信方式。
-
广播信道,使用1对多的广播通信模式。
**链路(link)**是从一个结点到相邻结点之间的一段物理线路,中间没有任何其他的交换结点。
数据链路(data link),在链路通信,所需要的硬件和软件协议,总和在一起就构成了数据链路。也就是现在所属的网络适配器。
数据链路层无需考虑物理层传输的细节,直接抽象成沿水平方向传递数据就好。
数据链路层的协议必须考虑三个问题:
-
封装成帧,在一段数据前后分别添加首部和尾部,进行帧定界。当检测到帧接收不完整时,可以直接丢弃。
-
透明传输,需要对数据里可能涉及帧定界字符的字符进行转义,即字节填充或字符填充。这些数据对于数据链路层的协议来说就是透明的。
-
差错控制。通信线路并非理想,传输过程可能出现差错。数据链路层广泛使用循环冗余校验CRC来进行检错。
差错检测只是保证接受的帧几乎没有错误,但是还是会出现帧丢失、失序、重复等问题,因此是不可靠传输。
但对于通信质量较差的无线传输链路,数据链路层使用确认和重传机制。
但有线传输的通信质量已经挺好了,不确认、不重传可以提高效率。
数据链路层网络中,协议数据单元PDU的大小是有限制的,以太网中为1500,PPP协议保持兼容一般也为1500.
该限制特征被称为最大传输单元MTU,在包含所有链路的整个网络路径上,最小MTU称为路径MTU。
1.2 常见实现
通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
-
在相邻节点间提供数据传输服务,成帧、物理寻址、流量、差错、接入控制。
-
局域网:IEEE802.2定义LLC子层(数据链路层),IEEE802.3的以太网标准,802.3标准定义了物理层和数据链路层的MAC子层。
-
广域网:HDLC、PPP、Frame Relay
1.3 TCP/IP协议族中作用
在TCP/IP
协议族中,链路层主要有三个目的:
(1)为IP
模块发送和接收IP
数据报;
(2)为ARP
模块发送ARP
请求和接收ARP
应答;
(3)为RARP
发送RARP
请求和接收RARP
应答。
2. 环回接口
在计算机网络中,环回接口是一个特殊的逻辑接口。它常常用于测试和诊断。在Linux操作系统中,环回接口被称为lo
,它允许计算机与自己通信。可能听起来有点像科幻小说中的自言自语,但这其实是一个非常实用的功能。环回接口有一个标准的IP地址,通常是127.0.0.1
,这个地址被大家熟知地称为“localhost”。
当在Linux系统上运行网络服务,如Web服务器或数据库服务器时,环回接口就发挥了作用。开发者在本机上测试服务是否正常运行时,会访问127.0.0.1
。这样,他们就不必担心网络配置的问题,可以专注于服务的功能性测试。因为网络数据包在没有离开主机的情况下,就被送达并返回,这就像是给自己写信并立刻收到回信一样。
环回接口不仅仅用于测试,它也是网络配置的一个重要组成部分。例如,很多安全策略和系统配置规则会特别考虑到环回流量,确保它不会被错误地过滤或重定向。此外,环回地址也常常用作预留地址,用于软件配置中指代本机。
值得一提的是,环回接口的工作方式确保了它是极其高效的。由于数据不需要经过任何物理网络设备,环回流量几乎没有延迟,也不会占用实际的网络带宽。这就像是用内部邮件系统代替了外部邮寄,相比之下快捷而高效。
但是,环回接口也有其局限性。显而易见,它不能用于与网络上的其他设备通信。此外,如果网络服务配置不当,仅监听环回地址,那么它将无法接受来自其他设备的连接请求。
本地环回口通常有以下的属性:
- IPv4地址一般为
127.0.0.1
,子网掩码255.0.0.0
,Linux默认为lo
口,Windows中默认没安装Microsoft环回适配器。 - IPv6中只有地址
::1
地址被定义用于环回。 - 接口MTU一般为16KB,也可以配置得更大(最大2GB)。
下面是Ubuntu设备lo口详情:
ubuntu->~:$ ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 6985873 bytes 3023510986 (3.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6985873 bytes 3023510986 (3.0 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3. 最大传输单元(MTU)
在网络通信中,MTU(Maximum Transmission Unit,最大传输单元)是指在网络层上可以传输的最大数据包大小。每种网络技术都有其标准的MTU值。例如,以太网的常规MTU大小是1500字节。
这个参数至关重要,因为它决定了数据包的传输效率和网络的拥塞状况。如果一个数据包的大小超过了网络的MTU,它就需要被分割成更小的片段以便传输,这个过程称为分片。分片可能会增加延迟和处理开销,因为每个片段都需要在目的地被重新组装。
而路径MTU(Path MTU,路径最大传输单元)则是指在数据包传输路径上所有网络段中MTU的最小值。这个概念是为了解决数据包在传输过程中可能遇到的不同MTU限制的问题。
路径MTU发现(PMTUD,Path MTU Discovery)是一种机制,它允许网络设备发现从发送端到接收端之间路径上的最小MTU值,以避免分片。
这个机制通过发送一个设置了“不分片”(DF)标志的IP数据包来工作,如果这个数据包太大而无法通过网络的某个段,那么这个段就会丢弃该数据包,并发送一个ICMP(Internet Control Message Protocol,互联网控制消息协议)的“不能分片的错误”消息回发送端,通知它路径MTU的限制。
4. 常见数据链路层隧道协议
数据链路层的隧道协议允许网络流量在第三层(网络层)以下进行封装,从而在两个相隔较远的网络节点之间建立一个逻辑链接。这些隧道协议通常用于VPN(Virtual Private Network,虚拟专用网络)的构建,以确保数据传输的安全性和私密性。以下是一些常见的数据链路层隧道协议的简要介绍:
-
点对点协议(PPP):PPP是一种用于在点对点链路上封装网络层数据包的数据链路层通信协议。它支持多种网络层协议,如IP和IPX,并且能够提供认证,如PAP(Password Authentication Protocol)和CHAP(Challenge-Handshake Authentication Protocol)。
-
点对点隧道协议(PPTP):PPTP是一种用于实现VPN的隧道协议,它使用了PPP协议的封装方法,并在TCP/IP网络中创建一个虚拟隧道。PPTP允许用户通过互联网以加密的形式安全地访问公司网络。
-
第二层隧道协议(L2TP):L2TP结合了PPTP和L2F(Layer 2 Forwarding Protocol)的特点,通常与IPSec(Internet Protocol Security)结合使用,以提供隧道的机密性、发送者身份认证和数据完整性。L2TP本身不提供加密,但它创建了一个隧道,IPSec负责数据包的加密。
-
安全套接字隧道协议(SSTP):SSTP是微软开发的一种隧道协议,它通过HTTPS在客户端和服务器之间建立VPN连接,可以穿越防火墙和NAT(Network Address Translation)设备。SSTP提供了高级的加密功能和较好的兼容性。
-
以太网隧道协议(EtherIP/L2TPv3/VXLAN):EtherIP、L2TP版本3和VXLAN是用于在IP网络上隧道传输以太网流量的协议。它们允许跨越不同的网络基础架构传输以太网帧,并常用于数据中心网络虚拟化。
在选择隧道协议时,网络设计师需要考虑多种因素,如安全性、性能、网络环境的兼容性以及部署的复杂性。例如,尽管PPTP易于设置,但它的安全性已不再被认为是可靠的,因此现代VPN更倾向于使用L2TP/IPSec或SSTP。隧道协议的选择也要适应网络的长期发展,以应对快速变化的网络安全威胁和不断升级的技术标准。
5. 常见链路层攻击
链路层是OSI模型中的第二层,负责在相邻网络节点间的数据帧传输。这一层涉及的协议和硬件设备,如以太网、无线局域网(WLAN)和交换设备,都可能成为攻击者的目标。链路层攻击通常利用链路层协议的缺陷或设计上的缺陷来进行。以下是一些常见的与链路层有关的攻击类型:
-
MAC地址欺骗(MAC Spoofing):攻击者通过改变其网络接口的MAC(Media Access Control)地址来模仿其他设备。这可以导致多种攻击,如身份冒充、网络访问控制规则绕过等。
-
ARP欺骗(ARP Spoofing):主要针对IPv4网络,攻击者发送伪造的ARP(Address Resolution Protocol)消息,将自己的MAC地址与网络中另一个设备的IP地址关联起来。这可以导致中间人攻击,攻击者能够截获、修改或阻断两个设备之间的通信。
-
VLAN跳跃(VLAN Hopping):攻击者尝试从一个VLAN(Virtual Local Area Network,虚拟局域网)跳转到另一个VLAN,以绕过网络分段带来的安全控制。比如,通过双重封装802.1Q标签的方法来欺骗交换机,将数据包发送到不同的VLAN。
-
DHCP欺骗(DHCP Spoofing):攻击者设置一个假的DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器,对网络内的设备分配IP地址。这可以让攻击者控制受害者设备的网络配置,进行中间人攻击或是网络流量重定向。
-
无线网络攻击(Wi-Fi Attacks):在无线网络中,攻击者可能会尝试破解WEP(Wired Equivalent Privacy)或WPA(Wi-Fi Protected Access)密码,进行无线网络监听或未授权访问。此外,还包括“邪恶孪生”(Evil Twin)攻击,攻击者设置一个假的无线接入点来欺骗用户,诱使他们连接并窃取信息。
-
LLC层攻击(LLC Layer Attacks):在逻辑链路控制(Logical Link Control)层,攻击者可能利用特定的LLC报文格式或流控制机制进行拒绝服务攻击或数据篡改。
要防御这些攻击,网络管理员需要采取多种安全措施,例如使用端口安全功能限制MAC地址的更改,配置动态ARP检查,使用VLAN访问控制列表(ACLs),部署加密无线网络以及监控网络流量以检测异常行为。
Once Day
也信美人终作土,不堪幽梦太匆匆......
如果这篇文章为您带来了帮助或启发,不妨点个赞👍和关注,再加上一个小小的收藏⭐!
(。◕‿◕。)感谢您的阅读与支持~~~