综合练习题

一、网络体系结构

题1

OSI 参考模型分为哪几层?请简述各层的主要功能,并说明 TCP/IP 模型与 OSI 模型的对应关系。

参考答案(4 个标签)
OSI模型TCP/IP模型分层体系结构网络层

OSI 七层模型(从下到上):

  1. 物理层:传输原始比特流,定义电气、机械、功能和过程特性
  2. 数据链路层:将比特组装成帧,提供相邻节点间的可靠传输,差错控制、流量控制
  3. 网络层:路由选择和分组转发,实现不同网络间的通信
  4. 传输层:端到端的进程通信,提供可靠或不可靠的传输服务
  5. 会话层:建立、管理和终止会话
  6. 表示层:数据格式转换、加密解密、压缩解压缩
  7. 应用层:为用户应用提供网络服务

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 字节)。请问最终在物理链路上传输的帧总长度是多少?各层的封装开销是多少?

参考答案(4 个标签)
封装PDU首部开销分层
  1. 应用层数据:1000 字节
  2. 传输层(TCP):添加 20 字节首部 → TCP 段 = 1000 + 20 = 1020 字节
  3. 网络层(IP):添加 20 字节首部 → IP 数据报 = 1020 + 20 = 1040 字节
  4. 数据链路层(以太网):添加 14 字节首部 + 4 字节 FCS → 以太网帧 = 1040 + 14 + 4 = 1058 字节
  5. 物理层还会添加 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,信号传播速度为 2×1082 \times 10^8 m/s。求争用期和最小帧长。

参考答案(4 个标签)
CSMA/CD争用期最小帧长以太网
  1. 单程传播时延:τ=25002×108=12.5μs\tau = \frac{2500}{2 \times 10^8} = 12.5 \mu s
  2. 争用期:2τ=25μs2\tau = 25 \mu s
  3. 最小帧长:Lmin=R×2τ=10×106×25×106=250L_{\min} = R \times 2\tau = 10 \times 10^6 \times 25 \times 10^{-6} = 250 bit
  4. 换算为字节:250/8=31.25250 / 8 = 31.25 字节

但实际以太网标准规定最小帧长为 64 字节(考虑了中继器和更长的链路),对应的争用期为 51.2 μs。

答案:争用期为 25 μs,理论最小帧长为 250 bit(约31字节),实际标准为64字节。

题4

要发送的数据为 1101011011,生成多项式为 G(x)=x4+x+1G(x) = x^4 + x + 1(即 G=10011G = 10011),求 CRC 校验码。

参考答案(4 个标签)
CRC循环冗余校验模2除法差错控制
  1. 数据 M=1101011011M = 1101011011(10位),G=10011G = 10011(5位,r=4r=4
  2. 数据左移4位:M24=11010110110000M \cdot 2^4 = 11010110110000
  3. G=10011G = 10011 做模2除法:
11010110110000 ÷ 10011
10011
-----
 10011
 10011
 -----
  00001
  00000
  -----
   00011
   00000
   -----
    00110
    00000
    -----
     01100
     00000
     -----
      11000
      10011
      -----
       10110
       10011
       -----
        01010
        00000
        -----
         1010    (余数 R = 1010,4位)
  1. CRC 校验码为 1010
  2. 发送的码字为 11010110111010

答案:CRC 校验码为 1010

三、网络层

题5

某单位分配到一个 IP 地址块 192.168.1.0/24,需要划分为 4 个大小相等的子网。求每个子网的网络地址、子网掩码、可用主机地址范围和广播地址。

参考答案(4 个标签)
子网划分CIDRIP地址网络层
  1. /24 表示前24位为网络位,后8位为主机位。要划分为4个子网,需要借用2位主机位作为子网位(22=42^2 = 4)。
  2. 新的子网掩码为 /26,即 255.255.255.192
  3. 每个子网的主机位为 6 位,可用主机数为 262=622^6 - 2 = 62(减去网络地址和广播地址)

4个子网:

子网网络地址可用主机范围广播地址
子网1192.168.1.0/26192.168.1.1 ~ 192.168.1.62192.168.1.63
子网2192.168.1.64/26192.168.1.65 ~ 192.168.1.126192.168.1.127
子网3192.168.1.128/26192.168.1.129 ~ 192.168.1.190192.168.1.191
子网4192.168.1.192/26192.168.1.193 ~ 192.168.1.254192.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 的原路由表:

目标距离下一跳
A0-
B1B
C5C
D3D
E7C
参考答案(4 个标签)
距离向量路由算法RIP网络层

通过 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)

更新后的路由表:

目标距离下一跳说明
A0-直连
B1B直连
C3B更新(原5,经B更近)
D3D不变
E5B更新(原7,经B更近)

答案:C 的距离更新为3(下一跳B),E 的距离更新为5(下一跳B),其余不变。

