0

我的帖子

个人中心

设置

  发新话题
刚学网络,我在网上看两个PC通信,设为A和B。A要联系B,知道B的IP但不知道MAC地址。如果是在同一网段,就发ARP请求,不是同一网段就发给网关。而判断是否是同一网段的方法就是A的IP地址和A的掩码按位与,得出网络号;然后B的IP地址和A的掩码按位与,得出结果认为是B的网络号,如果两个网络号相同,则A和B在同一网段,不同则不在同一网段。

那么如果是如下配置:
A: 192.168.0.1/16
B: 192.168.1.1/24

从A算的话,如下:
192.168.0.1 & 255.255.0.0 -> 192.168.0.0
192.168.1.1 & 255.255.0.0 -> 192.168.0.0

按照上面的算法是同一网段。但从B算的话:

192.168.1.1 & 255.255.255.0 -> 192.168.1.0
192.168.0.1 & 255.255.255.0 -> 192.168.0.0

按照上面的算法就不是同一网段。

所以问题如下:
1. A不知道B的掩码,用B的IP地址和自己的掩码算,这个结果只能说明B的前n位和A的前n位相同(n为A的掩码中1的个数),
能说明A和B在一个网段?从B算又不是同一个网段了?
2. 是否在同一网段决定PC是发送ARP还是发到网关,那这里A就发ARP, B发到网关?



引用:
原帖由 password636 于 2017-7-3 14:54 发表
刚学网络,我在网上看两个PC通信,设为A和B。A要联系B,知道B的IP但不知道MAC地址。如果是在同一网段,就发ARP请求,不是同一网段就发给网关。而判断是否是同一网段的方法就是A的IP地址和A的掩码按位与,得出网络号;然后B的IP地址 ...
呵呵。不管怎么算这两个都不在一个网络 192.168.0.1/16 它的网络号是 192.168.0.0     192.168.1.1/24 的网络号是 192.168.1.0  明显不在一个子网。他们的交互就必须三层。




本帖最后由 lygzhan 于 2017-7-3 15:08 编辑
"大师,什么是快乐的秘诀?"
"不要和愚者争论."
"大师,我完全不同意这就是秘诀."
"是的,你是对的。"
引用:
原帖由 lygzhan 于 2017-7-3 15:03 发表

呵呵。不管怎么算这两个都不在一个网络 192.168.0.1/16 它的网络号是 192.168.0.0     192.168.1.1/24 的网络号是 192.168.1.0  明显不在一个子网。他们的交互就必须三层。 ...
拿各自的掩码算当然不在一个子网,但是算法不是那自己的一个掩码去和两个IP算么?



引用:
原帖由 password636 于 2017-7-3 15:28 发表

拿各自的掩码算当然不在一个子网,但是算法不是那自己的一个掩码去和两个IP算么?
呵呵。你觉得是这么算的?当然是按我说的去算了。不然你也不会来这么问了。这是基础的基础了。你对交换机是怎么工作的还是不明白。pc在发包的时候并不是你想的那样。pc发一个广播包。大家都收到。然后收到的人拆开看看是不是自己的是的就回应。不是就不回应。



"大师,什么是快乐的秘诀?"
"不要和愚者争论."
"大师,我完全不同意这就是秘诀."
"是的,你是对的。"
引用:
原帖由 lygzhan 于 2017-7-3 16:14 发表

呵呵。你觉得是这么算的?当然是按我说的去算了。不然你也不会来这么问了。这是基础的基础了。你对交换机是怎么工作的还是不明白。pc在发包的时候并不是你想的那样。pc发一个广播包。大家都收到。然后收到的人拆开看 ...
可我从网上搜的都是说拿自己的掩码和目的的ip进行与运算,比如这段:

“在使用TCP/IP协议的两台计算机之间进行通信时,我们通过将本机的子网掩码与接受方主机的ip地址进行'与'运算,即可得到目标主机所在的网络号,又由于每台主机在配置TCP/IP协议时都设置了一个本机ip地址与子网掩码,所以可以知道本机所在的网络号。

