Q: 回忆TCP/IP协议栈的内容
A: 中间部分的 ICMP 以及 IGMP 协议处于网络层和传输层的协议,ICMP 协议是起了一个桥梁的作用,作用就是为了更加有效的转发 IP 数据报和提高交付成功的机会。

Q: IP数据报的格式
A: 
IPv4 首部字段
IP 首部前两个字节往往以 0x45 开头,解题时可用于定位 IP 数据报的开始位置。
版本字段
Q: IPv4 数据报中版本字段的值是多少?
A: 4。

首部长度字段
Q: IPv4 首部长度字段占多少位?
A: 4 位。

Q: IPv4 首部长度字段的单位是什么?
A: 以 4B 为单位。

Q: IPv4 首部长度字段的最大值是多少?
A:

Q: IPv4 最常用的首部长度是多少?
A:

Q: IPv4 最常用的首部长度字段值是多少?
A: 5(此时不使用任何可选字段)。

总长度字段
Q: IPv4 总长度字段占多少位?
A: 16 位。

Q: IPv4 数据报的最大长度是多少?
A:

Q: 以太网帧的最大传送单元(MTU)是多少?
A:
标识字段
Q: IPv4 标识字段占多少位?
A: 16 位。

Q: 标识字段的作用是什么?
A: 它是一个计数器,每产生一个数据报就加 1,并赋值给标识字段,用于分片时重装成原来的数据报。
例如原先的标识为 62323,那么此时进行分片,那么分片的数据标识依旧是 62323,主要目的是为了之后多个同一组的分片发送到了接收端时能够进行组合成完成的数据报。
标志字段
Q: IPv4 标志字段占多少位?
A: 3 位。