四、传输层

题7

TCP 连接建立使用三次握手。请简述三次握手的过程,并说明为什么需要三次握手而不是两次。

参考答案(4 个标签)
TCP三次握手连接管理传输层

三次握手过程:

  1. 第一次握手:客户端发送 SYN 报文(SYN=1,seq=x),进入 SYN_SENT 状态
  2. 第二次握手:服务器收到 SYN 后,回复 SYN+ACK 报文(SYN=1,ACK=1,ack=x+1,seq=y),进入 SYN_RCVD 状态
  3. 第三次握手:客户端收到 SYN+ACK 后,回复 ACK 报文(ACK=1,ack=y+1),进入 ESTABLISHED 状态;服务器收到 ACK 后也进入 ESTABLISHED 状态

为什么需要三次握手:

  1. 防止已失效的连接请求到达服务器:如果客户端发送的第一个 SYN 因网络延迟迟到,客户端已超时重传并建立了连接,迟到的旧 SYN 到达服务器后,如果是两次握手,服务器会认为是新连接并分配资源,导致资源浪费。三次握手中,客户端收到服务器的 SYN+ACK 后,发现序号不对,会发送 RST 拒绝连接。
  2. 同步双方的初始序列号:TCP 是可靠传输,需要双方确认对方的初始序列号。三次握手确保双方都知道对方的初始序列号并得到确认。
  3. 协商双方的窗口大小和 MSS 等参数:三次握手过程中可以协商这些参数。

答案:三次握手过程如上;主要原因是防止已失效的连接请求导致服务器错误分配资源,以及同步双方初始序列号。

题8

一个 TCP 连接的 MSS 为 1000 字节,拥塞窗口初始为 1 MSS。在慢启动阶段,每收到一个 ACK 拥塞窗口增加 1 MSS。假设没有丢包,请问经过 4 个 RTT 后,拥塞窗口是多少?共发送了多少数据?

参考答案(4 个标签)
TCP拥塞控制慢启动传输层

慢启动阶段,拥塞窗口 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 解析过程。

参考答案(5 个标签)
DNS域名解析递归查询迭代查询应用层

两种查询方式:

  1. 递归查询(Recursive Query):如果本地域名服务器不能直接回答查询,则它代替查询者向其他域名服务器查询,直到得到最终结果,然后将结果返回给查询者。查询者只需等待最终结果。
  2. 迭代查询(Iterative Query):如果被查询的域名服务器不能直接回答,则它返回下一个应该查询的域名服务器地址,由查询者自己继续查询。查询者需要多次查询。

典型配置:主机向本地域名服务器发起递归查询,本地域名服务器向根/顶级/权威域名服务器发起迭代查询。

访问 www.example.com 的解析过程:

  1. 主机查询本地域名服务器(递归查询):“www.example.com 的 IP 地址是什么?”
  2. 本地域名服务器缓存未命中,向根域名服务器查询(迭代查询)
  3. 根域名服务器返回 .com 顶级域名服务器地址
  4. 本地域名服务器向 .com 顶级域名服务器查询
  5. .com 服务器返回 example.com 权威域名服务器地址
  6. 本地域名服务器向 example.com 权威域名服务器查询
  7. 权威服务器返回 www.example.com 的 IP 地址
  8. 本地域名服务器将结果返回给主机,并缓存该记录

答案:递归查询由服务器代替查询者完成全部查询,迭代查询由查询者自己逐步查询;解析过程如上8步。

题10

HTTP 协议中,GET 和 POST 方法有什么区别?请列出常见的 HTTP 状态码及其含义(至少 5 个)。

参考答案(5 个标签)
HTTPGETPOST状态码应用层

GET 和 POST 的区别:

  1. 参数位置:GET 参数在 URL 查询字符串中;POST 参数在请求体中
  2. 数据长度:GET 受 URL 长度限制(通常 2KB-8KB);POST 无长度限制
  3. 安全性:GET 参数暴露在 URL 中,不安全;POST 参数在请求体中,相对安全
  4. 幂等性:GET 是幂等的(多次请求结果相同);POST 不是幂等的
  5. 缓存:GET 请求可被缓存;POST 请求默认不被缓存
  6. 用途:GET 用于获取资源;POST 用于提交数据(如表单提交、创建资源)
  7. 书签/历史:GET 可被收藏为书签;POST 不能

常见 HTTP 状态码:

状态码含义说明
200OK请求成功
301Moved Permanently永久重定向
302Found临时重定向
304Not Modified资源未修改,使用缓存
400Bad Request请求语法错误
401Unauthorized需要身份认证
403Forbidden禁止访问
404Not Found资源不存在
500Internal Server Error服务器内部错误
502Bad Gateway网关错误
503Service 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协议四大核心题型。