通过比较这两个网络号,就可以知道接受方主机是否在本网络上。如果网络号相同,表明接受方在本网络上,那么可以通过相关的协议把数据包直接发送到目标主机;如果网络号不同,表明目标主机在远程网络上,那么数据包将会发送给本网络上的路由器,由路由器将数据包发送到其他网络,直至到达目的地。在这个过程中你可以看到,子网掩码是不可或缺的! ”

我是刚学习这些网络基础,所以真的不明白,能不能帮忙解释一下,谢谢啊。



转成二进制,跟子网掩码做与运算,不就完了



引用:
原帖由 password636 于 2017-7-3 16:43 发表

可我从网上搜的都是说拿自己的掩码和目的的ip进行与运算,比如这段:

“在使用TCP/IP协议的两台计算机之间进行通信时,我们通过将本机的子网掩码与接受方主机的ip地址进行'与'运算,即可得到目标主机所在的网络号,又由于每 ...
你看的都是哪个大师的东西?都和你说了交换机是二层设备。看不到ip。交换机怎么给你arp啊?它不懂什么叫arp啊。交换机只能看到MAC。mac啊 mac哦。网络有7层。一直封装到比特流。然后发给交换机。交换机拆到2层发现没有这个mac。那交换机就广播这个包。你需要看看各个层的封装。上面几层我们就不看了。从三层开始。一个ip包封装有 源ip和目的ip。然后这个包继续封装到二层。是源mac和目的mac。然后封装到1层比特流。发给交换机。交换机才是拆包。它只能看到2层的mac。发现这个目的mac没有见过,在mac表里也没有,那就广播吧。然后就整个网络都收到这个包。比如你是发给pc2的。其他的pc拆到二层发现是一个广播包,然后继续拆三层,拆开三层发现不是自己的ip就丢了。
本帖最近评分记录
  • lover119 无忧币 +5 热心广援 2017-7-4 23:43



"大师,什么是快乐的秘诀?"
"不要和愚者争论."
"大师,我完全不同意这就是秘诀."
"是的,你是对的。"
引用:
原帖由 password636 于 2017-7-3 16:43 发表

可我从网上搜的都是说拿自己的掩码和目的的ip进行与运算,比如这段:

“在使用TCP/IP协议的两台计算机之间进行通信时,我们通过将本机的子网掩码与接受方主机的ip地址进行'与'运算,即可得到目标主机所在的网络号,又由于每 ...
你这是tcp/ip协议栈的东西,实际情况是要通过以太网传递的。你可以抓包看看。包里更本没有你说的什么掩码。二层就是源mac和目的mac 三层就是源地址和目的地址。4层就是tcp或udp 端口号



这就是我刚抓的包。

pc发包很简单。知道对方mac的直接封装对方的mac 不知道的就封装广播mac



"大师,什么是快乐的秘诀?"
"不要和愚者争论."
"大师,我完全不同意这就是秘诀."
"是的,你是对的。"
引用:
原帖由 password636 于 2017-7-3 14:54 发表
刚学网络,我在网上看两个PC通信,设为A和B。A要联系B,知道B的IP但不知道MAC地址。如果是在同一网段,就发ARP请求,不是同一网段就发给网关。而判断是否是同一网段的方法就是A的IP地址和A的掩码按位与,得出网络号;然后B的IP地址 ...
计算就按我的方法去计算。各算各的。如果网络号一样就可以二层到达。如果不一样就不在一个子网。。。实际实验也是这样的。你可以找两台电脑试试。



"大师,什么是快乐的秘诀?"
"不要和愚者争论."
"大师,我完全不同意这就是秘诀."
"是的,你是对的。"
引用:
原帖由 lygzhan 于 2017-7-3 17:13 发表


你这是tcp/ip协议栈的东西,实际情况是要通过以太网传递的。你可以抓包看看。包里更本没有你说的什么掩码。二层就是源mac和目的mac 三层就是源地址和目的地址。4层就是tcp或udp 端口号
343534


