IP 分片的原因及相关报文控制字段
-
因为不同的链路类型对应的网络层MTU可能不一致,会导致发送方发出的最大尺寸数据包超出接收方的 MTU。为了避免因超出 MTU 而导致的数据包无法接收处理、所以需要对数据包进行分片
-
IP报文中有3个字段对分片进行控制
-
ID 字段是标识符,用于标识该分片来自哪一个数据包
-
Flag 字段有3个标志位。第一个标志位保留,第二个标志位标识数据包是否禁止分片(0允许),第三个标志位标识该分片是否为最后一个分片(0最后一个)
-
FragmentOffset 是分片偏移,用于描述该分片在完整数据包中的位置和重组顺序
-
-
MTU:
-
最大传输单元,它是数据链路层的概念,指以太网数据通信时,链路层上一次性允许通过或转发的数据帧的最大尺寸。MTU值一般以字节为单位
-
MTU值决定了网络中一次性传输的数据量大小:
-
如果MTU设置的过大,意味着所能一次性传输的数据包中的有效数据占比更大,通信效率更高,但同时也会加大传输延时和出错概率,降低传输可靠性,传输出错后重传还会耗费较大的网络资源。
-
如果MTU设置的过小,对于较大尺寸数据包需要进行分片处理,增加数据包处理量,且分片和重组过程还会增加额外的资源消耗,加重网络传输的负担。
-
-
-
PMTU:
-
路径MTU,值等于路径上的最小MTU值
-
-
IP报文:
-
version(版本):4bit,标识IP报文的版本信息(0x6-ipv6 0x4-ipv4)
-
IHL(包头部长度):4bit报头长度不固定,必须为4的倍数
-
Type of service(Tos域):8bit,QoS服务等级,区分报文转发优先级
-
Total length(数据包总长度):16bit整个IP报文长度
-
identification(标识符):16bit,重组网络id标识符,标识分片来自哪个数据包
-
flags(标志):3bit
-
首位:无意义
-
中间两位:标识数据包是否禁止分片DF ; 0(允许分片)1(不允许分片)
-
末位:标识是否为最后一个分片MF; 0(最后一个)1(后面还有)
-
-
fragment offset(分片偏移):13bit;分片在数据包中的位置和重组顺序
-
time to live(TTL):8bit;存活时间;
-
当IP包在一个网络中运动时,每经过一台三层设备(解封装/封装)就会被改写该字段就会被路由器减1,减至0则会被直接丢弃 ; 如果没有TTL机制,网络中存在环路时IP报文会无限循环消耗大量网络资源
-
-
protocol(协议):8bit;标识上层协议
-
header checksum(头部校验和):16bit;头部校验序列用于头部信息差错校验
-
source address(源IP)
-
destination address(目标IP)
-
options(选项/长度填充):字段长度可变,保证整个报文的头部长度刚好是4字节的整数倍
-
padding(填充)
-
-
MTU能够修改吗?为什么要修改(什么应用场景)
-
协议上封装上额外的报头,可以调整MTU避免分片
-
分片会降低有效载荷,消耗设备资源
-
使得接口MTU和路径的MTU匹配
-
-
IPv4和IPv6分片的区别:
-
IPv4:逐跳分片
-
IPv6:PMTU检测出最小的MTU,源端分片,目标重组,效率高
-
-
链路两端MTU不一致对协议的影响:
-
对OSPF的影响:
-
会使得邻接建立失败,在DD报文中会携带MTU参数(MTU检测没有关闭)
-
-
对IS-IS的影响:
-
邻居建立失败
-
-
对BGP的影响:
-
不会直接影响BGP邻居的建立(MTU参数不在Open包中携带)
-
BGP update报文基于TCP更新数据,两个不同的AS区域的MTU不一致,MTU大的一端向另一端发送大量的更新,小的一段无法处理,重传多次未得到确认信息,抑制keepalive报文的发送,3个周期后主动断开邻居关系;导致邻居抖动(震荡,翻滚)
-
-
ARP、RARP、免费 ARP 协议原理和使用场景
-
ARP 是地址解析协议,用于根据目的IP地址来解析出 MAC地址,进行二层通讯。工作原理是通过广播发送ARP查询请求来请求目的IP的MAC地址,与发送方处于同一广播域的主机收到该请求后,如果确认查询的IP是本机,则单播回应本机的 MAC 地址,如果发现查询的IP不是本机,则不回应;发送方接收到 ARP 回应后,把该IP 和 MAC 地址写入本机 ARP 缓存表,下次再与该 IP 进行二层通讯,则直接使用表中的记录来进行
-
ARP 的使用场景分两种情况
-
如果目的 IP 和本机 IP 属于同一网段,则 ARP 请求查询的就是目的 IP 的MAC 地址
-
如果目的IP 和本机IP不属于同一网段
-
当本机存在到达目的IP的路由时则 ARP 请求查询的就是该路由下一跳的 MAC 地址;
-
如果没有明细路由,就请求查询缺省路由下一跳(也就是网关)的 MAC地址
-
-
-
RARP 是逆向 ARP 协议,用于根据本机的 MAC 地址来查询出本机的IP 地址一般常见的场景是用于无盘工作站,无盘终端需要通过自己的 MAC 地址向服务器请求IP 地址后才能进行系统引导
-
免费 ARP 是主动使用自己的IP 地址作为目标地址发送 ARP 请求
-
免费ARP主要作用有三种
-
用于检查网络中是否有主机和本机IP地址重复:给以太网接口设置IP地址时会自动发送免费ARP报文,在 DHCP场景客户端在使用 DHCP服务器分配的IP地址时、也会发送一个免费ARP 报文进行地址的冲突检测
-
用于通告本机新的 MAC地址:当主机更换了网卡,改变了自己的MAC地址后、为了保证网络的可靠性,有必要在 ARP 表项老化之前,及时向网络中其他设备通告自己的 MAC地址的变化。
-
在 VRRP 备份组中通告主备发生变化:在VRRP 备份组中,当主备设备发生倒换的时候,新的主设备需要及时向同一网段中的其他设备通告自己状态的变化。
-
-
-
ARP报文
-
以太网头部:
-
目的MAC地址:请求报文为全F,应答报文为请求端MAC
-
源MAC地:请求报文为请求端,应答报文为被请求端
-
-
-
硬件类型:1表示以太网
-
协议类型:0x0800表示IP地址
-
硬件地址长度/协议地址长度:6/4
-
操作类型(OP):1表示ARP请求,2表示ARP应答
-
发送端MAC地址
-
发送端IP地址
-
目标MAC地址
-
目标IP地址
-
-
ARP表:
存放IP地址和MAC地址的映射信息;当一台设备需要向目的设备发送单播帧时,首先会查看自己的ARP表中是否有目的设备的MAC地址,如果有直接使用,如果没有就发起ARP请求它;
-
动态ARP表:
-
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。
-
一个条目,从建立或最近一次被使用算起,默认180s生存期,过了就会删除;某个条目再次被使用就会重新设置为180s;
-
-
静态ARP表:
-
通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖
-
静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信
-
-
ARP的实现过程
-
同网段内
-
-
PC3查看自己的ARP缓存表,发现没有主机PC4的IP和MAC映射关系
-
于是PC3向外发送响应报文
-
ARP请求报文 (源IP:PC3 / 目的IP:PC4 / 源MAC:PC3 / 目的MAC:全0)
-
以太网帧 (源MAC:PC3,目的MAC:广播MAC地址)
-
-
S1收到后,在报文本网段内广播
-
R1收到后,发现目的IP不是自己,不会回应,更新ARP表,把PC3的MAC添加到ARP表中,丢弃报文
-
PC4收到ARP请求后,更新自己的ARP表,将PC3的MAC地址添加到ARP表中,同时向ARP请求方PC3发送响应报文
-
ARP回应报文(源IP:PC4 /目的IP:PC3 /源MAC:PC4 / 目的MAC:PC3)
-
以太网帧(源MAC: PC4 / 目的MAC: PC3)
-
-
S1收到后,根据目的MAC转发给PC3
-
PC3收到ARP响应报文后,更新自己的ARP表,将PC4的MAC添加到ARP表中,同时将数据发送给PC4
-
不同网段:
-
-
PC3和PC5不在同网段,查询网关MAC地址
-
PC3查询自己的ARP表,发现没有网关R1上G0/0的IP地址和MAC映射关系
-
于是PC3发送相应报文
-
ARP请求报文(源IP:PC3 / 目的IP:R1上G0/0 源MAC: PC3 / 目的MAC:全0)
-
以太网帧(源MAC: PC3 / 目的MAC:广播MAC)
-
-
S1收到后,在该网段内广播
-
R1的接口G0/0收到ARP请求后,更新自己的ARP表,将PC3的MAC地址添加到ARP表中,同时向ARP请求方PC3发送相应报文
-
ARP响应报文(源IP:R1g0/0 目的IP:PC3 / 源MAC:R1g0/0 目的MAC:PC3 )
-
以太网帧(源MAC:g0/0 / 目的MAC:PC3)
-
-
S1收到后,将报文转发给PC3
-
PC3收到后,更新自己的ARP表,将R1的MAC地址添加到ARP表中,同时发送数据给R1;
-
免费 ARP 的报文结构
-
免费 ARP 报文是一种特殊的 ARP 报文,该报文中携带的源IP 地址和目的IP 地址都是发送方的IP 地址。
-
-
免费ARP报文和ARP报文的区别:
-
免费ARP sender ip和target ip一样
-
ARP请求报文结构
ARP 应答报文的结构
Ping 功能工作原理和 Tracert 功能工作原理
-
在做业务测试或者验证的时候常用的命令有哪些?
-
Ping 用于检测网络连通性
-
工作原理:源主机向目的主机发起ICMP echo-request报文;目的主机收到报文后会向源主机发送ICMP echo-reply报文。在规定的时候间内,源主机如果没有接到ICMP的应答包,则说明目标主机不可达;如果接收到了 ICMP 回送响应消息,则说明目标主机可达。此时,源主机会检查,用当前时刻乘去该数据包最初从源主机上发出的时刻,就是ICMP 数据包的时间延迟
-
-
Tracert 用于跟踪数据包经过的路由器
-
基于 ICMP 报文的工作原理:
-
源主机向目的主机第一次发送TTL值为1的echo-request 报文,该报文在到达第一个路由器时就因为TTL 值耗尽而丢弃,此时该路由器会向源主机返回一个ICMP 超时报文; 源主机收到后会向目的主机第二次发送TTL值为1的echo-request 报文,该报文在到达第一个路由器时就因为TTL值耗尽而丢弃,此时该路由器会向源主机返回一个 ICMP 超时报文; 源主机收到后会向目的主机第三次发送 TTL值为1的echo-request报文,该报文在到达第一个路由器时就因为TTL 值耗尽而丢弃,此时该路由器会向源主机返回一个 ICMP 超时报文;
-
源主机收到后会继续发送 TTL 值+1的 echo-request 报文,每次都会重复发送 3 次相同TTL值的报文,直到到达目的主机为止,目的主机会回复 echo-replay 报文。最后源主机就会把沿途经过的路由器的地址依次输出显示。
-
-
基于 UDP 报文的工作原理:
-
源主机向目的主机发送 TTL值为1的 UDP 端口在 30000 以上的报文(常见的 UDP 33434),该报文在到达第一个路由器时就因为 TTL值耗尽而丢弃,此时该路由器会向源主机返回一个 ICMP超时报文;源主机收到后会向目的主机第二次发送 TTL值为1的 UDP 端口在 30000 以上的报文,该报文在到达第一个路由器时就因为 TTL 值耗尽而继续丢弃,此时该路由器会继续向源主机返回一个ICMP 超时报文;主机收到后会向目的主机第三次发送TTL值为1的 UDP 端口在 30000 以上的报文,该报文在到达第一个路由器时就因为TTL值耗尽而丢弃,此时该路由器会继续向源主机返回一个ICMP 超时报文;
-
源主机向目的主机发送 TTL值为在上一次基础上+1的 UDP 端口在 30000 以上的报文,每个相同 TTL值的报文重复发送3次;在多次叠加 TTL之后,如果数据包到达目的地,则将数据发送给UDP端口在:30000 以上的进程,因为本地没有提供该端口服务,此时该路由器会向源主机返回一个ICMP 端口不可达的报文
-
-
tracert怎么判断包已经到达了目标设备呢?
-
ICMP回复ICMP超时,UDP回复端口不可达
-
-
TCP 传输确认机制工作原理
-
TCP头格式:
-
源端口:通信初始化端口,随机生成,标识报文的返回地址
-
目的端口:定义传输的目的,指明接收方计算机上的应用程序接口
-
序列号:大的数据分成小的数据段;
-
标识TCP源端向目的设备发送的字节流,表示这个报文段中的第一个数据字节;对每个字节进行计数,第一个序列号随机,后面必须连续
-
-
确认号:
-
标识期望收到下一个段的第一个字节,并声明此前数据都已经正确无误的收到;确认号是上一次成功收到的数据字节序列号加1
-
收到确认号的源主机会直到特定段已经被收到,字段只在ACK标志设置时才有效
-
-
控制位
-
URG紧急指针字段标志
-
ACK确认字段标志:数据包是否含有确认性质,一般第一个数据包没有,后面都有
-
PSH:请求紧迫位,尽快处理
-
RST重置连接
-
-
窗口:流量控制,动态调整窗口大小
-
-
端口号:
-
TCP/UDP采用端口号标识上层的应用程序,使得这些程序可以复用网络通道;IP协议用6标识TCP,17标识UDP
-
TCP/UDP端口号访问0-65535;1-1023给众所周知的服务使用,大于1023的端口没有统一管理
-
-
TCP 协议通过传输确认机制来维护数据传输的可靠性,原理如下:(传一批确认一批)
-
A主机向 B主机发送的第一个 TCP 报文,会随机产生 Seq-Number(序列号)一次发送多个数据分段的话,除第一个以外的 TCP 报文的 Seq-Number是上一个报文的 Seq-Number+报文数据的长度
-
B主机收到TCP 报文后,会对收到的报文进行差错校验,校验无误后,在向A主机回复的TCP报文中,产生Ack-Number(确认号)为收到的最后一个报文的 Seg-Number+报文数据长度、并也会随机产生 B主机自己的Seg-Number
-
A 主机收到 B主机回复的报文后,通过报文的Ack-Number就能够确认上一次自己发送的报文是完整无误的,并同时也对收到的报文进行差错校验,校验无误后,在下一次向B主机发送的TCP 报文中携带 Seq-Number 为上一次收到的B主机报文的 Ack-Number,并携带 Ack-Number 为上一次收到的 B主机最后一个报文的 Seq-Number+报文数据长度
-
如果在传输过程中,因为没有收到,或差错校验发现某一个 TCP 数据报文不完整,就会在下一次向对方发送的报文中携带 Ack-Number 为错误报文的 Seq-Number;对方收到后,会把该报文进行重传,重传确认无误后,再向对方发送正确的 Ack-Number 继续向后发送
-
-
重传:
TCP 连接建立与断开的工作原理
-
TCP连接的建立:三次握手方式建立可靠连接,SYN来描述一个连接的三次握手消息
-
过程:
-
主机A向主机B发送:SYN(seq=a)
-
SYN置位1,序列号seq随机a
-
主机B收到消息检查数据包SYN置位1--A在向我建立连接
-
-
主机B向主机A发送:SYN(seq=b,ack=a+1)
-
SYN置位1,序列号seq随机b; ack置位1--有确认性质;
-
主机B收到数据包,SYN置位1--B在向我建立连接,确认号a+1代表a+1前的所有都已经全部收到,下次发送信息以a+1开始发送
-
-
主机A向主机B发送:SYN(seq=a+1,ack=b+1)
-
发第二次数据a+1开始 ; 确认b+1前的所有都已经全部收到,下次发送信息以b+1开始发送
-
-
-
TCP 连接断开有 2种方式
-
四次挥手方式:
-
主机A发送FIN(seq=p),FIN置位1代表终止连接信息
-
主机B发送ACK(ack=p+1),ack置位1确认p+1之前终止
-
主机B发送FIN(seq=q),FIN置位1代表终止连接信息
-
主机B发送ACK(ack=q+1),ack置位1确认q+1之前终止
-
-
Reset 强行断开
-
当因为网络故障无法完成四次挥手时,可以通过直接发送 RST 置位的报文来断开TCP 连接;发送或收到 RST报文,都会立即断开 TCP 连接
-
-
为什么TCP 握手一定是3次,2次行不行
-
不行。因为TCP 连接建立的目的是为了让通讯双方互相确认,2次握手只能完成单方确认
-
-
TCP 滑动窗口机制
-
TCP 滑动窗口机制是为了实现流量控制的一种方式。当双方吞吐量不一样,就会导致一边快一边慢,容易形成网络拥塞,所以需要进行控制。工作原理如下
-
A 主机向 B 主机一次发送了4个长度为 1024的数据分段,总长度4096
-
B 主机吞吐量只能处理 2048 的长度,所以就会在下次发送给A的报文中携带 Window 字段为 2048
-
A 主机收到后,下次向 B主机就只发送2个长度为1024的数据分段,总长度 2048,符合B 主机的吞吐量
-
TCP与 UDP 的区别与适用场景
-
TCP 属于有连接,可靠的通讯协议,有各种可靠性机制来维护数据传输的可靠性;但是这些可靠性机制也会导致需要消耗更多的资源来处理,会引入更大的时间延迟。所以TCP 适用于对数据完整性有要求,但对传输延迟不敏感的通讯比如文件下载,邮件传输
-
UDP 属于无连接通讯,也没有任何可靠性机制,无法保障数据传输的完整性但相应的也更节省资源,处理和传输的延迟都更小。所以 UDP 则适用于对延迟敏感,但是对数据完整性要求不高的通讯。比如语音和视频的即时通讯。在某些情况下,如过对UDP 的通讯也有数据完整性要求,可以通过在其他层来完成
数据报文长度的问题
-
IP 头部长度在 20-60 字节之间,且头部长度必须是4字节的倍数,当头部长度不是4字节的倍数时,会在Padding 字段填充0来达到4字节的倍数
-
以太网帧头部和尾部的长度是 18 字节,帧总长度是18 字节+P报文长度,所以如果接口的 MTU是 1500 字节的话,那么以太网帧的最大长度就是 1518 字节;但是以太网的每个帧前还有8今节的前导码,标识一个以太网顿的开始,所以算上前导码,最终实际最大长度应该是1526 字节
-
TCP 头部长度在 20-60 字节之间,且头部长度必须是4字节的倍数,当头部长度不是4字节的倍数时,会在Padding字段填充0来达到4字节的倍数
-
基于上面的描述,如果一个长度 1000 字节数据信息要以 TCP 协议在以太网上传出的话,实际上接口总共需要发送的数据长度为:1000+20(TCP 头部)+20(F头部)+18(以太网帧头部和尾部)+8(前导码)=1066 字节
-
如果接口 MTU 是默认的 1500 字节,那么当数据内容+TCP 头部+IP 头部的长度超出 1500 字节时,且允许被分片,数据包将被分片处理
一个接口是否可以配置多个IPV4 地址?是否可以配置多个 IPv6 地址?
-
一个接口可以配置一个主 IPv4 地址,还可以另外同时配置多个子 IPv4 地址都能同时生效
-
一个接口可以同时配置多个 IPv6 全球单播地址,且会自动产生一个链路本地地扯
二层和三层的排错思路
-
二层是交换机基于 MAC 转发的,所以如果二层不通,考虑交换机的问题。比如 VLAN 和接口类型配置有误、MAC 地址学习有问题、二层出现环路导致广播风暴、链路聚合不通、是否配置了基于 MAC 的 ACL等等。另外如果做了错误的 ARP 静态绑定也会导致二层不通
-
三层是路由器基于IP 转发,所以三层不通要考虑的是IP 和路由的问题,比如IP 地址是否配置正确、是否具有双向互通的路由、路由的指向是否正确、是否配置了 ACL过滤了数据包等等。另外三层要通的前提是二层连通,所以三层的排错要首先排除二层的问题
ARP 如果出现广播风暴可以用什么技术来解决
-
使用生成树协议。您可以在交换机上启用生成树协议(STP)或其改进版本(RSTPPVSTP、MSTP 等),来防止网络中出现环路,从而避免广播包在环路中不断复制和转发。生成树协议可以动态地检测和消除环路,保证网络拓扑的无环性
-
使用 VLAN 划分。您可以将网络划分为多个虚拟局域网(VLAN),来隔离不同的广播域,减少广播包的数量和范围。VN 可以在三层交换机或网关设备上进行配置,使得户播包不能跨越VLAN 边界,从而抑制广播风暴的产生
-
使用 ARP 广播报文抑制。您可以在VXLAN 二层网关设备上使能广播抑制功能,来抑制 ARP 广播请求报文给网络带来的广播风暴。当设备收到 ARP广播请求报文时,会检查本地 ARP 缓存表和 VXLAN 二层转发表,如果能够找到目的IP地址对应的 MAC地址,则直接回复 ARP 响应报文,并丢弃 ARP 请求报文;如果不能找到,则正常转发 ARP 请求报文。这样可以减少网络中泛洪的 ARP 请求数据。
-
流量抑制/风暴控制:限制接口收到广播帧的数量
-
使用 Keepalived。Keepalived 是一个基于 VRRP 协议来实现的LVS 服务高可用方案,可以利用其来解决单点故障。一个LVS服务会有两台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。
CMSACD 的侦测时间为多少,什么情况下不会再侦测了
-
侦测的退避时间一般是 51.2 微秒。
-
侦测 16 次、线路仍然被占用将不再侦测,放弃发送数据。
ARP 攻击的原理
-
ARP 是通过广播发送查询请求,所以会导致未被请求的主机也收到查询消息。而后未被请求的主机伪造 ARP 应答消息发送给请求者,从而使请求者解析到错误的 MAC 地址,称为 ARP 攻击。
-
假设 A主机想要解析B主机的 MAC 地址,A主机发送广播查询请求,被属于同一广播域的C主机收到了。C会伪造一条 ARP 应答消息发送给A,通告B的IP 地址对应的 MAC 地址是C。而ARP 协议并没有判断应答消息真伪的能力所以就会认为B的IP 地址对应的MAC地址是C,从而把所有发往B的数据实际上都会发往 C。
如何防御 ARP 攻击
-
在 PC或网关设备上静念绑定ARP 映射关系,防止被 ARP 欺骗。在接入交换机的映射关系,对源IP 和源 MAC上配置 IPSource Guard,绑定正确的IP 和 M不配映射关系的报文进行丢弃。
-
在接入交换机上通过DHCP Snooping 表项中IP和MAC的对应关系来检查收到的源IP和源MAC是否正确,对于不正确的报文进行丢弃
-
在接入交换机上通过DHCP Snooping表项中IP和MAC的对应关系来检查收到的源IP地址和源MAC是否正确,对于不正确的报文进行丢弃
-
在接入交换机的端口上配置 ARP 限速,一旦发现收到大量 ARP 报文,则判断收到了 ARP 致击,就关闭该端口,不再接收任何报文
普通代理ARP和本地代理ARP的区别
-
代理ARP:如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理ARP功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)
特性 | 本地ARP代理 | 普通ARP代理 |
---|---|---|
适用环境 | 同一vlan内不同子网的设备之间通信 | 不同子网之间,通常跨VLAN或跨三层网络。 |
数据包转发 | 仅限于同一VLAN内的ARP请求;在二层转发 | 跨广播域的ARP请求;在三层转发 |
配置 | 在交换机的vlan接口上启用;arp-proxy enable | 在路由器或者三层交换机的接口上启用;arp-proxy enable |
-
普通代理ARP:
-
场景:想要互通的同网段主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。
-
在R1上启用代理ARP后,R1可以应答PC1的请求,R1相当于PC2的代理,把从其他主机发送过来的报文转发给它;
-
-
在这种组网情况下,当PC1需要与PC2通信时,由于目的IP地址与本机的IP地址为同一网段,因此PC1广播发送ARP请求报文,请求PC2的MAC地址。但是,此时的两台主机处于不同的广播域中,PC2无法收到PC1的ARP请求报文,当然也就无法应答。
-
通过在R1上启用代理ARP功能,可以解决此问题。启用代理ARP后,R1可以应答PC1的ARP请求。同时,R1相当于Host B的代理,把从其他主机发送过来的报文转发给它。
-
- PC1检查目标IP地址发出ARP请求: - 目的IP和本机的IP为同一网段,PC1直接发出ARP请求,请求PC2的MAC地址; - R1拦截ARP请求: - R1启用了代理ARP功能,拦截PC1的ARP请求,R1检查目标IP地址发现属于另一个子网,并且可以通过G2/0接口到达 - R1代替响应ARP请求: - R1用自己的G1/0接口的MAC地址响应PC1的ARP请求,PC1收到响应后,将数据包的目的MAC地址设置为G0/1接口的; - PC1转发数据包: - PC1将数据包发送到R1的G1/0接口,R1收到数据包后检查目标IP地址,通过G2/0转发 - PC2收到数据包: - PC2收到数据包后,处理并且回复;发送到R1的G2/0接口,R1再转发给PC1
-
-
本地代理ARP:
-
场景:想要互访的主机在同一个网段,但是在不同的广播域中,并且公用一个三层接口的场景,需要在网关上开启本地代理ARP
-
VLAN10为Super VLAN,VLAN2和VLAN3为VLAN10的Sub VLAN PC1和PC2分别属于VLAN2和VLAN3且分别连接到被二层隔离的端口
-
-
在这种组网情况下,当PC1需要与PC2通信时,由于目的IP地址与本机的IP地址为同一网段,因此PC1会直接发出请求PC2硬件地址的ARP请求。但是,因为连接两台主机的端口属于不同的VLAN,PC2无法收到PC1的ARP请求报文。
-
通过在SWA上启用本地代理ARP功能,可以解决此问题。在三层接口上启用本地代理ARP后,SWA会代替PC2回应ARP报文,PC1发给PC2的报文就会通过SWA进行转发,从而实现SWA与SWB之间的通信。
-
- PC1需要和PC2通信,PC1和PC2处于同一个网段,发送ARP广播请求PC2的MAC地址 - 三层交换机开启本地代理ARP功能,拦截PC1的ARP请求,检查自己的路由表,发现PC2属于vlan3,可以通过vlan3到达 - 三层交换机利用自己的MAC地址响应PC1的MAC请求; - PC1收到ARP响应后,将数据包的目的MAC地址设置为三层交换机的MAC地址 - PC1将数据包发送到三层交换机的MAC地址,三层交换机收到数据包后,检查目标PC2IP,将数据包转发到VLAN3,目标MAC设置为PC2的MAC
-
-
本地代理ARP可以在下列三种情况下实现主机之间的三层互通:
-
1:想要互通的主机分别连接到同一个VLAN中的不同二层隔离端口下;
-
2:使能Super VLAN功能后,想要互通的主机属于不同的Sub VLAN;:
-
3:使能Isolate-user-vlan功能后,想要互通的主机属于不同的Secondary VLAN
-
VLANIF1场景题
-
交换机上有VLANIF1,IP地址为10.0.0.1/16,该交换机下联两个主机,分别是PC1和PC2,其中下联PC1的IP地址为10.0.0.2/24,PC2的IP地址为10.0.1.2/16,那么PC1和PC2之间能否实现互通,需要用到本地代理ARP或普通代理ARP 吗,以及本地代理ARP和普通代理ARP的区别是什么。
-
PC1和PC2的通信过程:
-
PC1通过ARP查询网关MAC地址,交换机响应。
-
PC1发送数据包给交换机,交换机启用本地代理ARP查询PC2的MAC地址。
-
PC2响应ARP请求,交换机转发数据包给PC2。
-
PC2发送响应数据包给交换机,交换机转发给PC1。
-
-
关键点:
-
交换机通过本地代理ARP,用自己的MAC地址代理PC1和PC2的ARP请求。
-
数据包的源和目标MAC地址在转发过程中动态变化,但IP地址保持不变。
-
- PC1想跟PC2通信,发现PC2的IP地址不在自己的子网范围内;PC1发送ARP请求,查询网关的MAC地址; - ARP请求内容: Smac:PC1,Sip:PC1,Tmac:全0,Tip:网关IP地址 - 以太网帧内容: Dmac:全F,Smac:PC1 - 交换机响应ARP请求:交换机收到PC1的ARP请求后,发现目标IP地址是自己的IP地址,利用自己的MAC地址响应PC1; - ARP响应内容: Smac:SW,Sip:网关IP,Tmac:MAC1,Tip:PC1 - 以太网帧内容: Dmac:PC1 ,Smac:交换机 - PC1发送数据包,PC1收到响应后将数据包发送给交换机 - 数据包内容: Dmac:SW,Smac:PC1,Dip:PC2,Sip:PC1 - 交换机启用本地代理ARP,收到PC1数据包发现目标IP属于PC2,发送ARP请求查询PC2的MAC地址 - ARP请求内容: Smac:SW,Sip:交换机,Tmac:全0,Smac:SW - 以太网帧内容: Dmac:全F,Smac:SW - PC2响应ARP请求,收到ARP请求后发现目标IP是自己 - ARP响应: Smac:PC2,Sip:PC2,Tmac:SW,Tip:SW - 以太网帧: Dmac:SW,Smac:PC2 - 交换机收到PC2的ARP响应后,将PC1数据包转发给PC2; - 数据包内容: Dmac:PC2,Smac:SW,Dip:PC2,Sip:PC1 - PC2收到数据包后,发送响应数据包给PC1;PC2发现PC1的IP地址在自己的子网范围内,因此直接发送ARP请求查询PC1的MAC地址 - ARP请求内容: Smac:PC2,Sip:PC2,Tmac:全0,Tip:PC1 - 以太网帧: Dmac:全F,Smac:PC2 - 交换机收到PC2的ARP请求后,启用本地代理ARP,用自己的MAC地址响应PC2。 - ARP响应: Smac:SW,Sip:SW,Tmac:PC2,Tip:PC2 - 以太网帧: Dmac:PC2,Smac:SW - PC2发送响应数据包给交换机 - Dmac:SW,Smac:PC2,Dip:PC1,Sip:PC2; - 交换机将PC2的响应数据包转发给PC1 - Dmac:PC1,Smac:SW,Dip:PC1,Sip:PC2;