局域网通信原理 --- IP与MAC与ARP与交换机(更新)

发布时间:2026/7/26 6:04:43
局域网通信原理 --- IP与MAC与ARP与交换机(更新) 在这部分能学到今天学的比较多网络参考模型复习OSI七层TCP/IP模型每层负责什么IP与MAC的角色区别IP网络层逻辑地址负责定位主机MAC数据链路层物理地址负责局域网传输ARP协议为什么知道IP还需要MACARP如何连接网络层和数据链路层二层交换机原理根据MAC地址表转发学习MAC地址不关心IP三层交换机引入MAC转发 vs IP路由同网段通信 vs 跨网段通信Ping实验分析ICMPARPEthernet帧抓包分析复习首先通过前面的 网络参考模型 知道数据传输经过各种层osi应用层表示层会话层传输层网络层数据链路层还有物理层tcp/ip的传输层 网络层 网络层 网络接口层引入ip与mac与交换机然后ip这块的话主要是用到osi或者 tcp/ip 的网络层给数据包打上ip封装然后传输等在实验中我发现还需要用到osi 数据链路层 或者 tcp/的 网络接口层的mac地址实验这里用的是二层交换机工作在数据链路层根据MAC地址转发数据的交换机他并不关心ip是多少 所以这里查询mac是很有必要的拓展一下三层交换机是什么后面不同网段的时候要用到三层交换机简单理解二层交换机 路由功能也就是说它同时会看MAC二层MAC → 端口也会看IP三层IP → 下一跳例如普通二层交换机PC1 | SW | PC2只能同网段通信。例如192.168.1.10 ↓ 192.168.1.20可以。但是192.168.1.10 ↓ 192.168.2.20不行。因为需要路由。三层交换机可以VLAN10 192.168.1.0 三层交换机 VLAN20 192.168.2.0它内部有路由接口。所以可以实现不同网络通信。二层交换机和三层交换机区别二层交换机三层交换机工作层二层二层三层依据MACMACIP主要功能局域网交换交换路由能否跨网段不能可以是否有路由表没有有典型用途接入层核心/汇聚层实验开始根据chatgpt给我的实验来体验一下发送数据1.拓扑就是弄成图上这样使用的是s5700二层交换机2.配置pc1 为 192.168.1.10pc2 为 192.168.1.20掩码都是255.255.255.03. ping 然后查询mac地址使用 ping 和arp -a 命令现在成功找到 192.168.1.20这个目标了网络层然后 也能查到他的mac地址数据链路层、网络接口层由此看出 arp 是连接 网络层 和数据链路层的协议太牛逼了交换机后台system-view 系统视图然后 display mac-address 来查询可以看到 这个交换机这里他只有对应接口 的mac地址根本没有ip地址ge0/0/1 对应 pc1 对应了 5489-98ea-4120pc2同理抓包看看ping你抓包看到Ethernet II 第二行 IPv4 第三行 ICMP 第四行对应二层 Ethernet MAC 三层 IP ICMP形成一个非常重要的网络工程思维ai说的以后再说嘻嘻以后看到问题二层问题看MAC ARP VLAN 交换机例如MAC表有没有VLAN是否正确端口是否UP三层问题看IP 路由 网关例如IP是否正确掩码是否正确路由表有没有深入理解数据发送过程1.pc1 进行 ping192.168.1.20他有两个问题 a.已经知道目标 ip 192.168.1.20b. 不知道目标MAC 因为 二层通信必须要目标mac2.查看是否是同网段具体怎么判断见前一个帖子pc1判断 对方是否和自己是一个网段是同一个局域网找mac地址不是需要设置网关了3. 查看arp缓存寻找mac地址PC1pc1 查看自己的arp表arp -a有则数据封装没有一次通信都没有则开始 进入arp过程PC1生成ARPRequest内容谁是192.168.1.20 请告诉192.168.1.10你的MAC地址但是问题PC1不知道PC2 MAC。所以二层目的MAC写FF-FF-FF-FF-FF-FF也就是广播。完整源MAC: AA-AA-AA 目的MAC: FF-FF-FF-FF-FF-FF 源IP: 192.168.1.10 目标IP: 192.168.1.20交换机交换机收到这个数据帧。先学习看源MACAA-AA-AA来自GE0/0/1于是记录MAC表AA-AA-AA GE0/0/1然后看目的MACFF-FF-FF-FF-FF-FF发现这是广播。所以除了进入端口以外全部发送。例如PC1 --- SW ----PC2 ----pc3 ----pc4PC2PC2收到ARP请求PC2看到目标IP192.168.1.20是自己。于是回复。生成ARPReply内容192.168.1.20的MAC是BB-BB-BB这个回复不是广播。因为PC2已经知道PC1 MAC。所以单播回去给pc1源MAC: BB-BB-BB 目标MAC: AA-AA-AA回复交换机转发ARP Reply交换机收到源MACBB-BB-BB学习BB-BB-BB 对应GE0/0/2目的AA-AA-AA查MAC表发现AA-AA-AA GE0/0/1于是直接发送。PC1更新ARP表PC1现在知道192.168.1.20 对应 BB-BB-BB保存ARP缓存192.168.1.20 | | BB-BB-BB现在终于可以发送ping。4.真正的开始发送ping了Ping使用ICMP协议PC1生成ICMP Echo Request。然后开始封装。加IP头增加源IP: 192.168.1.10 目的IP: 192.168.1.20变成IP数据包加MAC头增加源MAC: AA-AA-AA 目的MAC: BB-BB-BB形成Ethernet帧最终---------------- | 目的MAC BB | | 源MAC AA | ---------------- | 目的IP .20 | | 源IP .10 | ---------------- | ICMP Echo | ----------------交换机转发Ping交换机收到。查看目的MACBB-BB-BB查询MAC表BB-BB-BB GE0/0/2所以只发送给PC2。注意这一次不是广播。不是泛洪。是单播。PC2收到PingPC2发现目的IP192.168.1.20是自己。交给操作系统。ICMP模块处理。发现有人ping我。于是生成ICMP Echo Reply。回复过程反方向PC2IP: 192.168.1.20 MAC: BB-BB-BB发送↓交换机↓PC1最后PC1收到Reply from 192.168.1.20到此已经 理解完一次通信的过程了中间提到了一个名词泛洪到底是什么其实就是 中间交换机把目标mac地址发送给全部端口的过程前面提到过泛洪又有两种情况第一pc 给的mac广播地址不是ip的广播地址目标MAC是FF-FF-FF-FF-FF-FF这个地址算一个特殊的目标为全部人的地址叫广播泛洪。例如ARP Request。第二目标MAC 不是广播但是MAC表没有。叫未知单播泛洪。例如pc1 这次不发 ffffff这个地址了他知道并且直接让交换机找 bb-bb-bb-bb但是交换机里没有pc2 的这个bb记录所以继续泛洪局域网通信流程图总结