这就是我刚抓的包。
...
我觉得你好像理解错我问题的方向了。
目前我看到的是:A给B发,知道B的IP,不知道B的MAC。要根据那个算法判断是否是同一子网。
如果不是,发的包里,目的MAC填网关的MAC,目的IP填B的IP.这样网关收到后发现目的IP不是自己,但目的MAC是自己,就会转给其它设备继续找(可能是路由器什么的)。
如果是同一子网,发ARP request,目的MAC是FF:FF:FF:FF:FF:FF(广播),交换机收到后转发给所有其它连接的PC,(如果路由器也收到了,会忽略这个广播包,也就是只在那个子网里广播),然后B如果连在交换机上,收到这个ARP request,就会ARP reply返回给A自己的MAC地址。

我的问题是,这个判断是否是同一子网的算法(和自己的掩码按位与)并不能准确判断A和B是否是同一子网,这影响后面到底是发ARP request还是发给网关啊,起码目的MAC填的也不一样。从A算和从B算结果不一样,A和B两个要么是一个子网,要么不是,怎么还得出两个结果?无法准确判断是否是同一子网的话,那这个算法还有什么意义?



大概 这个流程是这样的
a 要发数据给 b
然后a 根据掩码 得出 b和自己是1个 网段的
于是 a 发了个 who is b 的广播包
b 收到后 算出 a不是自己网段的 然后 丢弃这个 包

于是 a 发给 b 的数据 无响应
大概就是这样
本帖最近评分记录
  • lover119 无忧币 +5 热心广援 2017-7-4 23:43



引用:
原帖由 9321106 于 2017-7-3 17:32 发表
大概 这个流程是这样的
a 要发数据给 b
然后a 根据掩码 得出 b和自己是1个 网段的
于是 a 发了个 who is b 的广播包
b 收到后 算出 a不是自己网段的 然后 丢弃这个 包

于是 a 发给 b 的数据 无响应
大概就是这样 ...
b收到后不是只看目的ip是不是自己就行了么?还要算网段啊



引用:
原帖由 password636 于 2017-7-3 17:44 发表

b收到后不是只看目的ip是不是自己就行了么?还要算网段啊
实际上 a 发的是一个 2层的广播包
源地址 a的mac  目标地址 fffff 数据内容是 who has 192.168.1.1 tell 192.168.0.1



引用:
原帖由 9321106 于 2017-7-3 18:04 发表

实际上 a 发的是一个 2层的广播包
源地址 a的mac  目标地址 fffff 数据内容是 who has 192.168.1.1 tell 192.168.0.1
ARP request是2层广播包,但数据部分有目的IP啊,b收到了广播,是ARP request, 难道不继续看数据部分的目的IP么?如果不看,那没有任何PC能ARP reply了



引用:
原帖由 password636 于 2017-7-3 18:16 发表

ARP request是2层广播包,但数据部分有目的IP啊,b收到了广播,是ARP request, 难道不继续看数据部分的目的IP么?如果不看,那没有任何PC能ARP reply了
会继续看啊,看到目标ip与自己计算不是一个网段,就丢包了啊,如果计算是一个网段
,就回应了呗。
你可以试试看这种配置方法
a 192.168.0.1/24 b 192.168.1.1/24 ping不通
但是你加上网关试试看
a 192.168.0.1/24 网关也是192.168.0.1
b 192.168.1.1/24 网关也是192.168.1.1 ping的通
也就是自己是网关回转发回去
说明电脑会解析到3层至更高层的




本帖最后由 spqrhao 于 2017-7-3 20:06 编辑
引用:
原帖由 password636 于 2017-7-3 14:54 发表
刚学网络,我在网上看两个PC通信,设为A和B。A要联系B,知道B的IP但不知道MAC地址。如果是在同一网段,就发ARP请求,不是同一网段就发给网关。而判断是否是同一网段的方法就是A的IP地址和A的掩码按位与,得出网络号;然后B的IP地址 ...
我脑子秀逗了,被你这样一个题目忽悠了一下午。

你这样规划是错误的。出现这样的ip规划说明你太无知了

