V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
pyKun
V2EX  ›  Linux

关于广播风暴的问题

  •  
  •   pyKun · 2014-04-08 13:31:58 +08:00 · 8222 次点击
    这是一个创建于 3918 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 常说的广播风暴指的是类似dhcp过程,发了很多广播。这种时候广播指的是三层上的,而不是二层上的对吧?

    2. 追问,二层上的广播有可能“风暴”么?造成网络堵塞

    3. 在一台三层交换机上,在一个vlan里,通过设置掩码可以保证两个机器可以通信或者不可以,那这个时候,如果在这个vlan里,有个新加入的机器发dhcp请求ip,这个vlan里的所有机器都会得到这个包么?
    24 条回复    1970-01-01 08:00:00 +08:00
    nova
        1
    nova  
       2014-04-08 14:13:10 +08:00
    广播域是二层的。同一个网段内的设备处在一个广播域。


    VLAN可以分割广播域。
    julyclyde
        2
    julyclyde  
       2014-04-09 15:02:25 +08:00
    1 三层子网广播一般同时也是二层广播
    2 显然可以,要不然发明路由器干什么
    3 显然可以。VLAN根本不认识IP啊
    pyKun
        3
    pyKun  
    OP
       2014-04-09 15:28:05 +08:00
    @julyclyde

    >> 显然可以,要不然发明路由器干什么
    一个路由就是一个lan对吧?
    Eigrp
        4
    Eigrp  
       2014-04-10 00:19:50 +08:00
    1.dhcp是三层协议,所以发生的广播是三层的广播,如果是ARP那么就是发送二层广播
    2.二层的广播风暴一般是由于环路引起的,一般家用的交换机没有STP,你可以自己用根网线插到同一个交换机的两个口,看看数据灯是不是频闪
    3.收的到,因为dhcp是客户端发送广播请求分配ip地址
    Eigrp
        5
    Eigrp  
       2014-04-10 00:21:50 +08:00
    再补充下,三层广播的广播范围是整个网络,二层的广播范围仅限于本地
    pyKun
        6
    pyKun  
    OP
       2014-04-10 01:40:04 +08:00
    @Eigrp

    还是不太清楚二层和三层上风暴的差别,应该二层的范围比三层大吧?(有没有解释的清楚点的链接)

    >> 收的到,因为dhcp是客户端发送广播请求分配ip地址
    dhcp的包应该会发到二层上所有可通的点,然后求响应吧?所以在一个lan或者vlan里,dhcp包会发到所有地方,所以dhcp引起的广播风暴还是因为二层是到处可通的

    >> 再补充下,三层广播的广播范围是整个网络,二层的广播范围仅限于本地
    何为网络和本地?比如我有路由a,分别有子网(掩码)a1和a2,分别连一个交换机,每个交换机又有N个机器,所以就是有N个机器在a1子网,另N个机器在a2子网,那你说的本地和网络在这里指的是神马?
    ceyes
        7
    ceyes  
       2014-04-10 09:20:34 +08:00
    什么乱七八糟的,简直看不下去了!!

    三层哪来的广播风暴??
    三层都有IP地址,直接路由过去了,何来的广播。再说IP首部带有TTL字段,就是用来避免数据包在某个环路中无休止的传递.怎么造成风暴?

    楼主完全概念不清,建议先学习数据包封装解封装的过程,可以看《CCNA认证指南》或《TCP/IP》相应章节。这位 @julyclyde 兄就略扯了, @Eigrp 能别继续忽悠人家么。
    Eigrp
        8
    Eigrp  
       2014-04-10 09:49:45 +08:00 via iPhone
    @ceyes 三层不存在广播?你能别忽悠?什么都不说,如果三层没有广播,那你告诉我255.255.255.255这个广播地址有什么必要存在?TTL是为了避免环路产生风暴的解决办法,而不是网络本身就不存在风暴,既然学原理那就要区分开,完全是两码事
    Eigrp
        9
    Eigrp  
       2014-04-10 09:56:42 +08:00 via iPhone
    @ceyes 每个网络中为什么要有广播地址,这是嫌ip多的用不完?
    pyKun
        10
    pyKun  
    OP
       2014-04-10 11:18:59 +08:00
    @ceyes
    @Eigrp
    我就是概念不清楚想问清楚的,同问255.255.255.255是做什么的?这个和dhcp发出来的“广播”有关么?

    @ceyes
    我也想考个CCNA,有目标性的学习,顺便让自己告别概念不清晰的状态

    @Eigrp
    我6L的问题还没回答呢 =, =
    ceyes
        11
    ceyes  
       2014-04-10 11:34:07 +08:00
    @Eigrp sorry,忽略广播地址是我的错。
    我只是想强调数据包在二三层不同的传递方式……
    ceyes
        12
    ceyes  
       2014-04-10 12:34:42 +08:00
    @pyKun
    255.255.255.255 这是受限的广播地址,它不被路由,但会被送到相同物理网络段上的所有主机。这就是主机dhcp过程中发出的广播。

    IP地址中网络号全为1的就是广播地址,所谓本地,就是和你网络号一样的范围,这是一个广播域。

    比如你主机的IP地址 192.168.1.1/24 然后本地网络就是192.168.1.0/24 这个网段,其中有192.168.1.1-253 这么多地址可用(假设254是网关地址)。

    而192.168.2.0/24 就是别的网络了,想与其通信就需要路由器帮你路由。

    ping -b 255.255.255.255 数据包就只能在你本地网络被广播
    ping -b 192.168.1.255 和上面一样
    ping -b 192.168.255.255 数据包就会在192.168.0/32 这个大的网络中广播。
    pyKun
        13
    pyKun  
    OP
       2014-04-10 13:08:19 +08:00
    @ceyes

    >> 255.255.255.255 这是受限的广播地址,它不被路由,但会被送到相同物理网络段上的所有主机。这就是主机dhcp过程中发出的广播。

    这里有问题,“相同物理网络段”指的是什么,192.168.1.0/24这个算是逻辑上的吧,[0]这个解释的我不是很明白,看得见摸得着的设备连接起来的网络,这全世界的网络不都是看得见摸得着的设备连接的么...

    [0] http://baike.baidu.com/view/1913655.htm
    ceyes
        14
    ceyes  
       2014-04-10 13:40:31 +08:00
    @pyKun 那个应该是“网段”
    http://baike.baidu.com/view/685503.htm
    pyKun
        15
    pyKun  
    OP
       2014-04-10 16:15:10 +08:00
    @ceyes

    那也就是说掩码能阻止dhcp这个三层的广播发展成风暴了是么?
    nova
        16
    nova  
       2014-04-10 21:44:22 +08:00
    DHCP产生风暴?那要多少台电脑同时申请Ip才会出现? 目前来说 这个问题根本不用考虑的吧?
    pyKun
        17
    pyKun  
    OP
       2014-04-10 22:26:17 +08:00
    @nova
    想搞明白二层三层和风暴的问题,dhcp只是一个例子:)
    goophile
        18
    goophile  
       2014-04-10 22:35:18 +08:00
    @Eigrp 恕我愚钝,不懂EIGRP,我就问一下在你家的协议里255.255.255.255怎么“三层”广播、怎么路由?
    pyKun
        19
    pyKun  
    OP
       2014-04-11 17:02:28 +08:00
    @goophile

    能不能帮忙解释下,dhcp情况下如何造成可能的广播风暴,和vlan如何去隔离的

    前面几个人解释的太乱了
    julyclyde
        20
    julyclyde  
       2014-04-11 22:27:54 +08:00
    @pyKun 路由器每一个端口都是一个广播域
    goophile
        21
    goophile  
       2014-04-11 22:37:40 +08:00   ❤️ 3
    @pyKun 我解释起来也很混乱的。。。

    首先,交换机是二层设备,根据报文的MAC地址来转发,转发时不改变报文的MAC地址;路由器是三层设备,根据报文的IP地址转发,转发时会改变报文的MAC地址。

    交换机自己维护一张 MAC-端口 表,记录了哪个端口对应着哪些MAC地址。交换机某个端口收到一个报文时,先记录下源MAC和端口的对应关系,然后根据其目的MAC转发,如果是全1,即广播地址,就从其他所有端口转发出去。如果不是,那么在 MAC-端口 表中查询这个报文的目的MAC,如果有,就从对应的端口发送出去;如果没有,就从其他所有端口发送出去。

    用若干交换机连接起来的一个网络,即一个二层网络,如果没有划分VLAN,可以称之为一个广播网络,这个广播网中的所有主机共处一个广播域。因为根据交换机的转发机制,任何一个广播报文都会传播到所有交换机的所有端口连接的主机。如果多个交换机连接成了一个环,那么同一个广播报文会不停地在这些交换机之间来回转发,随着主机发出的广播报文比如ARP或者DHCP越来越多,就引发了广播风暴。(STP可解决环路的问题。)即使没有环路,如果网络中有恶意攻击者,大量发送广播报文,也会导致整个二层网络拥塞。

    二层网络很大的时候,大量广播是个严重问题。怎么办呢?划分VLAN。

    所谓VLAN,简单地说,就是把交换机的端口做个分组,只有同一个组的端口之间才能做二层转发,这个组就是一个VLAN,拥有一个VLAN号码。交换机发送和接收报文时,可以在报文的MAC地址后插入一个VLAN标签,接收的交换机检查这个标签,和当前端口的VLAN号一致才进行转发,否则直接丢弃。相当于交换机原来的 MAC-端口 表项变成了 VLAN-MAC-端口 表项,增加了VLAN检查。这样就把一个大的广播域划分为多个小的广播域,每个VLAN是一个广播域。

    VLAN之间通信,或者两个二层网络的主机之间通信,就得进行三层转发,得靠路由器。路由器根据三层的IP地址转发,并且不转发目的IP是广播地址的报文,所以路由器天然就是隔离广播域的设备。这么看的话,广播其实就是个二层的概念,因为只在同一个二层网络中发生。

    然后,其实现在交换机和路由器之间的差距已经越来越小了,交换机可以配置IP地址,可以做三层转发,可以跑路由协议;路由器也可以做二层转发。

    自顾自打了这么多字,希望有些帮助。
    pyKun
        22
    pyKun  
    OP
       2014-04-11 23:52:29 +08:00
    @goophile

    多谢回复,传统意义的路由器和交换机经你这么一说明白多了,交换机为啥交换也明白多了,还有vlan标签,希望别人看到这个帖子也能明白多了

    追问些

    >> 然后根据其目的MAC转发,如果是全1
    dhcp发的包实际上是因为包里的mac地址全是1,所以才会让广播域的所有机器都收到这个包是吧?

    另一个关于掩码的问题,掩码发明原因说是为了增加ip空间(书上说的),但其实也起到了隔离的作用。在一个二层能到的位置(同一广播域),主机a收到主机b的包,通过计算里面的ip和掩码来判断把这个包丢掉还是处理。所以dhcp中,发的是全为1的mac地址,然后为了确保不会被三层的机制让这个包被丢掉,所以才有的255.255.255.255吧?

    另外一个情况,主机a和主机b在同一个交换机上,比如192.168.1.1/24和192.168.1.2/24。这个时候尽管交换机知道mac和端口对应位置,但是包的传送还是需要网关吧?如果网关是192.168.1.3/24,a和b互传个文件应该很快,他们只经过1.1,1.2,1.3而已。但是如果qq传文件,目标地址就不是内网地址了,网关会一层一层往上问,到包回来后经历了很多机器,所以尽管同在一个交换机上的1.1和1.2,通过qq传个文件还是依赖网速了
    goophile
        23
    goophile  
       2014-04-13 10:22:56 +08:00   ❤️ 1
    @pyKun 不好意思一直没看见回复。。

    >> dhcp发的包实际上是因为包里的mac地址全是1,所以才会让广播域的所有机器都收到这个包是吧?
    对。实际上是DHCP Client发的包目的MAC和目的IP是广播地址,DHCP Server回复的包是单播的。你可以抓包看看。

    >> 另一个关于掩码的问题……
    可以这么理解。发DHCPv4请求的时候,主机不知道向谁请求,也只能用广播地址啊。

    >> 另外一个情况……
    交换机只根据MAC地址来转发,不看上层的东西,它也不区分接口接的是主机还是网关。报文发给谁是由主机决定的。主机发送报文的时候,先判断目的IP和自己是不是在同一网段,如果是,直接封装目的IP主机的MAC地址发送出去,不经过网关;如果不是同一网段,就封装网关的MAC地址,把报文发到网关,由网关根据路由转发。1.1和1.2通信,在同一网段,如果在同一VLAN,是不经过网关转发的。

    QQ传文件的机制我不了解,如果QQ传之前会判断是不是在同一局域网,应该可以直接发送不经过外网的;它也可能发到服务器再转发。不过我记得以前在局域网用QQ传文件,100M以太网可以达到10MB/s,和飞鸽传书一样,基本满速了,这么看应该是直接传不经过网关的。
    pyKun
        24
    pyKun  
    OP
       2014-04-13 11:57:33 +08:00
    @goophile

    多谢回答,最后那个情况的例子我再琢磨下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1099 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:22 · PVG 02:22 · LAX 10:22 · JFK 13:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.