文档教程知识库【免费下载链接】CS-Base图解计算机网络、操作系统、计算机组成、数据库共 1000 张图 50 万字破除晦涩难懂的计算机基础知识让天下没有难懂的八股文 在线阅读https://xiaolincoding.com项目地址https://gitcode.com/GitHub_Trending/cs/CS-Base点击查看免费下载本篇技术指南以 IP 基础知识全家桶 为骨架系统梳理 IP 在网络层中的定位、IPv4 地址的分类与无分类CIDR机制、子网划分与路由控制、IP 分片重组、IPv6 与首部演进以及 DNS、ARP、DHCP、NAT、ICMP、IGMP 等与 IP 紧密相关的协议。读完本文你将能清晰区分网络层与数据链路层的职责熟练计算网络号/主机号并进行子网划分理解路由最长匹配与 NAT 的利弊并掌握各相关协议的工作流程直接用于网络排障与面试应答。前菜IP 的基本认识IP 在网络模型中的位置网络层的「端到端」定位在 TCP/IP 参考模型中IP 协议处于第三层也就是网络层。网络层的主要作用是实现主机与主机之间的通信也就是点对点end to end通信。关于 TCP/IP 四层模型的整体分工可参见仓库中的 TCP/IP 网络模型有哪几层应用层负责提供应用功能传输层提供端到端的数据传输服务网络层负责寻址与路由网络接口层负责在以太网等链路上完成帧的收发。很多读者分不清 IP网络层和 MAC数据链路层的区别其实一句话就能说清IP 的作用是主机之间通信用的负责在「没有直连」的两个网络之间进行通信传输MAC 的作用则是实现「直连」的两个设备之间通信负责在同一个链路的区间内传输。用旅行的例子类比去远方旅行需要一份行程表相当于网络层也要买飞机票、地铁票相当于数据链路层——每张票只能在某一限定区间内移动。区间内的出发点好比源 MAC 地址目标地点好比目的 MAC 地址整个行程的开始好比源 IP终点好比目的 IP。只有行程表没有车票到不了目的地只有车票没有行程表不知道该坐什么车、在哪换乘数据链路层与网络层必须兼备才能实现向最终目标地址的通信。还有一个关键细节旅行途中不断换乘交通工具但行程的起点和终点始终不变。网络数据传输也是如此——源 IP 地址和目标 IP 地址在传输过程中不会变化只有源 MAC 地址和目标 MAC 地址一直在变每经过一个路由器都会改写 MAC 头部详见 键入网址到网页显示期间发生了什么 中的「两点传输——MAC」章节。主菜一IP 地址的基础知识32 位与点分十进制在 TCP/IP 网络通信时为了保证能正常通信每个设备都需要配置正确的 IP 地址。IP 地址IPv4 地址由32 位正整数表示计算机内部以二进制处理。人类为了方便记忆采用点分十进制标记把 32 位 IP 地址按每 8 位一组共分成 4 组组间用「.」隔开再把每组转换成十进制例如192.168.1.10。32 位二进制全为 1 时IP 地址达到最大值255.255.255.255理论最大允许约43 亿2³²台设备寻址。不过请注意两点IP 地址不是按主机台数配置的而是按网卡配置。服务器、路由器等设备往往有 2 个以上网卡也就有 2 个以上 IP 地址IP 地址由「网络标识」和「主机标识」两部分组成真正能连接网络的计算机个数远少于 43 亿。之所以今天设备远超 43 亿仍能上网靠的是可以更换 IP 地址的 NAT 技术它让可连接计算机数突破了 43 亿的限制详见后文「点心」部分。IP 地址的分类A、B、C、D、E 五类互联网诞生之初地址充裕科学家设计了分类地址把 IP 地址分成 A、B、C、D、E 五种类型其中前几位为分类号。A、B、C 三类由网络号和主机号两部分组成对应地址范围与最大主机个数如下表类别分类号首位网络号位数主机号位数地址范围最大主机数2^主机号位数 − 2A 类08 位24 位0.0.0.0 ~ 127.255.255.2552²⁴ − 2 16,777,214B 类1016 位16 位128.0.0.0 ~ 191.255.255.2552¹⁶ − 2 65,534C 类11024 位8 位192.0.0.0 ~ 223.255.255.2552⁸ − 2 254D 类1110无主机号—224.0.0.0 ~ 239.255.255.255用于多播E 类1111无主机号—240.0.0.0 ~ 255.255.255.255预留未使用最大主机数为什么都要减 2因为 IP 地址中有两个特殊值不能分配给主机主机号全为 1指定某个网络下的所有主机用于广播主机号全为 0指定某个网络网络地址本身。广播地址本地广播与直接广播广播地址用于在同一个链路中相互连接的主机之间发送数据包。当主机号全为 1 时就表示该网络的广播地址。例如把172.20.0.0/16的主机部分全部改为 1则得到广播地址172.20.255.255。广播分两种本地广播在本网络内广播例如网络地址192.168.0.0/24的广播地址是192.168.0.255。这个 IP 包会被路由器屏蔽不会到达192.168.0.0/24以外的链路上直接广播在不同网络之间广播例如192.168.0.0/24的主机向192.168.1.255/24发 IP 包收到包的路由器会转发给192.168.1.0/24使该网段所有主机192.168.1.1 ~ 192.168.1.254都能收到。由于存在一定安全问题多数路由器上会配置为不转发直接广播。D 类与 E 类多播与预留D 类和 E 类地址没有主机号不能用于主机 IP。D 类常用于多播组播E 类是预留分类。多播用于将包发送给特定组内的所有主机。广播无法穿透路由若想给其他网段发送同样的包就需要使用能穿透路由的多播。多播使用 D 类地址其前四位是1110剩下的 28 位是多播组编号。224.0.0.0 ~ 239.255.255.255是多播可用范围划分为三类范围用途224.0.0.0 ~ 224.0.0.255预留的组播地址只能在局域网内使用路由器不转发224.0.1.0 ~ 238.255.255.255用户可用的组播地址可用于 Internet 上239.0.0.0 ~ 239.255.255.255本地管理组播地址仅供内部网在特定本地范围使用分类地址的优点与缺点优点路由器或主机解析到一个 IP 地址时只需判断其首位是否为 0为 0 即 A 类就能快速找出网络地址和主机地址A/B/C 类分别以 0、10、110 开头D/E 类以 1110、1111 开头判断简单明了选路基于网络地址也很简单。缺点有两个直接催生了 CIDR同一网络下没有地址层次例如一个公司用了 B 类地址想按生产、测试、开发环境划分地址层次却做不到缺少灵活性不能很好地与现实网络匹配C 类最大 254 台主机太少一个网吧都不够用B 类最多 6 万多台又太多一般企业达不到这个规模闲置地址就是浪费。主菜二无分类地址 CIDR表示形式与子网掩码正因为分类地址存在上述缺点后来提出了无分类地址方案 CIDRClassless Inter-Domain Routing。CIDR 不再有分类的概念把 32 比特的 IP 地址划分为两部分前面是网络号后面是主机号。表示形式为a.b.c.d/x其中/x表示前 x 位属于网络号x 的范围是0 ~ 32这让 IP 地址划分极具灵活性。例如10.100.122.2/24/24 表示前 24 位是网络号剩余 8 位是主机号。另一种划分网络号与主机号的形式是子网掩码掩码的意思就是「掩盖掉主机号」剩余的就是网络号。将子网掩码和 IP 地址按位计算 AND即可得到网络号将子网掩码取反后与 IP 地址按位与则可得到主机号。例如在 TCP/IP 网络模型 中提到的10.100.122.0/24/24 表示子网掩码255.255.255.0其二进制是 24 个 1 加 8 个 0把10.100.122.2与255.255.255.0按位与得到的网络号就是10.100.122.0。为什么要分离网络号和主机号因为两台计算机要通信首先要判断是否处于同一个广播域网络地址是否相同。网络地址相同说明接收方在本网络可以直接把数据包发送给目标主机路由器寻址工作也正是通过匹配网络号把数据包转发到对应网络内。子网划分实例子网掩码还有一个作用划分子网。子网划分实际上是把主机地址分为两个部分——子网网络地址和子网主机地址未做子网划分的 IP 地址网络地址 主机地址做子网划分后的 IP 地址网络地址 子网网络地址 子网主机地址。以 C 类地址192.168.1.0、子网掩码255.255.255.192为例C 类前 24 位是网络号最后 8 位是主机号255.255.255.192的二进制为11111111.11111111.11111111.11000000说明从 8 位主机号中借用了 2 位作为子网号。借用 2 位子网号后可产生 4 个子网00、01、10、11划分结果如下表子网号2 位子网网络地址可用主机地址范围广播地址00192.168.1.0/26192.168.1.1 ~ 192.168.1.62192.168.1.6301192.168.1.64/26192.168.1.65 ~ 192.168.1.126192.168.1.12710192.168.1.128/26192.168.1.129 ~ 192.168.1.190192.168.1.19111192.168.1.192/26192.168.1.193 ~ 192.168.1.254192.168.1.255可见通过改变掩码位长度就可以灵活地控制子网规模——这也是「无分类」相比固定分类的核心优势。公有 IP 地址与私有 IP 地址在 A、B、C 分类地址中实际上还有公有 IP 和私有 IP 之分。平时办公室、家里、学校用的 IP 一般是私有 IP 地址这些地址允许组织内部 IT 人员自己管理、自己分配而且可以重复——你学校的某个私有 IP 和我学校的可以一样就像每个小区都可以有「1 栋 101 号」。公有 IP 地址由某个组织统一分配基本要求在整个互联网范围内保持唯一就像「中山路 666 号」只能有一家。要开一个博客网站让全世界访问就需要申请购买一个公有 IP。公有 IP 地址由ICANN互联网名称与数字地址分配机构管理其下属机构IANA负责按洲层层分配 IP 地址五大区域注册机构如下注册机构负责区域ARIN北美地区LACNIC拉丁美洲和一些加勒比群岛RIPE NCC欧洲、中东和中亚AfriNIC非洲地区APNIC亚太地区其中中国国内由CNNIC负责管理它是中国国内唯一指定的全局 IP 地址管理机构。IP 地址与路由控制IP 地址的网络地址部分用于路由控制。路由控制表中记录着网络地址与下一步应该发送至的路由器地址主机和路由器上都有各自的路由表。发送 IP 包时先确定 IP 包首部的目标地址再从路由控制表中找到与该地址具有相同网络地址的记录把 IP 包转发给下一个路由器若存在多条匹配记录就选择相同位数最多的网络地址即最长匹配。以典型链路为例主机 A 发送一个源地址10.1.1.30、目标地址10.1.2.10的 IP 包主机 A 的路由表找不到与目标地址相同的网络地址记录于是包被转发到默认路由路由器 1路由器 1 收到后在其路由表匹配到相同网络地址记录把 IP 数据包转发到10.1.0.2路由器 2路由器 2 同样比对路由表匹配成功把 IP 包从10.1.2.1接口发出最终经交换机转发到目标主机。在 Linux 中可用route -n命令查看路由表键入网址到网页显示 中给出了真实的路由匹配过程把目标地址与每条路由的Genmask做与运算结果与Destination一致即匹配其中目标地址和子网掩码均为0.0.0.0的条目是默认网关其他条目都无法匹配时自动命中把包发给Gateway列中的路由器 IP。环回地址不会流向网络环回地址是同一台计算机上程序之间进行网络通信时使用的默认地址。计算机使用特殊 IP127.0.0.1作为环回地址与之同义的主机名是localhost。使用该 IP 或主机名时数据包不会流向网络。关于 127.0.0.1 与 localhost、0.0.0.0 的区别及「断网也能 ping 通」的原理参见仓库文章 断网了还能 ping 通 127.0.0.1 吗断网后 ping 127.0.0.1 会走 lo0 本地回环接口假网卡数据被推入共享的input_pkt_queue链表后触发软中断由 ksoftirqd 内核线程取回并向上递交全程不经过真实网卡。IP 分片与重组每种数据链路的最大传输单元MTU都不相同例如 FDDI 数据链路 MTU 为 4352 字节以太网的 MTU 是 1500 字节。MTU 不同是因为每种数据链路的使用目的不同。当 IP 数据包大小大于 MTU 时IP 数据包就会被分片分片后的 IP 数据报重组只能由目标主机进行路由器不会重组。例如发送方发送一个 4000 字节的大数据报经以太网链路传输时需要分片成 3 个小数据报再交由接收方重组成大数据报。分片传输有一个致命问题一旦某个分片丢失整个 IP 数据报就会作废。因此TCP 引入了 MSS最大报文段长度在 TCP 层就按 MSS 分块MSS MTU − IP 头 − TCP 头从而避免 IP 层分片。数据以 MSS 为长度单位拆分每一块加上 TCP 头后交给 IP 模块发送即使某个分块丢失只需重传该分块对于UDP尽量不要发送大于 MTU 的数据报文否则一旦分片丢失整个 UDP 报文都会作废且无法通过重传恢复。关于 MTU/MSS 的关系及 Linux 协议栈中超过 MTU 的网络包在网络层分片、用 sk_buff 描述各层数据包data/segment/packet/frame的实现细节可参考 Linux 系统是如何收发网络包的。主菜三IPv6 基本认识与首部演进IPv6 的三大亮点IPv4 地址 32 位大约可提供 42 亿个地址早在2011 年就已分配完毕。IPv6 地址为128 位可分配地址数量惊人——有个广为流传的段子IPv6 可以保证地球上的每粒沙子都被分配到一个 IP 地址。IPv6 除了地址更多之外还有更好的安全性和扩展性可自动配置即使没有 DHCP 服务器也能自动分配 IP 地址做到即插即用首部简化、性能提升包头首部长度固定为 40 字节去掉了包头校验和减轻路由器负荷大幅提高传输性能安全性提升具备应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能。但 IPv4 与 IPv6 不能相互兼容不仅需要电脑、手机等设备支持还需要网络运营商升级现有设备这正是 IPv6 普及较慢的原因。IPv6 地址的标识方法IPv4 地址 32 位按每 8 位一组用点分十进制表示IPv6 地址 128 位按每 16 位一组、每组用冒号「:」隔开。若出现连续的 0 可以省略并用两个冒号「::」隔开但**一个 IP 地址中只允许出现一次「::」**。例如 IPv6 下的回环地址表示为::1IPv4 下是127.0.0.1IPv4 用ping 127.0.0.1IPv6 用ping6 ::1见 断网了还能 ping 通 127.0.0.1 吗。IPv6 地址的结构与类型IPv6 与 IPv4 类似通过 IP 地址的前几位标识地址种类主要有以下类型单播地址用于一对一的通信组播地址用于一对多的通信任播地址用于通信最近的节点最近的节点由路由协议决定没有广播地址广播功能由组播承担。其中单播地址又划分为三类每类有效范围不同单播地址类型作用范围对应关系链路本地单播地址同一链路单播通信不经过路由器IPv4 没有此类型唯一本地地址内网里单播通信相当于 IPv4 的私有 IP全局单播地址互联网通信相当于 IPv4 的公有 IPIPv4 首部与 IPv6 首部的差异IPv6 相比 IPv4 的首部改进主要有三点取消了首部校验和字段因为数据链路层和传输层都会校验IPv6 直接取消了 IP 层的校验取消了分片/重组相关字段分片与重组是耗时过程IPv6 不允许中间路由器进行分片与重组该操作只能在源与目标主机进行大幅提高路由器转发速度取消了选项字段选项字段不再是标准 IP 首部的一部分而是可能出现在 IPv6 首部「下一个首部」指出的位置上。删除该字段使 IPv6 首部成为固定长度 40 字节。点心与 IP 协议相关的技术与 IP 协议相关的技术不少包括 DNS、ARP 与 RARP、DHCP、NAT、ICMP、IGMP 六种常见且重要的技术。DNS域名解析上网时我们通常使用域名而非 IP 地址因为域名方便人类记忆。实现这一转换的就是DNS 域名解析它把域名网址自动转换为具体的 IP 地址。域名的层级关系DNS 中的域名用句点分隔如www.server.com句点代表不同层次间的界限越靠右的位置层级越高。根域在最顶层域名最后还有一个点如www.server.com.下一层是.com顶级域再下面是server.com。因此域名层级类似树状结构根 DNS 服务器 → 顶级域 DNS 服务器com→ 权威 DNS 服务器server.com。根域 DNS 服务器信息保存在互联网中所有 DNS 服务器里客户端只要能找到任意一台 DNS 服务器就能找到根域服务器再顺藤摸瓜找到目标。域名解析的工作流程浏览器先看自己的缓存没有就向操作系统缓存要还没有就检查本机域名解析文件hosts仍未命中才会向本地 DNS 服务器发起查询客户端发出 DNS 请求询问www.server.com的 IP发给本地 DNS 服务器客户端 TCP/IP 设置中填写的 DNS 服务器地址本地域名服务器查缓存若命中直接返回否则去问根域名服务器根 DNS 发现后缀是 .com告知www.server.com归 .com 区域管理给出 .com 顶级域名服务器地址本地 DNS 向顶级域名服务器发起请求顶级域名服务器给出负责www.server.com区域的权威 DNS 服务器地址本地 DNS 转而询问权威 DNS 服务器域名解析结果的原出处权威 DNS 服务器查询后把对应 IP 地址 X.X.X.X 告诉本地 DNS本地 DNS 再把 IP 返回客户端客户端与目标建立连接。整个过程与日常找人问路类似——只指路不带路。域名的完整解析链路还可参考 键入网址到网页显示 中的「真实地址查询——DNS」章节。ARP 与 RARP传输一个 IP 数据报时确定了源 IP 和目标 IP 后会通过路由表确定 IP 数据包的下一跳而网络层的下一层是数据链路层还需知道「下一跳」的MAC 地址。由于路由表中可以找到下一跳的 IP 地址所以可以通过ARP 协议求得下一跳的 MAC 地址。ARP 如何知道对方的 MAC 地址借助ARP 请求与 ARP 响应两种包主机会广播发送 ARP 请求包中包含想要知道的 MAC 地址的主机 IP同链路所有设备收到请求后拆包查看若请求中的目标 IP 与自己的 IP 一致就把自己的 MAC 地址塞入ARP 响应包单播返回给请求主机。操作系统通常会把第一次通过 ARP 获取的 MAC 地址缓存起来下次直接从缓存找但缓存有一定期限超期后会被清除。在 Linux 中可用arp -a查看 ARP 缓存内容发包时先查缓存未命中再发 ARP 广播查询详见 键入网址到网页显示。RARP 协议与 ARP 正好相反ARP 是已知 IP 求 MACRARP 是已知 MAC 求 IP常用于把打印机服务器等小型嵌入式设备接入网络。通常需要架设一台 RARP 服务器预先注册设备的 MAC 地址与 IP 地址设备接入后发送「我的 MAC 地址是 XXXX请告诉我我的 IP 地址」的请求RARP 服务器应答「MAC 为 XXXX 的设备IP 为 XXXX」设备据此设置自己的 IP。DHCP动态获取 IP 地址DHCP 在生活中非常常见电脑通常通过 DHCP 动态获取 IP 地址省去手动配置 IP 信息的繁琐过程。注意DHCP 客户端进程监听 68 端口DHCP 服务端进程监听 67 端口。获取 IP 分四步DHCP 发现报文DHCP DISCOVER客户端没有 IP 地址也不知道 DHCP 服务器地址因此使用 UDP广播通信广播目的地址255.255.255.255端口 67源 IP 地址0.0.0.0端口 68链路层再把帧广播给网络中所有设备DHCP 提供报文DHCP OFFERDHCP 服务器收到发现报文后仍用 IP 广播地址255.255.255.255响应携带可租约的 IP 地址、子网掩码、默认网关、DNS 服务器以及IP 地址租用期DHCP 请求报文DHCP REQUEST客户端收到一个或多个提供报文后选择一个服务器回显配置的参数DHCP ACK 报文服务端应答所要求的参数。收到 DHCP ACK 后交互完成客户端即可在租用期内使用分配的 IP。若租约快过期客户端会再发 DHCP 请求报文服务器同意续租则回 DHCP ACK 延长租期不同意则回DHCP NACK客户端必须停止使用该 IP。整个 DHCP 交互全程使用 UDP 广播通信。DHCP 中继代理广播包无法被路由器转发若 DHCP 服务器与客户端不在同一局域网难道每个网段都要配一个 DHCP 服务器解决方案是DHCP 中继代理——客户端向中继代理发送 DHCP 请求包中继代理收到广播包后以单播形式发给 DHCP 服务器服务器应答后中继代理再把应答广播给客户端。这样不同网段的 IP 地址分配也可以由一个 DHCP 服务器统一管理。NAT 与 NAPT缓解 IPv4 地址耗尽IPv4 地址紧缺无分类地址只能减缓耗尽速度因此又提出网络地址转换 NAT同公司、家庭、教室内的主机对外通信时把私有 IP 地址转换成公有 IP 地址。不过普通 NAT 是「N 个私有 IP 就要 N 个公有 IP」并没有真正缓解地址耗尽。由于绝大多数网络应用使用 TCP 或 UDP 传输因此可以把IP 地址 端口号一起转换这样用一个全球 IP 地址即可这种技术叫网络地址与端口转换 NAPT。NAPT 的例子两个客户端192.168.1.10和192.168.1.11同时与服务器183.232.231.172通信本地端口都是 1025。此时两个私有 IP 都转换为公有地址120.229.175.121但以不同的端口号区分NAPT 路由器生成一张转换表正确转换地址与端口的组合使两个客户端能同时与服务器通信。转换表在 NAT 路由器上自动生成TCP 情况下三次握手的 SYN 包一经发出即生成表项收到关闭连接时 FIN 包的确认应答后从表中删除。NAT 的缺陷NAT/NAPT 都依赖转换表外部无法主动与 NAT 内部服务器建立连接因为转换表没有对应记录转换表的生成与转换操作会产生性能开销通信过程中若 NAT 路由器重启所有 TCP 连接都会被重置。解决方案主要有两种一是改用 IPv6——每台设备都可以配置公有 IP 地址无需地址转换但普及仍需时间二是NAT 穿透技术——让网络应用程序主动发现自己位于 NAT 设备之后主动获取 NAT 设备的公有 IP 并建立端口映射条目由 NAT 设备后的应用程序自动完成这样客户端主动配合 NAT 设备建立映射无需 NAT 设备来进行转换。ICMP互联网控制报文协议ICMP 全称Internet Control Message Protocol互联网控制报文协议核心关键词是「控制」。网络包在复杂的网络环境中会遇到各种问题当遇到问题时需要传出消息报告问题原因以便调整传输策略、控制整个局面。ICMP 主要功能包括确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因、改善网络设置等。例如主机 A 向主机 B 发数据包途中路由器 2 未能发现主机 B 的存在路由器 2 就会向主机 A 发送 ICMP 目标不可达数据包说明原因。ICMP 的这类通知消息使用 IP 发送ICMP 报文封装在 IP 包里工作在网络层是 IP 协议的助手。ICMP 报文大致分为两大类查询报文类型用于诊断典型如回送请求类型8与回送应答类型0ping命令正是利用这两类消息实现的——在 ping 的工作原理 中有完整讲解差错报文类型通知出错原因常见类型包括目标不可达类型3代码 0/1/2/3/4 分别表示网络不可达、主机不可达、协议不可达、端口不可达、需要分片但设置了不分片位、原点抑制类型4、重定向类型5、超时类型11TTL 减到 0 时由路由器发送。ICMP 差错报文还是tracerouteWindows 下为tracert的工作原理它故意从 TTL1 开始递增发送 UDP 包强制接收「时间超时」差错报文来追踪沿途路由器再填入一个不可能的端口号大于 3000当收到「端口不可达」差错报文时即确认到达目的主机同时利用「需要分片但设置了不分片位」代码 4做路径 MTU 发现。IGMP因特网组管理协议ICMP 与 IGMP 一点关系都没有不要混淆。前面提到组播地址D 类地址只有组内主机能收到组播数据包那么如何管理主机是否属于某个组这需要IGMP 协议。IGMP 工作在主机组播成员与最后一跳路由器之间IGMP 报文向路由器申请加入和退出组播组。默认情况下路由器不会把组播包转发给连接的主机除非主机通过 IGMP 加入组播组主机申请加入时路由器记录 IGMP 路由表后续就把组播包转发给对应主机IGMP 报文采用 IP 封装IP 头部的协议号为 2TTL 字段值通常为 1因为 IGMP 只工作在主机与所连接的路由器之间。IGMP 分三个版本IGMPv1、IGMPv2、IGMPv3。以IGMPv2为例说明两个工作机制常规查询与响应路由器周期性发送目的地址为224.0.0.1表示同一网段内所有主机和路由器的IGMP 常规查询报文组内主机收到查询后启动「报告延迟计时器」时间随机通常 0~10 秒计时器超时后发送IGMP 成员关系报告报文源 IP 为主机 IP目的 IP 为组播地址若在定时器超时前收到同组其他主机的报告报文则自己不再发送以减少网络中多余的 IGMP 报文路由器收到成员关系报文后在 IGMP 路由表中加入该组播组此后组播数据到达即转发出去。离开组播组两种情形网段中仍有该组成员主机 1 要离开组224.1.1.1发送目的地址为224.0.0.2发向网段内所有路由器的离组报文路由器收到后以 1 秒为间隔连续发送 2 个 IGMP 特定组查询报文主机 3 仍是组成员立即响应路由器确认组内仍有成员继续转发该组播数据网段中没有该组成员路由器发出特定组查询后无主机响应一定时间后认为该网段已无该组成员不再向该网段转发该组播地址的数据包。读者问答组播与主机 IP 的关系问假设一台机器加入组播地址需要把 IP 改成组播地址吗如果离开某个组播地址需要 DHCP 重新请求 IP 吗组播地址不是用于机器 IP 地址的因为组播地址没有网络号和主机号跟 DHCP 没关系。组播地址一般用于 UDP 协议机器发送 UDP 组播数据时目标地址填的是组播地址组播组内的机器都能收到数据包。是否加入/离开组播组是由socket 的一个接口实现的主机 IP 不需要改变。参考资料与延伸阅读本篇内容整理自《图解网络》系列参考资料包括《计算机网络——自顶向下方法》陈鸣译机械工业出版社、《TCP/IP 详解 卷 1协议》范建华译机械工业出版社、《图解 TCP/IP》竹下隆史人民邮电出版社。仓库内与本文强相关的延伸阅读TCP/IP 网络模型有哪几层网络层在四层模型中的定位、子网掩码与网络号/主机号计算键入网址到网页显示期间发生了什么DNS 解析、路由表匹配、ARP 获取 MAC 的完整调用链ping 的工作原理ICMP 查询报文与差错报文的类型、ping 与 traceroute 的底层机制断网了还能 ping 通 127.0.0.1 吗回环地址、localhost 与 0.0.0.0 的区别及本地回环收发路径Linux 系统是如何收发网络包的网络包在 Linux 协议栈中的封装、MTU 分片与 sk_buff 实现。赞分享文档教程知识库【免费下载链接】CS-Base图解计算机网络、操作系统、计算机组成、数据库共 1000 张图 50 万字破除晦涩难懂的计算机基础知识让天下没有难懂的八股文 在线阅读https://xiaolincoding.com项目地址https://gitcode.com/GitHub_Trending/cs/CS-Base点击查看免费下载相关推荐IT-Tools网络工具深度解析IP地址计算、子网划分、MAC地址查询IT Tools网络工具深度解析IP地址计算、子网划分、MAC地址查询 IT Tools是一个专为开发者和IT专业人员打造的在线工具集合提供了超过80种实用开发工具前端CS-Base 图解计算机基础图解网络、图解系统、图解 MySQL、图解 Redis 知识库全览CS Base 图解计算机基础图解网络、图解系统、图解 MySQL、图解 Redis 知识库全览 CS Base 是一个以「图解 通俗讲解」为核心形式的计文档教程知识库什么是OpenUPMUnity开源包注册表的完整指南什么是OpenUPMUnity开源包注册表的完整指南 OpenUPM是一个开源的Unity Package ManagerUPM包托管和构建服务旨在为U上一篇解决TeleHash NAT穿透难题P2P通信中的关键技术突破下一篇SwarmForge与机器学习AI代理如何使用ML模型创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考