综合练习题
本套综合练习题覆盖计算机网络全课程核心知识点,建议在完成各章节学习后进行自测。每题均附详细解答。
一、网络体系结构
题1
OSI 参考模型分为哪几层?请简述各层的主要功能,并说明 TCP/IP 模型与 OSI 模型的对应关系。
OSI 七层模型(从下到上):
- 物理层:传输原始比特流,定义电气、机械、功能和过程特性
- 数据链路层:将比特组装成帧,提供相邻节点间的可靠传输,差错控制、流量控制
- 网络层:路由选择和分组转发,实现不同网络间的通信
- 传输层:端到端的进程通信,提供可靠或不可靠的传输服务
- 会话层:建立、管理和终止会话
- 表示层:数据格式转换、加密解密、压缩解压缩
- 应用层:为用户应用提供网络服务
TCP/IP 四层模型与 OSI 的对应关系:
- TCP/IP 应用层 ↔ OSI 应用层 + 表示层 + 会话层
- TCP/IP 传输层 ↔ OSI 传输层
- TCP/IP 网际层 ↔ OSI 网络层
- TCP/IP 网络接口层 ↔ OSI 数据链路层 + 物理层
答案:OSI 七层如上所述;TCP/IP 四层对应 OSI 的应用+表示+会话、传输、网络、数据链路+物理。
题2
假设一个应用程序产生了 1000 字节的数据,交给传输层(TCP,首部 20 字节),再交给网络层(IP,首部 20 字节),再交给数据链路层(以太网,首部 14 字节 + FCS 4 字节)。请问最终在物理链路上传输的帧总长度是多少?各层的封装开销是多少?
- 应用层数据:1000 字节
- 传输层(TCP):添加 20 字节首部 → TCP 段 = 1000 + 20 = 1020 字节
- 网络层(IP):添加 20 字节首部 → IP 数据报 = 1020 + 20 = 1040 字节
- 数据链路层(以太网):添加 14 字节首部 + 4 字节 FCS → 以太网帧 = 1040 + 14 + 4 = 1058 字节
- 物理层还会添加 8 字节前导码(7字节前导 + 1字节SFD),但通常不计入帧长
各层封装开销:
- TCP 首部:20 字节(1.9%)
- IP 首部:20 字节(1.9%)
- 以太网首部+FCS:18 字节(1.7%)
- 总开销:58 字节(5.5%)
答案:以太网帧总长度为 1058 字节(不含前导码),总封装开销 58 字节。
二、物理层与数据链路层
题3
一个 10 Mbps 的以太网,最大电缆长度为 2500 m,信号传播速度为 m/s。求争用期和最小帧长。
- 单程传播时延:
- 争用期:
- 最小帧长: bit
- 换算为字节: 字节
但实际以太网标准规定最小帧长为 64 字节(考虑了中继器和更长的链路),对应的争用期为 51.2 μs。
答案:争用期为 25 μs,理论最小帧长为 250 bit(约31字节),实际标准为64字节。
题4
要发送的数据为 1101011011,生成多项式为 (即 ),求 CRC 校验码。
- 数据 (10位),(5位,)
- 数据左移4位:
- 用 做模2除法:
11010110110000 ÷ 10011
10011
-----
10011
10011
-----
00001
00000
-----
00011
00000
-----
00110
00000
-----
01100
00000
-----
11000
10011
-----
10110
10011
-----
01010
00000
-----
1010 (余数 R = 1010,4位)- CRC 校验码为
1010 - 发送的码字为
11010110111010
答案:CRC 校验码为 1010。
三、网络层
题5
某单位分配到一个 IP 地址块 192.168.1.0/24,需要划分为 4 个大小相等的子网。求每个子网的网络地址、子网掩码、可用主机地址范围和广播地址。
/24表示前24位为网络位,后8位为主机位。要划分为4个子网,需要借用2位主机位作为子网位()。- 新的子网掩码为
/26,即255.255.255.192 - 每个子网的主机位为 6 位,可用主机数为 (减去网络地址和广播地址)
4个子网:
| 子网 | 网络地址 | 可用主机范围 | 广播地址 |
|---|---|---|---|
| 子网1 | 192.168.1.0/26 | 192.168.1.1 ~ 192.168.1.62 | 192.168.1.63 |
| 子网2 | 192.168.1.64/26 | 192.168.1.65 ~ 192.168.1.126 | 192.168.1.127 |
| 子网3 | 192.168.1.128/26 | 192.168.1.129 ~ 192.168.1.190 | 192.168.1.191 |
| 子网4 | 192.168.1.192/26 | 192.168.1.193 ~ 192.168.1.254 | 192.168.1.255 |
答案:子网掩码 255.255.255.192,4个子网如上表所示,每个子网62个可用主机。
题6
距离向量路由算法中,路由器 A 的路由表如下,邻居 B 发来的距离向量为 (A:1, B:0, C:2, D:3, E:4)。请更新路由器 A 的路由表(通过 B 的距离 = A到B的距离 + B到目标的距离,A到B距离为1)。
A 的原路由表:
| 目标 | 距离 | 下一跳 |
|---|---|---|
| A | 0 | - |
| B | 1 | B |
| C | 5 | C |
| D | 3 | D |
| E | 7 | C |
通过 B 到达各目标的距离 = 1(A到B)+ B报告的距离:
- A: 1+1 = 2(原0,不变)
- B: 1+0 = 1(原1,不变)
- C: 1+2 = 3(原5,更新为3,下一跳B)
- D: 1+3 = 4(原3,不变)
- E: 1+4 = 5(原7,更新为5,下一跳B)
更新后的路由表:
| 目标 | 距离 | 下一跳 | 说明 |
|---|---|---|---|
| A | 0 | - | 直连 |
| B | 1 | B | 直连 |
| C | 3 | B | 更新(原5,经B更近) |
| D | 3 | D | 不变 |
| E | 5 | B | 更新(原7,经B更近) |
答案:C 的距离更新为3(下一跳B),E 的距离更新为5(下一跳B),其余不变。
四、传输层
题7
TCP 连接建立使用三次握手。请简述三次握手的过程,并说明为什么需要三次握手而不是两次。
三次握手过程:
- 第一次握手:客户端发送 SYN 报文(SYN=1,seq=x),进入 SYN_SENT 状态
- 第二次握手:服务器收到 SYN 后,回复 SYN+ACK 报文(SYN=1,ACK=1,ack=x+1,seq=y),进入 SYN_RCVD 状态
- 第三次握手:客户端收到 SYN+ACK 后,回复 ACK 报文(ACK=1,ack=y+1),进入 ESTABLISHED 状态;服务器收到 ACK 后也进入 ESTABLISHED 状态
为什么需要三次握手:
- 防止已失效的连接请求到达服务器:如果客户端发送的第一个 SYN 因网络延迟迟到,客户端已超时重传并建立了连接,迟到的旧 SYN 到达服务器后,如果是两次握手,服务器会认为是新连接并分配资源,导致资源浪费。三次握手中,客户端收到服务器的 SYN+ACK 后,发现序号不对,会发送 RST 拒绝连接。
- 同步双方的初始序列号:TCP 是可靠传输,需要双方确认对方的初始序列号。三次握手确保双方都知道对方的初始序列号并得到确认。
- 协商双方的窗口大小和 MSS 等参数:三次握手过程中可以协商这些参数。
答案:三次握手过程如上;主要原因是防止已失效的连接请求导致服务器错误分配资源,以及同步双方初始序列号。
题8
一个 TCP 连接的 MSS 为 1000 字节,拥塞窗口初始为 1 MSS。在慢启动阶段,每收到一个 ACK 拥塞窗口增加 1 MSS。假设没有丢包,请问经过 4 个 RTT 后,拥塞窗口是多少?共发送了多少数据?
慢启动阶段,拥塞窗口 cwnd 按指数增长(每个 RTT 翻倍):
- RTT 0(初始):cwnd = 1 MSS = 1000 字节,发送 1 个段
- RTT 1 后:收到 1 个 ACK,cwnd = 2 MSS = 2000 字节,发送 2 个段
- RTT 2 后:收到 2 个 ACK,cwnd = 4 MSS = 4000 字节,发送 4 个段
- RTT 3 后:收到 4 个 ACK,cwnd = 8 MSS = 8000 字节,发送 8 个段
- RTT 4 后:收到 8 个 ACK,cwnd = 16 MSS = 16000 字节
经过 4 个 RTT 后:
- 拥塞窗口 cwnd = 16 MSS = 16000 字节
- 共发送数据 = (1 + 2 + 4 + 8 + 16) × 1000 = 31 × 1000 = 31000 字节
注意:这里计算的是从初始到第4个RTT后总共发送的数据量(包括第4个RTT发送的16个段)。
答案:经过 4 个 RTT 后,拥塞窗口为 16000 字节(16 MSS),共发送约 31000 字节数据。
五、应用层
题9
DNS 域名解析有哪两种方式?请简述递归查询和迭代查询的区别,并说明访问 www.example.com 的 DNS 解析过程。
两种查询方式:
- 递归查询(Recursive Query):如果本地域名服务器不能直接回答查询,则它代替查询者向其他域名服务器查询,直到得到最终结果,然后将结果返回给查询者。查询者只需等待最终结果。
- 迭代查询(Iterative Query):如果被查询的域名服务器不能直接回答,则它返回下一个应该查询的域名服务器地址,由查询者自己继续查询。查询者需要多次查询。
典型配置:主机向本地域名服务器发起递归查询,本地域名服务器向根/顶级/权威域名服务器发起迭代查询。
访问 www.example.com 的解析过程:
- 主机查询本地域名服务器(递归查询):“www.example.com 的 IP 地址是什么?”
- 本地域名服务器缓存未命中,向根域名服务器查询(迭代查询)
- 根域名服务器返回 .com 顶级域名服务器地址
- 本地域名服务器向 .com 顶级域名服务器查询
- .com 服务器返回 example.com 权威域名服务器地址
- 本地域名服务器向 example.com 权威域名服务器查询
- 权威服务器返回 www.example.com 的 IP 地址
- 本地域名服务器将结果返回给主机,并缓存该记录
答案:递归查询由服务器代替查询者完成全部查询,迭代查询由查询者自己逐步查询;解析过程如上8步。
题10
HTTP 协议中,GET 和 POST 方法有什么区别?请列出常见的 HTTP 状态码及其含义(至少 5 个)。
GET 和 POST 的区别:
- 参数位置:GET 参数在 URL 查询字符串中;POST 参数在请求体中
- 数据长度:GET 受 URL 长度限制(通常 2KB-8KB);POST 无长度限制
- 安全性:GET 参数暴露在 URL 中,不安全;POST 参数在请求体中,相对安全
- 幂等性:GET 是幂等的(多次请求结果相同);POST 不是幂等的
- 缓存:GET 请求可被缓存;POST 请求默认不被缓存
- 用途:GET 用于获取资源;POST 用于提交数据(如表单提交、创建资源)
- 书签/历史:GET 可被收藏为书签;POST 不能
常见 HTTP 状态码:
| 状态码 | 含义 | 说明 |
|---|---|---|
| 200 | OK | 请求成功 |
| 301 | Moved Permanently | 永久重定向 |
| 302 | Found | 临时重定向 |
| 304 | Not Modified | 资源未修改,使用缓存 |
| 400 | Bad Request | 请求语法错误 |
| 401 | Unauthorized | 需要身份认证 |
| 403 | Forbidden | 禁止访问 |
| 404 | Not Found | 资源不存在 |
| 500 | Internal Server Error | 服务器内部错误 |
| 502 | Bad Gateway | 网关错误 |
| 503 | Service Unavailable | 服务不可用 |
答案:GET 和 POST 的区别如上7点;常见状态码包括 200、301、302、304、400、401、403、404、500、502、503 等。
总结
本套综合练习题涵盖了计算机网络的核心考点:
- 网络体系结构(2题):OSI/TCP/IP模型、封装与开销计算
- 物理层与数据链路层(2题):CSMA/CD争用期与最小帧长、CRC校验计算
- 网络层(2题):子网划分、距离向量路由算法更新
- 传输层(2题):TCP三次握手、拥塞控制慢启动计算
- 应用层(2题):DNS解析过程、HTTP方法与状态码
建议重点掌握封装计算、子网划分、TCP连接与拥塞控制、DNS/HTTP协议四大核心题型。
