ARP请求无应答原因及解决

ARP请求无应答的原因

一、目的网络不存在

1、如果是同处于一个内部网络环境的,就是一个大局域网,他们在同一个网段,是可以互相ping通的。
何为同一个网段,比如192.168.1.5与192.168.1.x属于同一个网段。
》如果ping后显示无法访问目标主机,可能是1)地址不存在,
解决:查看mac地址缓存表,没有目标主机的mac地址信息;

arp -a | findstr 192.168.1.185

正常显示:ping后显示包的节后状态,arp能查到对方的mac地址;

二、arp请求传播时被路由器等一些设备隔离

》若ping后显示超时,检查arp -a是否有对应目的ip的mac地址,若有,证明网络层的ping的request消息已经发出,而且已经到达目的主机的网络,要么没回ping的reply消息,要么回到其他地方去了?
解决:前者检查对应主机的防火墙是否设置,禁止了对ping的request进行响应?关闭防火墙。后者检查路由表,是否因为掩码问题,发给其他地方?
现在的情况:不联网,两台主机网线连接,设置静态IP和子网掩码,检查是否ping通,ping不通,关闭防火墙,再次测试

三、源主机和目的主机不在同一广播域

在这里插入图片描述
如图所示,当源主机和目的主机不在同一广播域时,PC3和PC4是相互ping不通????
当源主机和目的主机不在同一广播域时,只需将一方的广播域包含另一方的广播域即可。
24和27表示什么??网络号的位数,也就是子网掩码中前多少号为1,其余位数为0,也就是主机号。可以看出两个主机的子网掩码不同,则MAC地址不同。
A类 从1.0.0.0 到126.255.255.255
B类 从128.0.0.0到191.255.255.255
C类 从192.0.0.0到223.255.255.255
类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。
子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
想判断两个ip地址是不是在同一个网段,只需将ip地址与子网掩码做与运算,如果得出的结果一样,则这两个ip地址是同一个子网当中
在这里插入图片描述
现在的情况是:
1、当PC3 ping PC4时,PC3检查发现PC4的ip地址属于自己的一个网段,但PC3没有PC4的MAC地址所以发送目的地址为PC4的ARP广播请求,该广播到达PC4后PC4向PC3发送ARP单播应答告诉PC3我自己的MAC地址。
2、PC3得知PC4的MAC地址后发生ICMP请求报文给PC4。
3、PC4经计算发现PC3的ip地址不属于自己的一个网段,所以会将ICMP应答报文交给网关,所以会发生一个ARP广播请求来获取网关的MAC地址。经抓包发现网关并不会回应PC4发送的ARP广播请求。
所以互相ping不通的原因就出在PC4获取不到网关的MAC地址,导致PC3的ICMP报文无法发送
回看PC4和网关的IP地址,掩码都是27位,但是它们互相不在对方的网段内,大致可以理解为PC3和网关处在不同的广播域,所以网关是无法接收到PC4发生的ARP请求广播的
网关的掩码配置错误导致无法接收到PC4的ARP请求广播,在不改变主机IP的情况下,只需要将网关所处的广播域包含了PC4的广播域即可解决问题。
查看PC4和网关的IP地址二进制表达式可知:当网关的掩码≤24时,网关所处广播域就包含了PC4的广播域(27位),这时PC4发送的ARP广播就会被网关接收。将网关掩码修改为24位

在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。

而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。

所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

网络共享设置

设置共享时,共享电脑IPv4属性设置如图所示,为什么要将IP地址和默认网关设置这样设置?地址不能相同,子网掩码必须相同,默认网关要一致。
两台电脑的默认网关要一致,IP地址不同,最后一位为0的IP是网段的网络地址,而最后一位为255的IP是网段的广播地址,不能分配给主机,都不能选用。
在这里插入图片描述
第二台电脑设置为:
在这里插入图片描述
ping通之后,就可以传输数据文件。
1、传输文件:设置共享文件名,权限(读取权限一定设置,否则共享不了)
2、访问文件:
输入共享的文件夹属性中的网络路径;或者输入第二台电脑的IP也行,\192.168.0.100在这里插入图片描述在这里插入图片描述

2、同一个局域网内,不同的网段,比如192.168.0.1/24和192.168.1.1/24他们并不在同一个网段所以无法直接ping通。这时候可以把2台电脑接入路由器设置静态或者动态路由,计算机网关指向路由器,这样icmp包就可以相互到达,双方ping通。
》》
主机A和主机B处于不同网段,B段路由器显示的是192.168.0.148,不同网段,A并不知道有B的存在,若想让A也能pingB,需要告诉A电脑路由应该怎么走,在A电脑上加一条静态路由。
在DOS下输入以下指令(管理员权限输入):route -p add 目的地址 mask 子网掩码 网关地址,192.168.19网段下所有ip均有效。route print查看是否添加成功。

route -p add 192.168.19.0 mask 255.255.255.0 192.168.0.148

在这里插入图片描述
3、如果2台计算机同时处于公网内,只要能联网肯定是可以ping通的。
还有一种情况是有一台机器是属于内网的ip如192.168.10.1,另一台计算机是公网IP,如202.100.1.17,如果这2台要ping通的话,内网IP的那台机器只要能ping的通公网IP的计算机,而公网的计算机要访问内网计算机,需要通过VPN或者端口映射来完成访问。

未完成部分:
IP协议:ICMP协议
源主机ping发出含一串数据的包(如123456789abcde之类),封装在ip层里,对方收到后,把这串包原路送回来,源pc收到后,认为是对方可达。涉及二层的mac地址和ip层的交互。
ping的过程是,输完命令后,根据目的ip,先查路由表,看目的主机ip是否走直连路由,是的话就去检查mac地址缓存表,看是否有该地址的mac地址缓存,没有的话,是用直连路由的一个本机接口去发出请求目的ip的mac地址的arp请求request消息,收到arp响应后,用这个mac地址封装二层数据,发出icmp协议的ping请求消息。mac地址缓存里有,直接封装ping的request消息。arp消息没有得到mac地址,不发出ping的request消息,回显端口不可达。

查路由表发现不是直连路由和静态路由的话,走默认路由的话,就去查是否有默认网关的mac地址,没有去请求网关的mac地址,有就直接封装ping的request消息。
cmd下用ipconfig/all去查看网卡的信息。

抓包软件:
主机Aping(192.168.205.201(网关是205.1))局域网内主机B(192.168.206.10):显示无法访问目标主机;用wireshark抓包,205网段的网关192.168.205.1到192.168.205.201,显示不可达,
在这里插入图片描述

ping应用的底层,用的是网络层的ICMP协议
在这里插入图片描述
在这里插入图片描述
**

总结

当源主机和目的主机不在同一广播域时,只需将一方的广播域包含另一方的广播域即可。
127.0.0.1 是回环地址。localhost是域名,但默认等于 127.0.0.1。
如果服务器 listen 的是 0.0.0.0,那么此时用127.0.0.1和本机地址都可以访问到服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值