Q: 标志字段的最低位是什么,为1时表示什么,为0时表示什么?
A:
- 占 3 位,其中第 1 位用来最高位保留不用,只有后 2 位才有用,此时三个位举例为 x _ _
- 中间位(x 后面的这一位):
DF(Don't Fragment),表示是否进行分片。DF = 1:禁止分片。DF = 0:允许分片。
- 最低位(x 后面的第 2 位):
MF(More Fragment),表示后面是否有分片。实际只有在 DF = 0 的时候这个第三位才有效。MF = 1:表示当前这个分片后还有分片。- MF = 0 `:代表当前这块分片已经是最后一片了,之后没有分片。
- 中间位(x 后面的这一位):
Q: 标志字段中间的一位(标志字段有3位)是什么?
A: DF。

Q: 只有当
A: 0。

片偏移字段
Q: IPv4 片偏移字段占多少位?
A: 13 位。

Q: 片偏移字段的作用是什么?
A: 它指出较长的数据报在分片后,某片在原数据报中的相对位置。
Q: 片偏移字段以多少为偏移单位?
A: 以

除最后一个分片外,每个分片的长度一定是 8B 的整数倍
生存时间 (TTL) 字段
Q: IPv4 生存时间 (TTL) 字段占多少位?
A: 8 位。

Q: TTL 字段的作用是什么?
A: 标识数据报在网络中的寿命,以确保数据报不会永远在网络中循环。
Q: 路由器在转发数据报前会对 TTL 字段做什么?
A: 将 TTL 减 1。
Q: 如果 TTL 被减为 0,会发生什么?
A: 该数据报必须丢弃。
协议字段
Q: IPv4 协议字段占多少位?
A: 8 位。

Q: IPv4协议字段的作用是什么?
A: 协议字段用来指明 IPv4 数据报的数据部分是何种协议数据单元 (PDU)。指出此数据报携带的数据使用何种协议,即数据报的数据部分应上交给哪个协议进行处理。
协议字段的值
Q: ICMP 在IPv4协议的字段值是多少?
A: ICMP 协议的字段值为 1。
Q: IGMP 在IPv4协议的字段值是多少?
A: IGMP 协议的字段值为 2。
Q: IPv6 在IPv4协议的字段值是多少?
A: IPv6 协议的字段值为 41。
Q: OSPF 协议的字段值是多少?
A: OSPF 协议的字段值为 89。
首部检验和字段
Q: IPv4 首部检验和字段占多少位?
A: 16 位。


Q: IP数据报首部检验和字段的检验范围是?
A: 它只检验数据报的首部,但不包括数据部分。
Q: 为什么IP数据报首部检验和字段不检验数据部分?
A: 因为数据报每经过一个路由器,都要重新计算首部检验和,不检验数据部分可减少计算的工作量。
源地址字段
Q: IPv4 源地址字段占多少位?
A:

目的地址字段
Q: IPv4 目的地址字段占多少位?
A:

长度标记的基本单位
Q: IPv4 数据报首部中的首部长度、总长度、片偏移的基本单位分别是什么?
A: 首部长度:
最大传送单元 (MTU)
Q: 一个链路层数据帧能承载的最大数据量称为什么?
A: 最大传送单元 (MTU)。
Q: 为什么链路层的 MTU 严格地限制了 IP 数据报的长度?
A: 因为 IP 数据报被封装在链路层的帧中。
在 IP 数据报的源与目的地路径上的各段链路可能使用了不同的链路层协议,有不同的 MTU。
以太网的 MTU
Q: 以太网的 MTU 是多少?
A:
广域网的 MTU
Q: 许多广域网的 MTU 不超过多少?
A:
IP 数据报分片
Q: 当 IP 数据报的总长度大于链路 MTU 时,会发生什么?
A: 需要将 IP 数据报中的数据分装在多个较小的 IP 数据报中。这些较小的数据报称为片
IP 数据报片的重组
标识、标志和片偏移字段
Q: 目的主机使用 IP 首部中的哪些字段来完成对片的重组?
A: 标识、标志和片偏移字段。

标识号
Q: 创建一个 IP 数据报时,源主机为该数据报加上什么?
A: 一个标识号。

Q: 当一个路由器需要将一个数据报分片时,形成的每个数据报 (即片) 具有什么?
A: 原始数据报的标识号。

Q: 目的主机如何确定哪些数据报属于同一个原始数据报的片?
A: 通过检查数据报的标识号。

标志位
Q: IP 首部中的标志位占多少位?
A: 3 位。

Q: IP 首部中的标志位中,哪两位有意义?
A: DF (Don’t Fragment) 位和 MF(More Fragment)位。

Q: 当
A: 可被分片。

Q: MF 位用来告知目的主机什么?
A: 该 IP 数据报是否为原始数据报的最后一个片。

Q: 当
A: 相应的原始数据报还有后续的片。

Q: 当
A: 该数据报是相应原始数据报的最后一个片。

片偏移字段
Q: 目的主机在对片进行重组时,使用什么字段来确定片应放在原始 IP 数据报的哪个位置?
A: 片偏移字段。

IP 数据报分片计算
一个4000B的数据,要分到1500B的链路上,首先要先把这个数据的首部去掉,IP数据报的首部最小是20B,那么真实数据部分就是3980,然后要把它尽量以1500B装满一个片(注意,分出来的片也要带首部),一个片尽可能装满,尽可能少装片,那么就是第一个片1500B,去掉首部20B,真实负载量就是1480,第二个片也是同样的,真实负载量就是1480,然后3980减掉两个1480,还剩下1020的真实数据,这就说明最后一个片,带上首部的20B,一共就是1040B,而前两个就是满的1500B。
IP数据报的偏移段的计算,就是真实数据段的起始序号去除以8,见图:
本网络上的本主机
Q: 32 位全为 0,即 0.0.0.0 表示什么?
A: 本网络上的本主机。

Q: 主机号全为 0 表示什么?
A: 本网络本身。

分等级结构的好处
Q: IP 地址由哪两部分组成?
A: 网络号和主机号。
Q: IP 地址管理机构在分配 IP 地址时分配什么?
A: 只分配网络号。
Q: IP 地址主机号由谁分配?
A: 得到该网络的单位自行分配。
Q: 路由器转发分组时依据什么?
A: 仅根据目的主机所连接的网络号来转发分组。
Q: 分等级结构如何减小路由表所占的存储空间?
A: 路由器仅根据目的主机所连接的网络号来转发分组,从而减小了路由表所占的存储空间。
标志主机和链路接口
Q: 当一台主机同时连接到两个网络时,需要具备什么?
A: 两个相应的 IP 地址,其网络号必须是不同的。
Q: 路由器至少应具有多少个 IP 地址?
A: 两个或两个以上。
Q: 路由器每个端口的 IP 地址有何要求?
A: 每个端口都有一个不同网络号的 IP 地址。
同一个网络的 LAN
用转发器或桥接器连接的若干 LAN 仍然是同一个网络(同一个广播域)
Q: 同一个网络的 LAN 中所有主机的 IP 地址的网络号必须相同还是不同?
A: 必须相同。
Q: 同一个网络的 LAN 中所有主机的 IP 地址的主机号必须相同还是不同?
A: 必须不同。
ARP 协议与网络层地址解析
ARP 工作原理
Q: 当主机 A 欲向本局域网上的主机 B 发送 IP 数据报时,首先会做什么?
A: 主机 A 会先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
Q: 当主机 A 欲向本局域网上的主机 B 发送 IP 数据报时,如果主机 A 的 ARP 高速缓存中没有主机 B 的 IP 地址,它会如何操作?
A: 主机 A 会通过使用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 的帧来封装并广播 ARP 请求分组,使同一个局域网里的所有主机都收到此 ARP 请求。
Q: 主机 B 收到 ARP 请求后会如何响应?
A: 主机 B 向主机 A 发出 ARP 响应分组,分组中包含主机 B 的 IP 地址与 MAC 地址的映射关系。
Q: 主机 A 收到 ARP 响应分组后会做什么?
A: 主机 A 收到 ARP 响应分组后会将此映射写入 ARP 缓存,然后按查询到的硬件地址发送 MAC 帧。
ARP 请求与响应
Q: ARP 请求分组是通过什么方式发送的?
A: ARP 请求分组是通过广播发送的。
Q: ARP 响应分组是通过什么方式发送的?
A: ARP 响应分组是通过单播发送的。
ARP 的典型使用情况
Q: 当发送方是主机,要把 IP 分组发送到其他网络上的一台主机时,主机需要做什么?
A: 主机用 ARP 找到与本网络连接的路由器的硬件地址(默认网关),剩下的工作由路由器来完成。
Q: 当发送方是路由器,要把 IP 分组转发到其他网络上的一台主机时,路由器需要做什么?
A: 路由器在本网络用 ARP 找到与本网络连接的下一个路由器的硬件地址,剩下的工作由下一个路由器来完成。
ARP 的自动解析过程
Q: 从 IP 地址到硬件地址的解析过程是怎样的?
A: 从 IP 地址到硬件地址的解析是自动进行的,只要主机或路由器和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 就自动地将这个 IP 地址解析为数据链路层所需要的硬件地址。
ICMP
Q:为什么要发明ICMP
A:为了更有效地转发IP数据报以及提高IP数据报交付成功的机会
Q:ICMP运行在哪一层
A:TCP/IP体系结构的网际层使用了网际控制报文协议
Q:ICMP封装在哪里
A:ICMP报文被封装在IP数据报中发送

主机或者路由器使用ICMP来发送差错报告报文和询问报文
数据字段内容
Q: ICMP 差错报告报文的数据字段包含什么内容?
A: ICMP 差错报告报文的数据字段包含两个部分:
- 将 IP 数据报中的 IP 数据报首部以及后 8 个字节取出来。
- ICMP 差错报告报文正文。

数据字段长度
Q: ICMP 差错报告报文的数据字段长度是多少?
A: ICMP 差错报告报文的数据字段长度是 8 字节。

ICMP 报文构成
Q: ICMP 报文如何构成?
A: 1. 将 IP 数据报中的 IP 数据报首部以及后 8 个字节取出来作为 ICMP 报文的数据字段。
2. 接着加上 ICMP 的前 8 个字节。
3. 最终加上 IP 数据报的首部即可构成一个完整的数据报。

ICMP 报文类型
Q: ICMP 差错报告报文属于哪一层?
A: ICMP 差错报告报文是 IP 数据报,也就是网络层传输层传输单元的数据部分。

总结
Q: 请总结 ICMP 差错报告报文数据字段的特点。
A:
- 所有 ICMP 差错报告报文的数据字段都是一样的。
- 数据字段包含 IP 数据报首部以及后 8 个字节,以及 ICMP 差错报告报文正文。
- 数据字段长度是 8 字节。
所有 ICMP 差错报告报文的数据字段都是一样的
ICMP 差错报告与询问报文
ICMP 差错报告报文类型
Q: ICMP 差错报告报文共有几种常用的类型?
A: 共有 5 种常用的类型。
Q: ICMP 差错报告报文的类型包括哪些?
A:1. 终点不可达
2. 源点抑制
3. 时间超过
4. 参数问题
5. 改变路由(重定向)
Q: 当路由器或主机不能交付数据报时,会发送哪种类型的 ICMP 报文?
A: 终点不可达报文。
Q: 当路由器或主机因为拥塞而丢弃数据报时,会发送哪种类型的 ICMP 报文?
A: 源点抑制报文。
Q: 当路由器收到生存时间 (TTL) 为零的数据报时,会发送哪种类型的 ICMP 报文?
A: 时间超过报文。
Q: 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,会发送哪种类型的 ICMP 报文?
A: 参数问题报文。
Q: 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器,这属于哪种类型的 ICMP 报文?
A: 改变路由(重定向)报文。
不发送 ICMP 差错报告报文的情况
Q: 对 ICMP 差错报告报文,是否再发送 ICMP 差错报告报文?
A: 不再发送 ICMP 差错报告报文。
Q: 对第一个分片的数据报片的所有后续数据报片,是否发送 ICMP 差错报告报文?
A: 都不发送 ICMP 差错报告报文。
Q: 对具有多播地址的数据报,是否发送 ICMP 差错报告报文?
A: 都不发送 ICMP 差错报告报文。
Q: 对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报,是否发送 ICMP 差错报告报文?
A: 不发送 ICMP 差错报告报文。
ICMP 询问报文类型
Q: ICMP 询问报文共有几种类型?
A: ICMP 询问报文有 4 种类型。
Q: ICMP 询问报文的类型包括哪些?
A:1. 回送请求和回答报文
2. 时间戳请求和回答报文
3. 地址掩码请求和回答报文
4. 路由器询问和通告报文
Q: 最常用的 ICMP 询问报文类型是哪两种?
A: 最常用的是回送请求和回答报文、时间戳请求和回答报文。
ICMP 的常见应用
Q: ICMP 的两个常见应用是什么?(注意ping)
A: 分组网间探测 PING 和 Traceroute(UNIX 中的名字,在 Windows 中是 Tracert)。
Q: PING 使用了哪种类型的 ICMP 报文?
A: PING 使用了 ICMP 回送请求和回答报文。
Q: Traceroute(Tracert)使用了哪种类型的 ICMP 报文?
A: Traceroute(Tracert)使用了 ICMP 时间超过报文。
Q: PING 工作在哪一层?
A: PING 工作在应用层,它直接使用网络层的 ICMP
Q: Traceroute/Tracert 工作在哪一层?
A: Traceroute/Tracert 工作在网络层。
子网掩码的作用
Q: 子网掩码中的 1 和 0 分别对应什么?
A: 1 对应于 IP 地址中的网络号及子网号, 0 对应于主机号。
子网掩码的作用
Q: 子网掩码的主要作用是什么?
A: 子网掩码可用来指明分类 IP 地址的主机号部分被借用了多少位作为子网号。
Q: 如何通过子网掩码和 IP 地址求网络地址?
A: 主机或路由器将 IP 地址和其对应的子网掩码逐位 “与” (AND 运算), 就可得出相应子网的网络地址。
默认子网掩码
Q: A 类地址的默认子网掩码是什么?
A: 255.0.0.0
Q: B 类地址的默认子网掩码是什么?
A: 255.255.0.0
Q: C 类地址的默认子网掩码是什么?
A: 255.255.255.0
Q: 默认网关是什么?
A: 默认网关是子网与外部网络连接的设备, 也就是连接本机或子网的路由器接口的 IP 地址。
默认网关的作用
Q: 当主机发送数据时,如何通过子网掩码和默认网关判定数据的发送路径?
A: 根据所发送数据的目的 IP 地址,通过子网掩码来判定目的主机是否在子网中。若目的主机在子网中,则直接发送。若目的主机不在子网中,则将该数据发送到默认网关,由网关 (路由器) 将其转发到其他网络,进一步寻找目的主机。
子网掩码的配置要求
配置要求
Q: 在使用子网掩码的情况下,主机和路由器的配置要求有哪些?
A:1. 一台主机在设置 IP 地址信息的同时,必须设置子网掩码。
2. 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
3. 路由器的路由表中所包含的信息主要内容有目的网络地址、子网掩码、下一跳地址。
路由器与子网掩码
路由器的作用
Q: 路由器在分组转发时如何使用子网掩码?
A: 路由器将分组的目标地址和某网络的子网掩码按位相与,若结果与该网络地址一致,则路由匹配成功,路由器将分组转发至该网络。
路由信息交换
Q: 路由器在交换路由信息时需要做什么?
A: 路由器相互之间交换路由信息时,必须将自己所在网络的子网掩码告诉对方。
DHCP 协议(应用层协议)
主机如何获取到 IP 地址
Q: 主机获取 IP 地址的方式有哪些?
A: 主机获取 IP 地址主要包含两种方式:静态配置和动态分配。
Q: 什么是静态配置?
A: 静态配置是提前固定好 IP 地址配置。
Q: 什么是动态配置?
A: 动态配置是通过借助 DHCP 服务器来完成自动分配的过程。
DHCP 协议简介
Q: 什么是 DHCP 协议?
A: DHCP(动态主机配置协议)是应用层协议,使用客户/服务器方式,客户端与服务器通过广播方式进行交互,基于 UDP 传输。
Q: DHCP 协议提供哪些功能?
A: - 提供即插即用联网的机制
- 主机可以从服务器动态获取 IP 地址、子网掩码、默认网关、DNS 服务器名称与 IP 地址
- 允许地址重用
- 支持移动用户加入网络
- 支持在用地址续租
Q: 什么是地址重用?
A: 地址重用是指当一台主机离开网络时,DHCP 服务器可以将其分配的 IP 地址重新分配给新的主机。
Q: 什么是地址续租?
A: 地址续租是指 DHCP 服务器分配的 IP 地址具有时间性质,称为租用期,主机可以在租用期到期前请求续租。
DHCP 客户端和服务器之间的交换过程
Q: DHCP 客户端和服务器之间的交换过程是什么?
A: 1. 主机广播 “DHCP 发现” 报文:寻找网络中的 DHCP 服务器。
- 通俗:客户机问 “有没有 DHCP 服务器呀”。
2. DHCP 服务器收到 “DHCP 发现” 消息后,向网络中广播 “DHCP 提供” 报文:包括提供 DHCP 客户机的 IP 地址和相关配置信息。
- 通俗:服务器说 “有,有,有”,我现在给你分配和发给你。
3. 主机收到 “DHCP 提供” 消息,如果接收到 DHCP 服务器提供的广播参数,那么进行 “广播 DHCP 请求” 报文:主机向服务器请求提供 IP 地址。
- 通俗:客户机问我现在用你给我的 IP 地址了啊。
- 为什么彼此之间已经知晓 IP 地址了,还需要主机广播一个 DHCP 的请求报文呢?原因是采用这种广播的请求报文,可以告知其他的 DHCP 服务器,现在可以收回刚才分配到的地址了,我已经有了。
4. DHCP 服务器广播 “DHCP 确认” 报文:将 IP 地址分配给 DHCP 客户机。
- 通俗:服务器说用吧。
重点
Q: 为什么 DHCP 客户端和服务器之间通过广播形式进行通信?
A: 因为刚开始客户端机并没有 IP 地址,所以需要通过广播形式进行通信。
Q: DHCP 协议使用什么方式进行交互?
A: DHCP 协议使用客户/服务器方式,在交互的时候发送的都是广播报文,并且是一个动态分配 IP 地址的过程,基于 UDP 而不是 TCP。