在看《图解 TCP/IP 》的时候看到这段话感到很迷惑:
在人们使用多播功能之前,一直采用广播的方式。那时广播将数据发送给所有终端主机,再由这些主机 IP 之上的一层去判断是否有必要接收数据。是则接收,否则丢弃。
然而这种方式会给那些毫无关系的网络或主机带来影响,造成网络上很多不必要的流量。况且由于广播无法穿透路由,若想给其他网段发送同样的包,就不得不采取另一种机制。因此,多播这种可以穿透路由器,又可以实现只给那些必要的组发送数据包的技术就成为必选之路了。
在我理解中,IP 单播就已经是在把一个包发到目的主机的过程中,整条链路上的其他主机都能“看到”这个包,并检查这个包,是发给自己的就接收,不是就丢掉。那这样的话我觉得单播跟广播没有什么区别啊,按这个逻辑,多播我就无法理解了。“给那些必要的组发送数据包的技术“,这个意思难道是说在一个链路中只把包发给特定一些的主机,而其他主机连“看”都看不到的意思吗?
还请前辈们指教一二,感谢:D
1
GoodRainChen 2017-09-29 20:02:36 +08:00 1
你对网络协议的理解很奇怪
打个比方,单播就是我有一封信,要寄给 B,让周围的朋友帮忙递给他,按照协议,除非"朋友"有恶意,不然他是不会去拆开你这封信去看的. 而广播,是我要把这封信给周围所有的朋友去看,标题就写着"请大家看我的信",于是周围的人就拆开信继续去读正文 单播路过的朋友能不能看到包里的内容?当然能,抓包就是这么干的,但是那不属于"协议"的一部分,是"偷看"信的人私自的行为 |
2
jingniao 2017-09-29 20:21:21 +08:00 via Android 1
你说的“单播”,无线领域我不太清楚系列,但目前的交换机路由器应该早就不会把包发给所有主机,然后让主机过滤。
会出现你说的那种,在久远的过去,叫 hub |
3
jingniao 2017-09-29 20:21:46 +08:00 via Android
系列-细节
|
4
sgissb1 2017-09-29 20:36:24 +08:00 3
hub 时代的单播和广播你理解的没错。交换机时代,你的理解是不正确的。
单播这样理解最简单,你只有一个女朋友,不管怎么样,每天下班以后看见是她。 广播就是,全世界的女人都是你女朋友。 多播就是,你有一个后宫。 |
5
gamexg 2017-09-29 21:11:37 +08:00 1
额,
tcp/ip 协议理解为邮寄明信片是最合适的。 单播是你直接给某个人寄明信片,只有经手的快递员、邮局能够看到内容,你的邻居等正常情况下看不到。 多播当时没认真学,大体是记得是一些人建立一个组,然后向邮局注册。之后别人直接把目的地设置为这个组,邮局会替你复印很多分发给组内成员。 广播就是你拿个大喇叭直接喊,和你一条街道的人都能听到。 注意上面都是说的现代的交换机设备,而不是已经不存在的集线器设备。 |
6
rebeccaMyKid OP |
7
rebeccaMyKid OP 然后 B,C 这两条线路是根本收不到东西的?
|
8
rebeccaMyKid OP @GoodRainChen
我明白你的意思,但是我想知道这里所谓的“路过”是什么意思。在一个链路里,就对外只有一台路由,对内假设都是双绞线连接路由器的情况下,假如有 XYZ3 台机子,X 发送一个信号给 Z,是整条链路都会有呢,还是只是 Z 能收到?就是说你的“邻居”能不能收到(这里先不管丢弃的问题)。上面一位大哥说是不用主机来过滤的。 |
9
gamexg 2017-09-29 22:14:13 +08:00 1
@rebeccaMyKid #7 是的,标准情况下是这样。
但是如果交换机 mac 地址表里面没有记录就会广播。 交换机每收到一个包会将来源 mac 地址和网口绑定储存到 mac 地址表里面,然后从 mac 地址表里面找到目的 mac 地址对应的网口将包发过去,但是如果从 mac 地址表里面查询不到,就会广播。 可以伪造很多 mac 地址将交换机 mac 地址表撑爆来将交换机降级为集线器。 |
10
rebeccaMyKid OP @jingniao
有线的话,我记得书上一幅图是交换机+双绞线连接主机,然后是全双工的,这样的话包在交换机(路由器)过滤,然后只发到某一条线路(双绞线)上,我想了想感觉是可以理解的。;D 如果按这个逻辑来的话,我有点好奇无线是怎样的,无线是会建立并且(维护)一个主机 <----> 路由器的看不见的线路,主机只在收到发给自己的包的时候才会接收信号呢,还是,跟所谓以前的 hub 时代的集线器那样,主机不停地获取无线信号中的包,然后检查、过滤、检查、过滤,哦,是我的,往上交,哦,不是我的,丢掉。:D 还有就是,我记得有种叫监听网卡的东西,这个东西我记得是能监听别人的数据(我记不得是能监听无线或是有线)。那这个东西应该就不能监听到有线网络下别人发的包吧。如果这个监听网卡能插一个水晶头用线连的话。但是我记得我看过这个教程这个监听网卡好像是可以监听无线链路的别人的数据包的,那是不是就是说无线链路是那种 “要主机来过滤包”,路由器收到包就往空气中丢,然后无线网卡不停地识别、过滤? 哈哈问题有点多,不知道说清楚没有。没人回也算对自己的学习做个记录吧。 |
11
lookingfor 2017-09-29 23:29:53 +08:00
不知道可不可以这样来理解
广播 类似于有线电视 所有台的信号一起给你发过来 你自己切着频道看 单播 类似于网络播放器 看什么点什么 |
12
sinxccc 2017-09-29 23:42:58 +08:00
话说…你们不能这样把二层和三层混在一起讨论啊。
|
13
carterdang 2017-09-30 02:30:31 +08:00 via iPhone
多播用于像 IPTV 这样的直播类业务,可以有效减少占用带宽,比如有总共 100 个人看电视,有 50 个人请求了同一频道,那么就可以按需将节目发给这 50 个人。
|
14
snnn 2017-09-30 06:38:26 +08:00 via Android
啥破书嘛。写的糊里糊涂的。二层三层混一起谈。
|
15
rebeccaMyKid OP @sinxccc
日本人写的书。。感觉比那本清华的计算机网络容易懂多了。。那本我是真的看着懵。 《自顶向下》看了一些感觉也不错。 |
16
killadm 2017-09-30 10:13:16 +08:00 via Android
推荐关注一下知乎的车小胖,他的文章通俗易懂,对于初学者知识体系构建很有帮助。
[组播 IP 地址到底是谁的 IP ??] 车小胖:组播也是一种 I … https://www.zhihu.com/question/27233903/answer/108374395?utm_source=com.android.mms&utm_medium=social |
17
azh7138m 2017-09-30 13:24:48 +08:00
@rebeccaMyKid 监听那个大概是这样的,发 arp 包欺骗目标机器,让它认为你是网关,然后数据就都过来了,或者就是 hub 那种大家直接就是坦诚相见。
错了的话,别打我:) |
18
rebeccaMyKid OP @azh7138m
但我朋友说监听好像有线局域网一般工具监听不了的耶,我没买过不知道。 |
19
azh7138m 2017-09-30 15:58:26 +08:00
@rebeccaMyKid 我们渣校下面都是辣鸡两层交换机,基本上是随便玩 :D
|
20
sinxccc 2017-10-01 02:21:32 +08:00 1
@rebeccaMyKid 呃,你提到的这三本书我都没看过,我的回复主要是说上面的各种讨论…
组播本身的定义和实现都略复杂,不管是二层还是三层,看起来不够直观是正常的…至于广播的概念二层三层都有,但两者的原理和用途都不大一样,得分开理解。OSI 模型的关键点在于分层处理,每一层都只负责自己的事情(虽然实际中偶尔会有例外,不过那是特殊情况),你先分清楚 HUB、交换机和路由器分别是工作在哪一层的设备,然后把每一层基本的包转发规则弄清楚了,这些概念就好理解了。 至于类比这种东西,可以用来给人描述大的概念却不可以用来解释原理和细节,毕竟世界上没有完全相同的两样东西,只要深究细节就一定会把自己绕进去。 |
21
rebeccaMyKid OP @sinxccc 嗯,感谢。也就关键问题我会问一下,也不会挖太深,毕竟广度优先学习。
|
22
iahu 2017-10-11 15:47:45 +08:00
刚刚看到的一个篇图文,看最下面的那段解释非常明白
http://www.epubit.com.cn/article/1020 |