V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rebeccaMyKid
V2EX  ›  问与答

IP 单播和广播的区别,求解惑

  •  
  •   rebeccaMyKid · 2017-09-29 18:49:44 +08:00 · 2706 次点击
    这是一个创建于 2607 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在看《图解 TCP/IP 》的时候看到这段话感到很迷惑:

    在人们使用多播功能之前,一直采用广播的方式。那时广播将数据发送给所有终端主机,再由这些主机 IP 之上的一层去判断是否有必要接收数据。是则接收,否则丢弃。

    然而这种方式会给那些毫无关系的网络或主机带来影响,造成网络上很多不必要的流量。况且由于广播无法穿透路由,若想给其他网段发送同样的包,就不得不采取另一种机制。因此,多播这种可以穿透路由器,又可以实现只给那些必要的组发送数据包的技术就成为必选之路了。

    在我理解中,IP 单播就已经是在把一个包发到目的主机的过程中,整条链路上的其他主机都能“看到”这个包,并检查这个包,是发给自己的就接收,不是就丢掉。那这样的话我觉得单播跟广播没有什么区别啊,按这个逻辑,多播我就无法理解了。“给那些必要的组发送数据包的技术“,这个意思难道是说在一个链路中只把包发给特定一些的主机,而其他主机连“看”都看不到的意思吗?

    还请前辈们指教一二,感谢:D

    22 条回复    2017-10-11 15:47:45 +08:00
    GoodRainChen
        1
    GoodRainChen  
       2017-09-29 20:02:36 +08:00   ❤️ 1
    你对网络协议的理解很奇怪
    打个比方,单播就是我有一封信,要寄给 B,让周围的朋友帮忙递给他,按照协议,除非"朋友"有恶意,不然他是不会去拆开你这封信去看的.
    而广播,是我要把这封信给周围所有的朋友去看,标题就写着"请大家看我的信",于是周围的人就拆开信继续去读正文
    单播路过的朋友能不能看到包里的内容?当然能,抓包就是这么干的,但是那不属于"协议"的一部分,是"偷看"信的人私自的行为
    jingniao
        2
    jingniao  
       2017-09-29 20:21:21 +08:00 via Android   ❤️ 1
    你说的“单播”,无线领域我不太清楚系列,但目前的交换机路由器应该早就不会把包发给所有主机,然后让主机过滤。
    会出现你说的那种,在久远的过去,叫 hub
    jingniao
        3
    jingniao  
       2017-09-29 20:21:46 +08:00 via Android
    系列-细节
    sgissb1
        4
    sgissb1  
       2017-09-29 20:36:24 +08:00   ❤️ 3
    hub 时代的单播和广播你理解的没错。交换机时代,你的理解是不正确的。

    单播这样理解最简单,你只有一个女朋友,不管怎么样,每天下班以后看见是她。

    广播就是,全世界的女人都是你女朋友。

    多播就是,你有一个后宫。
    gamexg
        5
    gamexg  
       2017-09-29 21:11:37 +08:00   ❤️ 1
    额,
    tcp/ip 协议理解为邮寄明信片是最合适的。

    单播是你直接给某个人寄明信片,只有经手的快递员、邮局能够看到内容,你的邻居等正常情况下看不到。
    多播当时没认真学,大体是记得是一些人建立一个组,然后向邮局注册。之后别人直接把目的地设置为这个组,邮局会替你复印很多分发给组内成员。
    广播就是你拿个大喇叭直接喊,和你一条街道的人都能听到。

    注意上面都是说的现代的交换机设备,而不是已经不存在的集线器设备。
    rebeccaMyKid
        6
    rebeccaMyKid  
    OP
       2017-09-29 22:07:45 +08:00
    先感谢各位朋友的回复🙏

    @jingniao
    对对对,这个就是我的疑惑所在。我看书的时候一直以为是所有主机都会收到包然后让主机去过滤的。如果单播不只会发给一个主机的话,那这样广播的劣势和多播的优势其实就好理解了。
    @gamexg
    @sgissb1
    那我再往下想象一点,看我这个比喻对不对。
    假设有一个交换机,有 A、B、C 3 条线连着 3 台主机,那我理解现在的单播,是不是就是,交换机收到一个通往 A 主机的包,那交换机只会发送信号到 A,**只会发送到 A**。
    rebeccaMyKid
        7
    rebeccaMyKid  
    OP
       2017-09-29 22:09:05 +08:00
    然后 B,C 这两条线路是根本收不到东西的?
    rebeccaMyKid
        8
    rebeccaMyKid  
    OP
       2017-09-29 22:14:08 +08:00
    @GoodRainChen
    我明白你的意思,但是我想知道这里所谓的“路过”是什么意思。在一个链路里,就对外只有一台路由,对内假设都是双绞线连接路由器的情况下,假如有 XYZ3 台机子,X 发送一个信号给 Z,是整条链路都会有呢,还是只是 Z 能收到?就是说你的“邻居”能不能收到(这里先不管丢弃的问题)。上面一位大哥说是不用主机来过滤的。
    gamexg
        9
    gamexg  
       2017-09-29 22:14:13 +08:00   ❤️ 1
    @rebeccaMyKid #7 是的,标准情况下是这样。
    但是如果交换机 mac 地址表里面没有记录就会广播。

    交换机每收到一个包会将来源 mac 地址和网口绑定储存到 mac 地址表里面,然后从 mac 地址表里面找到目的 mac 地址对应的网口将包发过去,但是如果从 mac 地址表里面查询不到,就会广播。

    可以伪造很多 mac 地址将交换机 mac 地址表撑爆来将交换机降级为集线器。
    rebeccaMyKid
        10
    rebeccaMyKid  
    OP
       2017-09-29 22:24:23 +08:00
    @jingniao
    有线的话,我记得书上一幅图是交换机+双绞线连接主机,然后是全双工的,这样的话包在交换机(路由器)过滤,然后只发到某一条线路(双绞线)上,我想了想感觉是可以理解的。;D

    如果按这个逻辑来的话,我有点好奇无线是怎样的,无线是会建立并且(维护)一个主机 <----> 路由器的看不见的线路,主机只在收到发给自己的包的时候才会接收信号呢,还是,跟所谓以前的 hub 时代的集线器那样,主机不停地获取无线信号中的包,然后检查、过滤、检查、过滤,哦,是我的,往上交,哦,不是我的,丢掉。:D

    还有就是,我记得有种叫监听网卡的东西,这个东西我记得是能监听别人的数据(我记不得是能监听无线或是有线)。那这个东西应该就不能监听到有线网络下别人发的包吧。如果这个监听网卡能插一个水晶头用线连的话。但是我记得我看过这个教程这个监听网卡好像是可以监听无线链路的别人的数据包的,那是不是就是说无线链路是那种 “要主机来过滤包”,路由器收到包就往空气中丢,然后无线网卡不停地识别、过滤?

    哈哈问题有点多,不知道说清楚没有。没人回也算对自己的学习做个记录吧。
    lookingfor
        11
    lookingfor  
       2017-09-29 23:29:53 +08:00
    不知道可不可以这样来理解
    广播 类似于有线电视 所有台的信号一起给你发过来 你自己切着频道看
    单播 类似于网络播放器 看什么点什么
    sinxccc
        12
    sinxccc  
       2017-09-29 23:42:58 +08:00
    话说…你们不能这样把二层和三层混在一起讨论啊。
    carterdang
        13
    carterdang  
       2017-09-30 02:30:31 +08:00 via iPhone
    多播用于像 IPTV 这样的直播类业务,可以有效减少占用带宽,比如有总共 100 个人看电视,有 50 个人请求了同一频道,那么就可以按需将节目发给这 50 个人。
    snnn
        14
    snnn  
       2017-09-30 06:38:26 +08:00 via Android
    啥破书嘛。写的糊里糊涂的。二层三层混一起谈。
    rebeccaMyKid
        15
    rebeccaMyKid  
    OP
       2017-09-30 09:15:28 +08:00
    @sinxccc
    日本人写的书。。感觉比那本清华的计算机网络容易懂多了。。那本我是真的看着懵。 《自顶向下》看了一些感觉也不错。
    killadm
        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
    azh7138m
        17
    azh7138m  
       2017-09-30 13:24:48 +08:00
    @rebeccaMyKid 监听那个大概是这样的,发 arp 包欺骗目标机器,让它认为你是网关,然后数据就都过来了,或者就是 hub 那种大家直接就是坦诚相见。
    错了的话,别打我:)
    rebeccaMyKid
        18
    rebeccaMyKid  
    OP
       2017-09-30 14:45:12 +08:00
    @azh7138m
    但我朋友说监听好像有线局域网一般工具监听不了的耶,我没买过不知道。
    azh7138m
        19
    azh7138m  
       2017-09-30 15:58:26 +08:00
    @rebeccaMyKid 我们渣校下面都是辣鸡两层交换机,基本上是随便玩 :D
    sinxccc
        20
    sinxccc  
       2017-10-01 02:21:32 +08:00   ❤️ 1
    @rebeccaMyKid 呃,你提到的这三本书我都没看过,我的回复主要是说上面的各种讨论…

    组播本身的定义和实现都略复杂,不管是二层还是三层,看起来不够直观是正常的…至于广播的概念二层三层都有,但两者的原理和用途都不大一样,得分开理解。OSI 模型的关键点在于分层处理,每一层都只负责自己的事情(虽然实际中偶尔会有例外,不过那是特殊情况),你先分清楚 HUB、交换机和路由器分别是工作在哪一层的设备,然后把每一层基本的包转发规则弄清楚了,这些概念就好理解了。

    至于类比这种东西,可以用来给人描述大的概念却不可以用来解释原理和细节,毕竟世界上没有完全相同的两样东西,只要深究细节就一定会把自己绕进去。
    rebeccaMyKid
        21
    rebeccaMyKid  
    OP
       2017-10-01 12:22:54 +08:00 via Android
    @sinxccc 嗯,感谢。也就关键问题我会问一下,也不会挖太深,毕竟广度优先学习。
    iahu
        22
    iahu  
       2017-10-11 15:47:45 +08:00
    刚刚看到的一个篇图文,看最下面的那段解释非常明白
    http://www.epubit.com.cn/article/1020
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1075 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:36 · PVG 06:36 · LAX 14:36 · JFK 17:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.