🌐 第三章 网络间的通用语言TCP/IP
📄 一句话概括

前面几节默认"一个发、一个收",但网络里其实有三种收件人形态:单播(1 对 1,只给一台)、广播(1 对网段内全部,所有人被迫收)、组播(1 对指定的一群,入了组的才收)。三句话记牢:广播出不了网段、组播要先进群、日常几乎全是单播。

一、为什么还要分"接收方是谁"

3.8 解决了"送到哪台设备",但还有另一半问题没答:这个包该给几台设备?

三种需求,对应三种通信形态:

形态 收件人 类比
单播 Unicast 1 台 打电话
广播 Broadcast 本网段全部 小区大喇叭
组播 Multicast 入组的一群 微信群

二、单播:一人一封

三、广播:全小区大喇叭

一个包,本网段内所有设备都得收("网段"就是 3.8 讲的网络部分划出来的范围)。

广播地址有两种写法:

类型 长相 用在什么时候
定向广播 主机部分全 1 —— 192.168.1.255 已经知道自己在哪个网段,要叫全段
受限广播 255.255.255.255 还不知道自己在哪个网段时(比如刚开机找 DHCP)

本节最关键的一条规矩:

路由器默认不转发广播。 广播被死死关在它出生的那个网段里。

谁在用广播:

代价也很实在:所有设备都被迫处理一遍,没法拒收。设备一多,广播就成了噪声源(广播风暴)——这正是 3.8 说"分段能隔离广播"的原因。

四、组播:只在群里说

一个包,只送给"加入了这个组"的设备。

💡 "给 100 个人发同一个东西"有两种做法,别混
  • 单播发 100 次:发送方自己发 100 遍,它累、沿线的链路也累
  • 组播发 1 份:发送方只发一次,网络设备在需要分岔的地方复制

判据是"发送方发几份",不是"几个人收到"。所以单播发多次虽然也是一对多,但它不是组播。

五、顺带认得第四种:任播(Anycast)

一组设备共用同一个地址,谁离得近就把包送给谁。DNS 根服务器、大型网站的 CDN 节点常用这一招——你从宜昌访问,可能落到武汉的节点;从北京访问,落到北京的节点。会认级别,知道有这么回事即可。

六、三种形态对照表

(配合上面两张图看)

单播 Unicast 广播 Broadcast 组播 Multicast
收件人 1 台 本网段全部 入组的一群
地址长相 普通 IP 主机位全 1(192.168.1.255)或 255.255.255.255 224.0.0.0 ~ 239.255.255.255
能否跨网段 能 不能(路由器拦下) 能(需组播路由支持)
要不要"报名" 不用 不能拒收 必须入组
典型用途 网页 / 下载 / 聊天 DHCP、ARP 直播、视频会议、路由协议
类比 打电话 小区大喇叭 微信群

七、动手 Demo23:把三种形态找出来

  1. 看 ARP 名册的来历(回看 3.2 的实验): arp -a
  2. 表里那些"IP ↔ MAC"配对,全是广播问出来的答案:当时喊的是"谁是这个 IP"
  3. 换台设备接入、或者重启路由器,名册会变——因为它重新问了一遍

  4. 看广播地址: ping 192.168.1.255

  5. 通或不通都正常:多数系统默认不回应 ICMP 广播请求(Windows 默认不回),别当成故障
  6. 想的话把最后一段换成你家网段的号(先 ipconfig 确认自己的网段,3.8 学的算法)

  7. 试组播地址: ping 224.0.0.1

  8. 224.0.0.1 是"本网段所有主机"这个组的编号,几乎所有设备默认都在这个组里
  9. 常见现象是你自己的电脑回了自己(其他设备多不响应)——理解成"验票入场"就行,没回音不代表组播没工作

  10. 30 秒实验:盯着"非单播数据包"看(3.6 那道题的答案) netstat -e

  11. 3.6 时你看过这里的「单播数据包」,本节补上另一半:「非单播数据包」= 广播 + 组播
  12. 记下数字,什么都不做等半分钟,再跑一遍——数字往往会自己涨
  13. 原因:后台一直在悄悄做事(ARP 查询、DHCP 续租、各种组播发现),这些都不是单播
  14. 结论:网络里从来不只有单播,只是你肉眼看得见的网页、下载恰好都是单播

  15. 可选: netsh interface ipv4 show joins

  16. 看本机加入了哪些组播组——输出里 224.0.0.x 那几行就是
  17. 你会发现自己"莫名其妙"就在好几个组里(比如 224.0.0.1、224.0.0.251),全是系统自动加入的
❓ 自测一下
  1. 三种通信形态各自把包送给谁?
  2. 广播为什么出不了网段?谁在拦它?
  3. 广播地址有哪两种写法?各用在什么场合?
  4. 组播和"给每个人各发一份单播"差在哪里?
  5. DHCP 和 ARP 为什么必须用广播?
  6. netstat -e 里的"非单播数据包"指的是什么?

答案: ① 单播 = 1 台设备;广播 = 本网段内全部设备;组播 = 加入了这个组的一群设备。 ② 因为路由器默认不转发广播——广播被限制在出生的那个网段内。这也是"分段能隔离广播"(3.8)的原因。 ③ 定向广播(主机部分全 1,如 192.168.1.255,指向某个具体网段)和受限广播 255.255.255.255(永不跨网段,用于"还不知道自己在哪个网段"时找 DHCP)。 ④ 判据是"发送方发几份":组播发送方只发一份,复制与转发交给网络设备;发 N 份单播则是发送方自己发 N 次,发送方和沿线链路都更累。 ⑤ 因为它们要找的对象还不知道是谁:DHCP 开机时不知道服务器地址,ARP 不知道某个 IP 对应的 MAC,只能"喊一嗓子问全网段"。 ⑥ 广播包 + 组播包的总和,也就是单播之外的所有包。

常见误区:

  1. ❌ "广播能传到互联网上" → 路由器默认不转发广播,广播只在网段内活动
  2. ❌ "组播就是广播的另一个名字" → 广播是网段内所有人被迫收;组播只有入了组的人才收
  3. ❌ "给多个人发就是组播" → 判据是发送方发几份;单播发多次也是一对多,但那不是组播
  4. ❌ "255.255.255.255 就是本网段的广播地址" → 那是受限广播;本网段的定向广播是 192.168.1.255(主机位全 1)
  5. ❌ "224.0.0.1 属于某台设备" → 它是一个组播组的编号,不是谁的门牌,没人"拥有"它
  6. ❌ "广播多发点没关系" → 网段内每台设备都得处理一遍,广播泛滥会拖慢整段网络(广播风暴)

八、下一步学什么

相关笔记