这个规划是不对的。如果你这样规划不说你能不能实现通信的问题(实际是永远不能通信的)
你就是在交换机上配置都出问题

A similar IP subnet already exists. Please verify the current IP subnet de
sign.

这就是在交换机上配置出现错误提示。告诉你ip规划错误

楼上的都散了,你们也给这样一个错误的规划给弄糊涂了。


就算你不管错误提示,就是要这样配也可以

你用192.168.0.1/16 去ping 192.168.1.1/24 告诉你丢包
你反过来ping直接告诉你不通。

你这样规划ip违反是ip规划原则。
一个局域网里不能出现包含的子网和相同的ip。这是规则。




本帖最后由 lygzhan 于 2017-7-3 21:29 编辑
"大师,什么是快乐的秘诀?"
"不要和愚者争论."
"大师,我完全不同意这就是秘诀."
"是的,你是对的。"
引用:
原帖由 9321106 于 2017-7-3 17:32 发表
大概 这个流程是这样的
a 要发数据给 b
然后a 根据掩码 得出 b和自己是1个 网段的
于是 a 发了个 who is b 的广播包
b 收到后 算出 a不是自己网段的 然后 丢弃这个 包

于是 a 发给 b 的数据 无响应
大概就是这样 ...
你是对的,实验证明就是这样一个效果。其实这样规划ip是错误的。在交换机上根本没有办法配置这样的子网。 A similar IP subnet already exists. Please verify the current IP subnet de
sign.
这是错误提示。这样规划ip是违反ip规划规则的。一个网络里是不能出现包含的子网。否则是不能路由的。



"大师,什么是快乐的秘诀?"
"不要和愚者争论."
"大师,我完全不同意这就是秘诀."
"是的,你是对的。"
引用:
原帖由 lygzhan 于 2017-7-3 17:13 发表


你这是tcp/ip协议栈的东西,实际情况是要通过以太网传递的。你可以抓包看看。包里更本没有你说的什么掩码。二层就是源mac和目的mac 三层就是源地址和目的地址。4层就是tcp或udp 端口号
343534


这就是我刚抓的包。
...
版主真是牛。说的句句在理,请问看的是什么书?能收我为徒吗?



引用:
原帖由 chenyibing 于 2017-7-4 09:06 发表

版主真是牛。说的句句在理,请问看的是什么书?能收我为徒吗?
您抬爱了。互相学习共同进步。



"大师,什么是快乐的秘诀?"
"不要和愚者争论."
"大师,我完全不同意这就是秘诀."
"是的,你是对的。"
引用:
原帖由 password636 于 2017-7-3 14:54 发表
刚学网络,我在网上看两个PC通信,设为A和B。A要联系B,知道B的IP但不知道MAC地址。如果是在同一网段,就发ARP请求,不是同一网段就发给网关。而判断是否是同一网段的方法就是A的IP地址和A的掩码按位与,得出网络号;然后B的IP地址 ...
所以问题如下:
1. A不知道B的掩码,用B的IP地址和自己的掩码算,这个结果只能说明B的前n位和A的前n位相同(n为A的掩码中1的个数),
能说明A和B在一个网段?从B算又不是同一个网段了?
回答:如果这俩PC接在同一个二层环境下的时候,A向B发送ping,A会认为B与自己同一个网段,然后广播arp,arp包会抵达B,但是B收到包后,掐指一算(根据掩码计算)对方跟自己不是一伙的啊(不同网段),于是乎就不理对方了(不会发回应的包)。但是,如果用B去ping A设备,B掐指一算根本不是一伙的,根本不会直接发广播包出去找A。会去找网关的。
2. 是否在同一网段决定PC是发送ARP还是发到网关,那这里A就发ARP, B发到网关?
回答:是否发到网关是依赖于三层IP来决定的,不同网段就会去找默认网关,如果同一个网段,就不会去找网关了。



‹‹ 上一贴:请教家用一根网线接路由器到交换机方法 ...   |   下一贴:网络会话数超出、外网就瘫痪怎么解决 ... ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2017 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com