文章目录
- 以太网
- 以太网帧对的格式
- MAC地址
- 对比MAC地址和IP地址
- MTU和MSS
- ARP协议
- ARP协议的工作原理
- ARP欺骗
以太网
”以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
以太网帧对的格式
其中:
- 源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址), 长度是 48 位,是在网卡出厂时固化的;
- 帧协议类型字段有三种值,分别对应 IP、ARP、RARP;
- 帧末尾是 CRC 校验码
MAC地址
- MAC 地址用来识别数据链路层中相连的节点;
- 长度为 48 位, 及 6 个字节
- 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的
对比MAC地址和IP地址
- IP地址是分配给网络设备的逻辑地址,用于在网络层(第3层)进行通信。它可以通过网络管理员手动配置,也可以通过动态主机配置协议(DHCP)自动分配。IP地址用于在广域网(WAN)或互联网中标识设备,支持设备之间的数据传输。IP地址是可变的,在不同的网络中其IP地址可能会不一样。
- MAC地址是网卡的硬件地址,是网络设备的物理标识符。它是由制造商在设备生产时分配的,并且在全球范围内是唯一的。MAC地址通常用于局域网(LAN)中的数据链路层(第2层)通信,用于标识网络中的设备。
- 简单来说,IP地址帮助我们从一个网络到另一个网络,mac地址用于在一个局域网中找到目标设备。
MTU和MSS
MTU是网络中的最大传输单元,MSS是最大报文段长度。
- MTU:网络层能够发送的最大数据包大小(通常是1500字节),以字节为单位。MTU包括IP包头和数据部分,因此它定义了在网络上传输的最大数据帧的总大小。如果传输的数据包大于MTU,数据包就会被分片(fragmentation),从而分成多个较小的包传输。一旦分片就会增加丢包的概率,所以网络层的IP报文不宜设置太大。
- MSS:传输层(TCP)能够处理的最大报文段大小,它仅指数据部分,不包括TCP包头和IP包头。MSS通常由通信双方在TCP三次握手过程中协商确定。通常,如果MTU是1500字节,那么MSS=1500-20(IP报头)-20(TCP报头)=1460字节。
为什么要设置这个MTU呢?这是为了保证网络中的性能。如果每个报文数据太大,容易导致网络拥堵。
使用ifconfig指令可以查看自己主机的MTU
ARP协议
ARP 不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议。用于将IP地址转换为MAC地址。
当一台主机给另一台主机发送数据时,必须先知道对方的MAC地址,因为报文先经过数据链路层。那么ARP协议是如何获取目标IP地址对应的MAC地址的呢?
ARP协议的工作原理
- 当主机A(发送方)需要向主机B(目标方)发送数据时,主机A首先检查自己的ARP缓存中是否已经有目标IP地址对应的MAC地址。如果没有,主机A就会向所在的局域网发送一个ARP请求的广播报文,即同一局域网的所有主机都会收到这个请求。这个ARP请求包含了发送方的IP地址、MAC地址以及目标IP地址。这些数据包含在ARP的报头中。
- 其它主机收到这个ARP请求之后,会先把ARP请求报头解包,然后发现其请求的目标IP不是自己,就丢弃这个报文不做响应。相反,如果目标IP就是自己这台主机,那么目标主机B就会发送一个ARP响应报文,告知主机A自己的mac地址。由于通过请求已经知道了主机A的mac地址,所以发送响应时就把这个mac地址作为目标mac地址直接发送给主机A。
- 主机A收到ARP应答之后,在数据链路层解包,获取目标主机的mac地址。然后更新自己的ARP缓存,说白了就是存下一个目标IP和mac地址的映射,下一次要找主机B的mac地址就直接往这里面拿就行了。
下面是ARP数据报的格式:
其中
- 硬件类型指链路层网络类型,1 为以太网;
- 协议类型指要转换的地址类型,0x0800 为 IP 地址;
- 硬件地址长度对于以太网地址为 6 字节;
- 协议地址长度对于和 IP 地址为 4 字节;
- op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答
ARP欺骗
ARP协议本身没有安全机制,所以很容易受到中间人的攻击。攻击者可以发送伪造的ARP响应,导致网络中的设备将攻击者的MAC地址与某个合法IP地址关联,从而拦截或篡改数据。
防御措施:为了防止ARP欺骗攻击,网络管理员可以使用静态ARP表、ARP防火墙或使用更高级的网络安全协议(如IPsec)来保护网络通信的完整性。