计算机网络体系结构练习题
本章包含计算机网络体系结构的各种练习题,涵盖基本概念、性能指标、分层结构、OSI 模型、TCP/IP 模型和网络设备等内容。
1. 简述计算机网络的三大功能。
解题思路:
按网络对用户所做的事给功能分类:机器之间传数据、多台机器共用同一批资源、把一份工作分散到许多机器上协同完成。
详细步骤:
计算机网络的三大功能包括:
- 数据通信:实现不同计算机之间的数据传输和交换
- 资源共享:共享硬件、软件和数据资源
- 分布式处理:将任务分配到多台计算机协同完成
最终答案:
计算机网络的三大功能是数据通信、资源共享和分布式处理。
2. 按地理范围,计算机网络可以分为哪几类?各有什么特点?
解题思路:
按覆盖范围由小到大分类,每一类都说明覆盖范围、传输距离、速率、典型应用和技术特点。
详细步骤:
按地理范围,计算机网络可以分为:
广域网(WAN):
- 覆盖范围:跨越城市、国家甚至全球
- 传输距离:几十公里到几千公里
- 传输速率:相对较低,通常为几 Mbps 到几 Gbps
- 典型应用:互联网、企业广域网
城域网(MAN):
- 覆盖范围:覆盖一个城市或地区
- 传输距离:几公里到几十公里
- 传输速率:中等,通常为几十 Mbps 到几 Gbps
- 典型应用:城市网络、校园网
局域网(LAN):
- 覆盖范围:建筑物内或校园内
- 传输距离:几百米到几公里
- 传输速率:较高,通常为 10Mbps 到 10Gbps
- 典型应用:办公室网络、家庭网络
个人区域网(PAN):
- 覆盖范围:个人设备周围
- 传输距离:几米到几十米
- 传输速率:较低,通常为几 Mbps 到几百 Mbps
- 典型应用:蓝牙设备、无线耳机
最终答案:
按覆盖范围计算机网络分为广域网、城域网、局域网和个人区域网四类,范围越大速率通常越低。
3. 简述网络时延的组成部分。
解题思路:
把总时延拆成数据包从源到宿经历的四项贡献,并给出各自的公式和影响因素。
详细步骤:
网络时延由以下几个部分组成:
传输时延(Transmission Delay):
- 定义:数据从发送端到接收端所需的时间
- 计算公式:传输时延 = 数据长度 / 传输速率
- 影响因素:数据大小、传输速率
传播时延(Propagation Delay):
- 定义:信号在传输介质中传播所需的时间
- 计算公式:传播时延 = 距离 / 传播速度
- 影响因素:传输距离、介质类型
处理时延(Processing Delay):
- 定义:路由器或交换机处理数据包所需的时间
- 影响因素:设备性能、队列长度
排队时延(Queuing Delay):
- 定义:数据包在路由器队列中等待的时间
- 影响因素:网络拥塞、队列长度
最终答案:
网络时延由传输时延、传播时延、处理时延和排队时延四部分组成。
4. 计算题:一个 1000 字节的数据包通过 10Mbps 的链路传输,传输距离为 1000 公里,传播速度为 2×10^8 m/s,求总时延。
解题思路:
传输时延和传播时延分别算,再把两者相加:前者取决于分组长度与速率,后者取决于距离与传播速度。
详细步骤:
计算过程:
- 传输时延 = 数据长度 / 传输速率 = 1000 字节 / (10×10^6 bps) = 0.8 毫秒
- 传播时延 = 距离 / 传播速度 = 1000×10^3 m / (2×10^8 m/s) = 5 毫秒
- 总时延 = 传输时延 + 传播时延 = 0.8 + 5 = 5.8 毫秒
最终答案:
总时延为 5.8 毫秒,其中传输时延 0.8 毫秒、传播时延 5 毫秒。
5. 简述网络协议的三要素。
解题思路:
协议只有把比特长什么样、代表什么含义、何时交换都规定清楚才算完整,按这个顺序逐条展开。
详细步骤:
网络协议的三要素包括:
语法(Syntax):
- 数据格式和编码方式
- 字段长度和顺序
- 控制字符和特殊符号
语义(Semantics):
- 控制信息的含义
- 各种操作的解释
- 错误处理的方式
时序(Timing):
- 事件发生的顺序
- 速度匹配的要求
- 同步和异步机制
最终答案:
网络协议的三要素是语法、语义和时序。
6. 比较面向连接的服务和无连接的服务。
解题思路:
在建立方式、优点、缺点和对应协议四个维度上对比两种服务。
详细步骤:
面向连接的服务(Connection-Oriented Service):
- 特点:建立连接、数据传输、释放连接
- 优点:可靠性高,顺序保证
- 缺点:开销较大,延迟较高
- 典型应用:TCP 协议
无连接的服务(Connectionless Service):
- 特点:直接发送数据,无需建立连接
- 优点:开销小,延迟低
- 缺点:可靠性较低,不保证顺序
- 典型应用:UDP 协议
最终答案:
面向连接服务先建连、可靠有序但开销大(典型是 TCP);无连接服务不建连、开销小但不保证可靠与顺序(典型是 UDP)。
7. 列举 OSI 七层模型的各层名称及主要功能。
解题思路:
自下而上走一遍协议栈,逐层说明它做什么以及主要任务是什么,七层合起来才构成一次完整传输。
详细步骤:
OSI 七层模型各层名称及主要功能:
物理层(Physical Layer):
- 功能:比特流的传输
- 主要任务:在物理传输介质上传输原始的比特流
数据链路层(Data Link Layer):
- 功能:成帧、差错检测、流量控制
- 主要任务:在相邻节点间可靠地传输数据帧
网络层(Network Layer):
- 功能:路由选择、分组转发
- 主要任务:在不同网络间传输数据包
传输层(Transport Layer):
- 功能:端到端可靠传输、流量控制
- 主要任务:在端到端之间提供可靠的数据传输服务
会话层(Session Layer):
- 功能:会话管理、建立/释放会话
- 主要任务:建立、管理和终止会话
表示层(Presentation Layer):
- 功能:数据格式转换、加密解密
- 主要任务:数据的格式转换、加密解密和压缩解压缩
应用层(Application Layer):
- 功能:为用户提供网络应用服务
- 主要任务:提供各种网络应用服务
最终答案:
OSI 七层自下而上为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
8. 简述 OSI 模型与 TCP/IP 模型的异同。
解题思路:
先说相同点,再沿层数、理论与实践的比重、协议支持范围三个轴线说差异,最后给出逐层对应关系。
详细步骤:
相同点:
- 都采用分层结构
- 都定义了网络通信的标准
- 都支持多种网络协议
不同点:
层次数量:
- OSI 模型:七层结构,层次划分细致
- TCP/IP 模型:四层结构,层次划分简单
理论性:
- OSI 模型:理论性强,标准化程度高
- TCP/IP 模型:实用性强,实际应用广泛
协议支持:
- OSI 模型:支持多种网络协议
- TCP/IP 模型:主要支持 TCP/IP 协议族
层次对应关系:
- OSI 的物理层+数据链路层 ≈ TCP/IP 的网络接口层
- OSI 的网络层 ≈ TCP/IP 的网际层
- OSI 的传输层 ≈ TCP/IP 的传输层
- OSI 的会话/表示/应用层 ≈ TCP/IP 的应用层
最终答案:
两者同为分层体系结构且都采用独立的通信协议,区别在于层数、理论与实践的比重和协议支持范围,TCP/IP 应用层对应 OSI 的应用、表示和会话层。
9. 简述 TCP/IP 模型的四层结构及各层功能。
解题思路:
自下而上描述四层,逐层说明功能、归属的协议和主要任务。
详细步骤:
TCP/IP 模型的四层结构及各层功能:
网络接口层(Network Access Layer):
- 功能:物理传输和数据成帧
- 协议:以太网、WiFi、PPP、ARP 等
- 主要任务:在物理传输介质上传输数据
网际层(Internet Layer):
- 功能:IP 寻址、路由选择、分组转发
- 协议:IP、ICMP、IGMP、OSPF 等
- 主要任务:在不同网络间传输数据包
传输层(Transport Layer):
- 功能:端到端传输、可靠传输、流量控制
- 协议:TCP、UDP
- 主要任务:在端到端之间提供数据传输服务
应用层(Application Layer):
- 功能:为用户提供各种网络应用服务
- 协议:HTTP、FTP、SMTP、DNS 等
- 主要任务:提供网络应用服务
最终答案:
TCP/IP 四层自下而上为网络接口层、网际层、传输层和应用层。
10. 比较 TCP 和 UDP 协议的特点。
解题思路:
在连接方式、可靠性、流量控制、拥塞控制、传输效率和应用场景六个轴线上对比两种协议。
详细步骤:
TCP(Transmission Control Protocol):
- 连接方式:面向连接
- 可靠性:可靠传输
- 流量控制:有流量控制
- 拥塞控制:有拥塞控制
- 传输效率:相对较低
- 应用场景:HTTP、FTP、SMTP 等
UDP(User Datagram Protocol):
- 连接方式:无连接
- 可靠性:不可靠传输
- 流量控制:无流量控制
- 拥塞控制:无拥塞控制
- 传输效率:相对较高
- 应用场景:DNS、DHCP、流媒体等
最终答案:
TCP 可靠有序、拥塞与流量控制完善但开销较大;UDP 不可靠但轻量高效,适合 DNS、DHCP 等场景。
11. 简述各种网络设备在 OSI 模型中的位置及功能。
解题思路:
按设备工作的层次归类,每种设备给出一句话的功能说明和常见用途。
详细步骤:
物理层设备:
- 中继器(Repeater):信号放大和再生,延长网络距离
- 集线器(Hub):多端口信号广播,星型网络连接
数据链路层设备:
- 网桥(Bridge):帧转发和过滤,连接不同网段
- 交换机(Switch):智能帧转发,局域网核心设备
网络层设备:
- 路由器(Router):数据包路由和转发,连接不同网络
多层设备:
- 网关(Gateway):协议转换和格式转换,连接异构网络
最终答案:
按工作层次网络设备分为物理层的中继器与集线器、数据链路层的网桥与交换机、网络层的路由器和多层的网关。
12. 比较交换机和路由器的功能差异。
解题思路:
在工作层次、主要功能、依据何种地址转发、适用范围和性能特点五个维度上对比两个设备。
详细步骤:
交换机(Switch):
- 工作层次:数据链路层
- 主要功能:帧转发、MAC 地址学习、VLAN 支持
- 转发依据:MAC 地址
- 应用范围:局域网内部
- 性能特点:高速转发、低延迟
路由器(Router):
- 工作层次:网络层
- 主要功能:数据包路由、网络互联、协议转换
- 转发依据:IP 地址
- 应用范围:不同网络之间
- 性能特点:智能路由、网络隔离
最终答案:
交换机工作在数据链路层按 MAC 地址转发、用于同一网段内;路由器工作在网络层按 IP 地址选路、用于网段之间。
13. 设计题:设计一个简单的网络拓扑,包含路由器、交换机和主机,并说明数据包的传输过程。
解题思路:
先画出拓扑,再逐层追踪数据包从主机 A 到主机 B 的过程:发送方封装什么、各交换机做什么、路由器做什么、接收方拆掉什么。
详细步骤:
网络拓扑设计:
数据依次经过:主机A → 交换机1 → 路由器 → 交换机2 → 主机B
数据包传输过程:
-
主机 A 发送数据:
- 应用层:生成应用数据
- 传输层:添加 TCP/UDP 头部
- 网络层:添加 IP 头部
- 数据链路层:添加以太网头部
-
交换机 1 处理:
- 接收数据帧
- 学习源 MAC 地址
- 根据目的 MAC 地址转发到路由器
-
路由器处理:
- 接收 IP 数据包
- 查找路由表
- 选择出接口
- 转发到交换机 2
-
交换机 2 处理:
- 接收数据帧
- 学习源 MAC 地址
- 根据目的 MAC 地址转发到主机 B
-
主机 B 接收数据:
- 数据链路层:移除以太网头部
- 网络层:移除 IP 头部
- 传输层:移除 TCP/UDP 头部
- 应用层:处理应用数据
最终答案:
该拓扑为「主机A—交换机1—路由器—交换机2—主机B」的星型结构,数据包逐跳转发后在主机 B 逐层解封装。
14. 分析题:分析网络性能问题,并提出优化建议。
题目:某企业网络出现以下问题:
- 网络延迟高
- 数据传输速度慢
- 经常出现网络拥塞
解题思路:
对每个现象回溯到最可能的原因,再把改进措施归为硬件、网络设计、协议和管理几类。
详细步骤:
问题分析:
- 网络延迟高:可能是由于网络设备性能不足、传输距离远或网络拥塞导致
- 数据传输速度慢:可能是由于带宽不足、设备处理能力有限或协议效率低导致
- 网络拥塞:可能是由于网络负载过重、设备处理能力不足或网络设计不合理导致
优化建议:
硬件升级:
- 升级网络设备,提高处理能力
- 增加网络带宽
- 使用更高速的传输介质
网络优化:
- 优化网络拓扑结构
- 实施负载均衡
- 配置 QoS 策略
协议优化:
- 使用更高效的网络协议
- 优化 TCP 参数
- 实施流量整形
管理优化:
- 加强网络监控
- 定期维护网络设备
- 制定网络使用策略
最终答案:
性能问题的根因是带宽不足与拥塞,改进要从硬件升级、网络设计、协议配置和日常管理四方面同时入手。
15. 编程题:编写一个简单的网络性能测试程序。
解题思路:
收集对链路真正有用的测量值:往返时延、丢包率,以及所发分组的大小与数量,最后整理成可读的报告。
详细步骤:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
// 网络性能测试结构
typedef struct {
char target_host[256];
int port;
int packet_size;
int packet_count;
double min_rtt;
double max_rtt;
double avg_rtt;
double packet_loss;
} NetworkTest;
// 执行网络性能测试
NetworkTest perform_network_test(const char* host, int port, int size, int count) {
NetworkTest test;
strcpy(test.target_host, host);
test.port = port;
test.packet_size = size;
test.packet_count = count;
// 模拟测试结果
test.min_rtt = 10.0; // 毫秒
test.max_rtt = 50.0;
test.avg_rtt = 25.0;
test.packet_loss = 0.1; // 0.1%
return test;
}
// 打印测试结果
void print_test_results(const NetworkTest* test) {
printf("网络性能测试结果:\n");
printf("目标主机:%s\n", test->target_host);
printf("端口:%d\n", test->port);
printf("数据包大小:%d 字节\n", test->packet_size);
printf("数据包数量:%d\n", test->packet_count);
printf("最小往返时间:%.2f 毫秒\n", test->min_rtt);
printf("最大往返时间:%.2f 毫秒\n", test->max_rtt);
printf("平均往返时间:%.2f 毫秒\n", test->avg_rtt);
printf("丢包率:%.2f%%\n", test->packet_loss);
}
int main() {
// 执行网络性能测试
NetworkTest test = perform_network_test("192.168.1.1", 80, 1024, 100);
// 打印测试结果
print_test_results(&test);
return 0;
}最终答案:
该程序以结构体汇总目标主机、端口、分组大小与数量、最值与平均往返时延及丢包率,并打印成一份测试报告。
