参考笔记:未命名文件夹/redkoldnote/docs/计算机网络/Notes/计算机网络#网络层 Network Layer 231275036 朱晗
题目集合R1, R2, R6, R22, R23, R25, R30, R31,P2, P3, P4,P11,P15,P16,P17,P18,P19,P20¶
R1¶
网络层的数据分组:数据报(datagrame) 路由器和链路层交换器的根本区别:属于不同的网络层协议。 链路层交换器根据链路层帧的字段值做出转发决定,属于第二层链路层 路由器根据 datagram 的首部字段(long prefix match)进行匹配,属于第三层网络层
R2¶
-
数据平面的主要功能:
- 即每台路由器的功能。主要负责根据首部字段转发,即根据到达路由器输入链路的数据报(网络层的分组)如何转发到该路由器的输出链路之一
-
控制平面的主要功能:
- 即网络范围的逻辑。控制数据报沿着源主机到目的主机的端到端路径中路由器的路由方式。
R6¶
在 4.2 节中, 我们看到路由器通常由输入端口, 输出端口, 交换结构和路由选择处理器组成. 其中哪些是用硬件实现的, 哪些是用软件实现的? 为什么? 转到网络层的数据平面和控制平面的概念, 哪些是用硬件实现的, 哪些是用软件实现的? 为什么?
输入端口、输出端口、交换结构是用硬件实现的. 路由选择处理器是用软件实现的.
数据平面是用硬件实现的, 控制平面是用软件实现的. 原因是在数据平面处理两个数据报之间的时间非常短, 软件无法在这么短的时间内完成转发. 控制平面则不同于数据平面的, 它的主要功能是维护转发表, 逻辑比数据平面复杂多了, 而且它不需要短时间处理大量数据, 只需要及时更新就行了, 因此用软件实现.
R22¶
IP 地址 233.1.3.27 的 32 比特二进制等价形式是什么
233=1110 1001
1=0000 0001
3=0000 0011
27=0001 1011
233.1.3.27=11101001 00000001 00000011 00011011
R23¶
考虑使用 DHCP 的主机,获取它的 IP 地址、网络掩码、默认路由器及其本地 DNS 服务器的 IP 地址,列出这些值
- DHCP(Dynamic Host Configuration), 动态主机配置协议.
-
DHCP协议用于让一台主机在子网中获得它的IP地址. 过程如下:
-
首先主机向255.255.255.255 IP广播地址发送一个DHCP发现报文, 这个发现报文会在整个子网传播.
- 子网内的DHCP服务器收到DHCP发现报文后会向广播地址发送一个DHCP提供报文, 向需要IP的主机提供IP地址(以下图为例): 223.1.2.4, 网络掩码: 223.1.2.0/24, 默认路由器: 223.1.2.5 以及本地DNS服务器的IP地址.
- 主机可能会收到不只一个DHCP提供报文, 选择其中一个后向服务器发送DHCP请求.
- 被选中的DHCP服务器响应DHCP ACK报文.
R25¶
假设某应用每 20ms 生成一个 40 字节的数据块,每块封装在一个 TCP 报文段中,TCP 报文段再封装在一个 IP 数据报中,每个数据报的开销有多大?
TCP header 有 20 个字节,IP header 有 20 个字节(不包含额外 option 情况)每个 datagram 开销为 20+20+40=80
bytes
应用数据占比为 50%
R30¶
比较并对照 IPv4 IPv6 首部字段,它们有相同的字段吗? 有相同的字段。 version 、 ip source ip destination address
R31¶
有人说当IPv6 以隧道形式通过 IPv4 路由器,IPv6 将 IPv4 隧道作为链路层协议。你同意这种说法吗?
这种说法并不准确。IPv6 只是借用 IPv4 路由器来做,链路层协议仍然是原本的那一套,IPv4在这种隧道应用中实际上是作为一个网络层协议,而不是链路层协议。IPv6数据报被封装为IPv4数据报的载荷,通过IPv4的路由机制在网络中传输。IPv6的下一跳被映射到IPv4地址,但这仍是网络层的操作。
P2¶
假设两个分组在完全相同的时刻到达一个路由器的两个不同输入端口。同时假设在该路由器中没有其他分组。
a. 假设这两个分组朝两个不同的输出端口转发。交换结构使用一条共享总线,可能在相同时刻通过转发吗? 不可能。同时只能有一个分组经过总线转发
b. 共享总线换成内存。 不可能。不支持对同一内存的并发访问,所以时间一定有差异
c. 朝着相同的输出端口转发,当交换结构使用纵横式时,可能在相同时刻通过转发吗? 可能,纵横式支持并发转发。
P4¶
最少的方案:
把从上往下的输入端口和输出端口分别标记为 a, b, c 1, 2, 3
那么可以:
a-X-1,b-Y-2,c-Z-3
, 结束时 a:empty b: X c: Y
b-X-1,c-Y-2
一共 2 时隙
最多的方案:
尽量制造同一端口的阻塞。
a-X-1, b-X-1, c-Z-3
X
需要排队,一共 2 时隙
b-Y-2 c-Y-2
Y
需要排队,一共 2 时隙
一共 4 时隙
P11¶
考虑:
- subnet 1 need 60 interface, allocate 64bit, 6 bytes needed, so 223.1.17.0/26
can do
- subnets 2 need 90 interface, allocate 128, 7 bytes needed, so 223.1.17.128/25
- subnets 3 need 12 interface, allocate 16bits, 2 bytes needed, so 223.1.17.192/28
223.1.17.64/28
- 注意,128 的二进制 1000 0000
, 25 mask,则子网看到 128 的第一位 1,剩下的可以自由分配,则可能分配到 1100 0000-1100 1111
- 而 192 的二进制 1100 0000
, 28 mask,则子网看到 192 的前四位,1100
, 这四位分配保证前四位是 1100
,后四位可以自由分配。最大 1100 1111
- 具体来说, 223.1.17.128/25
的子网范围是 223.1.17.128~223.1.17.255
- 223.1.17.192/28
的子网范围是 223.1.17.192 - 223.1.17.207
二者有重合
- 若是改成了 223.1.17.64/28
, 则范围是 223.1.17.64-223.1.17.79
, 就没有重合了
由于 subnet 2 要求最高,要让 sub1 sub2 sub3 都满足,可以:
223.1.17.128/25
223.1.17.123/25
223.1.17.121/25
P15(子网分配问题)¶
考虑拓扑(12:00 顺时针开始)标记具有主机的三个子网为网络 A
, B
, C
标记没有主机的为 D
. E
, F
a. 为这 6 个子网分配网络地址,要满足下列限制:所有地址必须从 214.97.254/23
起分配;子网 A 应当具有足够地址以支持 250 个接口;子网 B 应当具有足够地址以支持 120 个接口;子网 C 应当具有足够地址以支持 120 个接口。当然,子网 D、E 和 F 应当支持两个接口。对于每个子网,分配采用的形式是 a.b.c.d/x
或 a.b.c.d/x ~ e.f.g.h/y
- a
- 214.97.254\23
,还剩下 9 bit, 最大可容纳 512
个 IP 地址
- 写成二进制:
- 214=255-41=255-(32+8+1)=1101 0110
- 97=0110 0001
- 254=1111 1110
- 即 11010110 01100001 1111111(7bit)
- 子网 A 要 250,给 256=8bits
子网 B 和 C 给 128=7bits
D E 分别给 2=2bits
同时要保证这几个子网前缀不冲突,可以这样做:
A:
214.97.255/24 (多加一位变255,以独享自己的256个ip地址)
B:
214.97.254.0/25 - 214.97.254.0/29C:
214.97.254.128/25D: 第 4 byte 的 0 和 1 都被 ABC 占用了,为了做出最大前缀的区分,选择第四字节添 0000 000 (ips)
214.97.254.0/31E: 添加 0000 001 (ips)
214.97.254.2/31`
F:添加 0000 01 (ips)
214.97.254.4/30
b.
子网类型 | 子网地址 |
---|---|
⼦⽹A | 214.97.255/24 (256 addresses) |
⼦⽹B | 214.97.254.0/25 - 214.97.254.0/29 (128-8 = 120 addresses) |
⼦⽹C | 214.97.254.128/25 (128 addresses) |
⼦⽹D | 214.97.254.0/31 (2 addresses) |
⼦⽹E | 214.97.254.2/31 (2 addresses) |
⼦⽹F | 214.97.254.4/30 (4 addresses) |
P16¶
//TODO 基于WHOIS数据确定IP地理位置的方法主要是通过查询IP地址的注册信息来获取地理位置数据。然而,这种方法的准确性依赖于注册信息的真实性和完整性。所以如果我用了虚假的注册数据,就不能通过 WHOIS 服务确定地理位置
P17¶
假定在源主机A 和目的主机B 之间的数据报被限制为 1500 字节(包括首部)。假设IP 首部为 20 字节,要发送一个 5MB 的MP3 文件需要多少个数据报?解释你的答案是如何计算的。
IP 首部 20 个字节,TCP 首部 20 个字节,能携带的有效负载最多为 MSS=1460
5*10^6/1460=3424.65753425
所以需要 3425 个数据报
P18¶
考虑在图 4-25 中建立的网络。假定 ISP 此时为路由器分配地址 24.34.112.235 以及家庭网络的网络地址是 192.168.1/24。
a. 在家庭网络中为所有接口分配地址
b. 假定每台主机具有两个进行中的 TCP 连接,所有都是对主机 128.119.40.86 的 80 端口的。在 NAT 转换表中提供 6 个对应表项。
接口 | IP地址 |
---|---|
路由器接口 | 192.168.1.1 |
第一台主机 | 192.168.1.2 |
第二台主机 | 192.168.1.3 |
第三台主机 | 192.168.1.4 |
NAT 转换表 | WAN端 | LAN端 |
---|---|---|
A | 24.34.112.235, 1000 |
192.168.1.2, 4000 |
A | 24.34.112.235, 1001 |
192.168.1.2, 4001 |
B | 24.34.112.235, 1002 |
192.168.1.2, 4002 |
B | 24.34.112.235, 1003 |
192.168.1.2, 4003 |
C | 24.34.112.235, 1004 |
192.168.1.2, 4004 |
C | 24.34.112.235, 1005 |
192.168.1.2, 4005 |
P19¶
假设你有兴趣检测 NAT 后面的主机数量。你观察到在每个IP 分组上IP 层顺序地标出一个标识号。由一台主机生成的所有IP 分组都发往外部。 a. 基于这个观察,假定你能够俘获由NAT 向外部发送的所有分组,你能概要给出一种简单的技术来检测NAT 后面的不同主机数量吗?评估你的答案
- a: 只需要找到所有分组的标识号的最大值和最小值,相减+1 即不同主机的数量。 这是因为:除了第一个是随机数生成,后继是顺序分配的。
- b 不行。因为不知道其他标识号和第一个标识号的关系。
P20¶
如果不对 NAT 做应用特定的配置,则不知道NAT 端口映射规则,那么直接 TCP 连接两个 NAT 后面的主机是无法做到的。 如果可以配置,双方可以约定一个端口映射规则,就可以直接通信了。