首先尝试同连校园网,电脑ping手机
如果电脑手机连不同的WiFi(电脑连ustb-v6,手机连ustb-wifi)
使用ipconfig
查看IP配置:
使用arp -a
查看电脑的arp表
使用route print
查看路由配置
手机的ip地址是10.24.52.88(每次分配到的都不一样)
如果ping 10.24.52.88
,其结果为
wireshark没有抓到arp包,说明未发送arp请求,对应ping202.204.0.5
如果ping 10.23.0.5
,其结果为
wireshark抓包内容为:(12条一样的)
可见是一条广播,其广播的source的mac地址是设备的mac地址
输入ipconfig -all
验证
其运作步骤为
//查看路由表 -> 匹配到10.23.0.0(255.255.0.0)-> 发现网关为10.23.147.13 -> ...
这个思路是错误的,ARP的工作方式只有找MAC地址,与路由表没有关系
查看ARP表,没有找到对应的MAC地址 -> 发送ARP请求,广播寻找10.23.0.5
如果ping 202.204.0.5
,其结果为
wireshark没有抓到arp包,说明未发送arp请求
查看ARP表 -> 没有发现可匹配的选项 -> 走默认网关 -> 查看ARP表,网关对应的MAC地址为(下图) -> 发送ARP请求
之后是网关进行202.204.0.5的查找,所以设备捕获不到ARP包了
如果电脑也链接ustb-wifi,即与手机处于同一网段,此时
电脑ip地址:
ARP表:
默认网关:
ping10.24.25.88
抓包:
两个ip是同一同网段的,但是ping不通,是因为(99+ 封私信 / 80 条消息) 同一个实验室的两个电脑连接校园网同一 WiFi 下,无法互相 ping,请问怎么解决呢? - 知乎 (zhihu.com)
校园网的基本设置就是要求IP隔离,也就是无线用户之间互相隔离
这是为了保护每个用户的网络安全,不传播病毒,也不能相互攻击。
为了证明是校园网的问题,用电脑连手机热点:
手机的ip地址为10.28.3.125
此时ping10.28.3.125(手机)
wireshark没有抓到包,因为是不在一个网段里,由网关进行操作。
参考:
同网段查询
- 主机A希望向主机B发送IP报文。先根据主机B的IP,检查自己的ARP 表中是否有主机B的MAC,有就将IP与MAC地址填入IP报文头直接发送;
- 若没有,则缓存IP报文并广播发送 ARP Request 报文;
- 收到 ARP Request 报文的主机检查自己是否为目的主机,若不是则忽略该报文;
- 如果发现自己是目的主机,将 ARP Request 报文中主机A的IP地址和MAC地址存入自己的ARP表中,同时主机B以单播方式向主机A回应一个ARP Reply 报文;
- 最后主机A将根据ARP Reply得到主机B的MAC地址。它将主机B的<IP地址,MAC地址>存入自己的ARP表并将这两个字段填入IP报文头并发送。
不同网段查询
- 主机A希望向主机B发送IP报文。先向ARP查询主机B的IP地址,ARP根据掩码发现自己与目的IP不在同一个网段,此时ARP将查询网关(默认路由)的MAC地址,如果连网关的MAC地址都没有的话则对网关地址再进行同网段ARP查询,查询后将<网关IP,网关MAC>和<主机B IP,网关MAC>两项放入ARP表中;
- 主机A将IP报文发往网关。此时:目的IP=主机B,目的MAC=网关,源IP和源MAC=主机A;
- 网关收到IP报文后发现目的IP根本不是他,于是网关一方面将主机A的IP与MAC地址放入ARP表,另一方面去自己的ARP表中查找目的IP的MAC地址,如果没有的话在主机B所在的网段进行同网段ARP查询,查询后将主机B的IP与MAC地址放入自己的ARP表;
- 网关向主机B发送IP数据报。此时:目的IP=主机B,目的MAC=主机B,源IP=主机A,源MAC=网关;
- 最后主机B收到IP数据报并将<主机A的IP,网关的MAC>放进自己的ARP表中