计算机研究生复试常见面试题——计算机网络部分
Posted 三工言吾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机研究生复试常见面试题——计算机网络部分相关的知识,希望对你有一定的参考价值。
目录
说明:此文章是在阅读了一些列面试相关资料之后对于一些常见问题的整理,主要针对的是计算机研究生入学考试中复试的专业问答。部分答案参考网络以及结合自己的理解总结而出,若有不足非常欢迎指出,感谢!在总结过程中有些答案没标记参考来源,若有参考到您的回答请联系我,我会将其补上,最后希望各位都能够一战成硕!
复试相关内容:
计算机研究生复试常见面试题——操作系统_三工言吾的博客-CSDN博客_计算机专业考研面试题
计算机研究生复试常见面试题——计算机组成原理_三工言吾的博客-CSDN博客
计算机网络部分:
-
区分OSI模型、TCP/IP模型、五层网络模型
- 说出OSI七层模型分别有哪些层次——口诀:“物联网淑慧适用”,见上图
- TCP/IP四层协议有哪些层次?——见上图
- TCP/IP四层协议为什么没有物理层?
OSI模型虽然完善但是非常复杂,几乎无法实现。并且OSI模型的提出是由专家所提出的,模型出来后并没有产品所以无法把握市场。而TCP/IP协议主要是由IT寡头所提出,同时TCP/IP协议也照顾到了向后兼容未来的设备和开放性,故留下了模棱两可的网络接口层。但是显然这样在教学中是不够全面的,因此在我们学习过程中的五层协议中,将网络接口层区分为了数据链路层和物理层。
(注:针对本题笔者感觉更多是偏向于开放性问题,网上也有其他的说法,因此笔者认为只要表达流畅,富有逻辑即可)
- 五层协议都有哪些层次——见上图
- OSI七层协议中各层的功能:
层次 | 主要作用 |
物理层 | 利用传输介质为通信主机之间进行建立、管理、释放物理连接,实现比特流透明传输,为数据链路层提供数据传输服务 |
数据链路层 | 采用差错控制,流量控制的方法,使得有差错的物理线路变成无差错的数据链路 |
网络层 | 通过路由选择算法为分组选择恰当的传输路径,实现流量控制 、阻塞控制、网络互联功能 |
传输层 | 为进程通信提供可靠的端到端的连接与数据传输服务 |
会话层 | 负责维护两个主机之间连接的建立、管理和终止,以及数据的交换 |
表示层 | 负责通信系统之间的数据格式交换、数据加密与解密、数据压缩与恢复 |
应用层 | 实现协同工作的应用程序之间的通信过程控制 |
- 各个层次所对应的协议(最好也能够将常用协议的功能讲出来)
- 物理层设备(集线器)、数据链路层设备(交换机)、网络层设备(路由器)的区别
集线器 | 交换机 | 路由器 | |
工作层次 | 物理层 | 数据链路层 | 网路层 |
转发依据 | 广播 | MAC地址 | IP地址 |
不能隔离冲突域不能隔离广播域 | 能够隔离冲突域 不能隔离广播域 | 能够隔离冲突域 能够隔离广播域 |
物理层
- 电路交换、报文交换、分组交换之间的区别以及联系
电路交换 | 报文交换 | 分组交换 | |
建立连接 | 需要 | 不需要 | 不需要 |
数据交换单位 | 比特流 | 报文 | 分组 |
传输方式 | 比特流直接到达 | 存储转发 | 存储转发 |
是否需要沿着规定路径 | 是 | 不是 | |
分组按序到达 | 是 | 不是 | |
优点 | 速度快 适用范围广 控制简单 避免冲突 | 无需建立连接 动态分配路线 可靠性高 线路利用率高 可提供多目标服务 | 加速传输 简化存储管理 减小出错或重发数据 |
缺点 | 建立连接麻烦 信道利用率低 缺乏灵活性 没有统一标准 | 存储转发导致时延 需要较大的存储空间 | 存储转发导致时延 工作量大,存在分组丢失风险 |
- 中继器和集线器的区别
中继器用来连接速率相同且数据链路层协议也相同的网段,功能是消除数字信号的失真和衰减,原理是信号的再生
集线器相当于多接口的中继器
- 编码和调制
编码:把数据变化为数字信号的过程
调制:把数据变化为模拟信号的过程
数据链路层
- 数据链路层的三个基本问题和解决方法
1.封装成帧:在数据前后分别添加首部和尾部
2.透明传输:采用字节填充,在控制字符前加上转义字符
3.差错检测:采用循环冗余检验的检测技术(CRC),搭配自动重传请求(ARQ)重传出错的帧
- 数据链路层的可靠传输机制
使用确认和超时重传两种机制来完成
- 三种自动重传请求的区分
停止-等待协议:发送窗口和接收窗口大小均为1的滑动窗口协议
后退N帧协议:发送方无需再收到上一个帧的ACK便可发送下一帧,可以连续发送。当检测到失序时,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧。
选择重传协议:为了提高传输效率,只重传出现差错或超时的数据帧
- 已经有了交换机,还需要CSMA/CD协议吗?
不需要,交换机就已经隔离了冲突域,因此不再需要使用冲突检测协议。CMSA/CD协议的功能可概括为“先听后发,边听边发,冲突停发,随即重发”。
- 网桥和交换机的区别
网桥可以互联不同的物理层、不同的MAC子层以及不同速率的以太网。
交换机相当于一个多端口的网桥
- 频分复用、时分复用、波分复用、码分复用
频分复用:给每个型号分配唯一一个载波频率并通过单一媒体来传输多个独立信号的方法
时分复用:把多个信号服用到单个硬件传输信道,允许每个信号在很短的时间内使用信道,接着再让下一个信号使用
波分复用:就是光的频分复用
码分复用:使用一组包含相互正交的码字的码组携带多路信号,由于每个用户使用经过特殊挑选的不同码型,各用户之间不会造成干扰。
网路层
- 内部网关协议都有什么
内部网关协议 RIP(距离-向量路由协议) OSPF(开放最短路径优先) 关键 基于距离向量 基于链路状态 工作核心 跳数 链路状态的度量值 向谁发 相邻路由器 所有路由器 发什么 整个路由表 相邻路由器的状态信息
- 路由表表现都有什么?
目的IP地址,子网掩码,下一跳IP地址,接口
- 路由器的作用和功能
- 连接多个独立网络或子网络
- 把IP数据包送到正确的目的地
- 对于不同规模的网络,路由器侧重点不同
- 路由的定义
“路由”是一个网络层的术语,指从某一网络设备出发去往某个目的地的路径
- IP地址的组成,有几位?
IPv4:32位
IPv6:128位
IP地址包括网络位和主机位
- 子网掩码的作用
分割子网从而在当下这样计算机数量庞大的背景下有效管理IP地址
- IPv4的地址是不够用的,怎么解决这个问题?
1.采用动态分配IP地址(DHCP)
2.NAT机制
3.升级IPv6
- 清楚ARP协议、DHCP协议、ICMP协议
ARP协议:对于特定的IP地址,查询其对应的MAC地址(RARP则是将MAC地址转化为IP地址)
DHCP协议:给网络中的主机动态分配IP地址
ICMP协议:用来给主机或者路由器报告差错和异常情况
- 网关和路由器的对比
网关:又称协议转化器,连接两个网络
路由器:使用一系列的算法决定网络间的最短路径
如果只是连接两个网络,那么只需要网关就够了,应为此时不需要决定网路间最短路径问题。
如果需要连接多个网络,那么网络结构通常设计成网状结构,此时需要网关和路由器两个设备,网关负责连接,路由器负责决定最短路径。
传输层
- 常用的端口号
应用程序 FTP TELNET SMTP DNS TFTP HTTP SNMP 熟知端口号 21 23 25 53 69 80 161
- TCP和UDP的对比
TCP是面向连接的,UDP是不面向连接的
UDP的程序结构简单
TCP是面向字节流,UDP是基于数据报的
TCP保证数据正确性,UDP有可能丢包
TCP保证数据顺序,UDP不保证
- TCP怎么实现可靠传输
TCP通过序列号、检验和、确认应答信号、重发控制、连接管理、窗口控制、流量控制、拥塞控制实现可靠性。
- TCP 怎么解决拥塞控制
- 慢开始:拥塞窗口进行指数型增长
- 拥塞避免:使得拥塞窗口进行线性规律增长即加法增大
- 快重传:当发送方收到连续三个重复的ACK报文时,直接重传对方未收到的报文段
- 快恢复:执行乘法减小的算法,把慢开始的门限设置为出现拥塞时的发送方拥塞窗口的一般,然后开始执行线性增长
- 怎么判断是不是拥塞了?
如果网络的吞吐量随着网络负载的增大反而下降,这个时候就有可能是网络进入了拥塞状态
- UDP有哪些应用
(在面试过程中可以先讲TCP和UDP的对比,从而突出其特点),速度快适合于在线视频媒体,如直播,腾讯会议这样的场景
应用层
- b/s和c/s的区别
b/s为浏览器/服务器模型,用户仅需通过浏览器就可以获得相应服务
c/s为客户端/浏览器模型。用户需下载指定的客户端软件才能获得相应服务
- 应用层有哪些协议
DNS域名系统:能够将网址解析为IP地址
DHCP(动态主机设置协议):使用UDP协议工作,给内部网络或者网络服务供应商自动分配IP地址
FTP(文件传输协议)
电子邮件中常用的协议:STMP、POP3等
HTTP(超文本传输协议):定义了浏览器怎么向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
- 网络通信过程
- 在浏览器中输入网址,利用DNS将其解析出IP地址
- 当得到IP地址之后,浏览器以TCP的方式三次握手连接服务器
- 客户端以TCP的方式发送http协议的请求数据给服务器
- 服务器以TCP的方式回应http协议的应答数据源给浏览器
补充问题
- 网络按照地理范围划分
个域网、局域网、城域网、广域网
- 保护频段
插入一些空白频段
- 流量控制在哪些层实现
传输层中的TCP。数据链路层中的ARQ
- 什么是非对称加密,什么是对称加密?
非对称加密:加密和解密使用不同的密钥,一把作为公钥用于加密,另一把利用私钥进行解密
对称加密:指加密和解密使用同一密钥
(两个放在一块就能理解其中的区别)
- 你认为计算机网络的定义是什么?
一些相互连接的,自治的计算机的集合
相互连接:指计算机之间通过有线或者无线的方式进行数据通信
自治:指独立的计算机有自己的硬件和软件可以独立的运行使用
集合:指至少有两台以上的计算机
- 为什么要有 MAC地址,为什么要有IP地址?
IP地址用来区分目标地址在哪个子网
MAC地址用来区分同一子网中的哪个设备
- 拓扑结构分类
星形、总线型、环形、网状形
面试题Redis篇-常见面试题p1
【面试题】Redis篇-常见面试题p1
备战实习,会定期的总结常考的面试题,大家一起加油! 🎯 🎯 🎯
往期文章:
参考文章:
- https://xppll.blog.csdn.net/article/details/121245615
- https://xppll.blog.csdn.net/article/details/121758265
- https://csp1999.blog.csdn.net/article/details/117849419
- https://javaguide.cn/database/redis/redis%E7%9F%A5%E8%AF%86%E7%82%B9&%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93/
- https://pdai.tech/md/interview/x-interview.html#83-redis
注意:如果本文中有错误的地方,欢迎评论区指正!
文章目录
1.说一下什么是redis?
redis
是一个高性能的key-value
数据库,它是完全开源免费的,同时redis是一个NOSQL
类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。
与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。
2.Redis 是单线程还是多线程的?
- redis 4.0 之前,redis 是完全单线程的。
- redis 4.0 时,redis 引入了多线程,但是额外的线程只是用于后台处理,例如:删除对象,核心流程还是完全单线程的。(核心流程指的是 redis 正常处理客户端请求的流程,通常包括:接收命令、解析命令、执行命令、返回结果等。)
- redis 6.0 中,多线程主要用于网络 I/O 阶段,也就是接收命令和写回结果阶段,而在执行命令阶段,还是由单线程串行执行。
👨💻面试官追问:Redis 为什么使用单线程、单线程也很快?
Redis使用单线程是因为:
- 在 redis 6.0 之前,redis 的核心操作是单线程的。因为 redis 是完全基于内存操作的,通常情况下CPU不会是redis的瓶颈,redis 的瓶颈最有可能是机器内存的大小或者网络带宽。
- 既然CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了,因为如果使用多线程的话会更复杂,同时需要引入上下文切换、加锁等等,会带来额外的性能消耗。
单线程很快主要是:
- Redis 基于内存的操作
- Redis 使用了
I/O
多路复用模型,select
、epoll
等,基于reactor
模式开发了自己的网络事件处理器 - 单线程可以避免不必要的上下文切换和竞争条件,减少了这方面的性能消耗
3.Redis数据类型有哪些?
基本数据类型有五种:
-
String
String是redis中最基本的数据类型,一个key对应一个value
-
List
Redis中的List其实就是链表(Redis用双端链表实现List)
-
Hash
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象
-
Set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据
-
Sorted Set:
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
还有三种特殊的数据类型: 分别是 HyperLogLogs
(基数统计), Bitmaps
(位图) 和 geospatial
(地理位置)
👨💻面试官追问:分别说说各个数据类型常用的使用场景?
-
String
- 缓存: 经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力
- 计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源
- session:常见方案spring session + redis实现session共享
-
List
- 阻塞队列:Redis的
lpush + brpop
命令组合即可实现阻塞队列,生产者客户端是用lpush 从列表左侧插入元素,多个消费者客户端使用 brpop 命令阻塞式的“抢"列表尾部的元素,多个客户端保证了消费的负载均衡和高可用性。
- 阻塞队列:Redis的
-
Hash
- 缓存:哈希结构相对于字符串序列化缓存信息更加直观,而且更节省空间,并且在更新操作上更加便捷,所以常常用于缓存用户信息等。
-
Set
- 标签(tag):给用户添加标签,或者用户给消息添加标签,这样有同一标签或者类似标签的可以给推荐关注的事或者关注的人。
- 点赞,或点踩,收藏等:可以放到set中实现
-
zset
- 排行榜:有序集合经典使用场景。例如小说,视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。
4.说一下Redis常见的功能有哪些?
- 数据缓存功能
- 分布式锁的功能
- 支持数据持久化
- 支持事务
- 支持消息队列
5.说一下Redis的常用的使用场景?
-
缓存
减轻MySQL的查询压力,提升系统性能
-
排行榜
利用Redis的
SortSet
(有序集合)实现 -
计算器/限速器
- 利用Redis 中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等。
- 限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力
-
好友关系
利用集合的一些命令,比如求交集、并集、差集等。可以方便解决一些共同好友、共同爱好之类的功能
-
消息队列
除了Redis自身的
发布/订阅
模式,我们也可以利用List
来实现一个队列机制,比如︰到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List 来完成异步解耦 -
Session共享
Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆。采用Redis 保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息
6.说说Redis为什么这么快?
- 完全基于内存,绝大部分请求是纯粹的内存操作,非常快速
- 数据结构简单,对数据操作也简单
- 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗
- 使用多路I/O复用模型,非阻塞IO
7.聊聊Redis为什么需要持久化?
Redis是个基于内存的数据库。那服务一旦宕机,内存中的数据将全部丢失。通常的解决方案是从后端数据库恢复这些数据,但后端数据库有性能瓶颈,如果是大数据量的恢复会有几个问题:
- 会对数据库带来巨大的压力
- 数据库的性能不如Redis。导致程序响应慢。
所以对Redis来说,实现数据的持久化,避免从后端数据库中恢复数据,是至关重要的。
8.说说Redis持久化的方式有哪些?
-
RDB
以快照的形式在指定的时间间隔内将内存中的数据集快照写入磁盘,可以指定时间归档数据,但不能做到实时持久化,RDB 持久化功能生成的 RDB 文件是经过压缩的二进制文件。
-
AOF
以日志的形式记录服务器所处理的每一个写、删除操作(查询操作不会记录),以文本的方式记录,并在服务器启动时,通过重新执行这些命令来还原数据集。
-
混合持久化
Redis 4.0 中提出了一个混合使用 AOF 日志和内存快照的方法。混合持久化只发生于 AOF 重写过程。使用了混合持久化,重写后的新 AOF 文件前半段是 RDB 格式的全量数据,后半段是 AOF 格式的增量数据。
9.RDB和AOF两种持久化方式有什么优缺点?
- RDB优点
- RDB是一个紧凑压缩的二进制文件,存储效率较高
- RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景
- RDB恢复数据的速度要比AOF快很多
- RDB缺点
- RDB方式实时性不够,无法做到秒级的持久化
- 每次调用bgsave都需要fork子进程,fork子进程属于重量级操作,频繁执行成本较高
- RDB文件是二进制的,没有可读性,AOF文件在了解其结构的情况下可以手动修改或者补全
- Redis的众多版本中未进行RDB文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象
- AOF优点
- AOF 比 RDB可靠,支持秒级持久化,就算发生故障停机,也最多只会丢失一秒钟的数据
- 当 AOF文件太大时,Redis 会自动在后台进行重写。重写后的新 AOF 文件包含了恢复当前数据集所需的最小命令集合。当新文件重写完毕,Redis 会把新旧文件进行切换,然后开始把数据写到新文件上
- AOF缺点
- 对于相同的数据集,AOF 文件的大小一般会比 RDB 文件大
- RDB 存储的是压缩二进制格式记录数据命令,AOF 是通过文本日志形式记录数据命令,所以采用 AOF 数据恢复比 RDB 慢
两者对比图:
10.触发RDB持久化的方式有哪些?
触发RDB持久化的方式有2种,分别是手动触发和自动触发。
手动触发
手动触发分别对应save
和bgsave
命令
-
save命令
阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用
-
bgsave命令
Redis进程执行
fork
操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短
自动触发
redis.conf
中配置save m n
,即在m秒内有n次修改时,自动触发bgsave
生成rdb文件- 主从复制时,从节点要从主节点进行全量复制时也会触发bgsave操作,生成当时的快照发送到从节点
- 执行
debug reload
命令重新加载redis时也会触发bgsave操作 - 默认情况下执行
shutdown
命令时,如果没有开启aof持久化,那么也会触发bgsave操作
11.AOF写数据有哪些策略?
一共有三种:
-
always
每次写入操作均同步到AOF文件中,数据零误差,性能较低,不建议使用
-
everysec
每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高 ,建议使用,也是默认配置。在系统突然宕机的情况下丢失1秒内的数据
-
no
由操作系统控制每次同步到AOF文件的周期,整体过程不可控
12.说说什么是AOF重写?
随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是减少冗余指令。
👨💻面试官追问:AOF重写有什么好处?
- 降低磁盘占用量,提高磁盘利用率
- 提高持久化效率,降低持久化写时间,提高IO性能
- 降低数据恢复用时,提高数据恢复效率
👨💻面试官继续问:AOF重写有哪些规则?
- 进程内已超时的数据不再写入文件
- 忽略无效指令。重写时使用进程内数据直接生成,这样新的AOF文件只保留最终数据的写入命令
- 如del key1、 hdel key2、srem key3、set key4 111、set key4 222等
- 对同一数据的多条写命令合并为一条命令
- 如lpush list1 a、lpush list1 b、 lpush list1 c 可以转化为:lpush list1 a b c
- 为防止数据量过大造成客户端缓冲区溢出,对list、set、hash、zset等类型,每条指令最多写入64个元素
13.什么是缓存穿透?
缓存穿透
是指缓存和数据库中都没有的数据。此时请求会直接打到数据库上,并且数据库查不到数据,也没办法写入缓存,所以下一次请求同样会打到数据库上。此时,缓存起不到作用,请求每次都会走到数据库,流量大时数据库可能会被打挂。此时缓存就好像被“穿透”了一样,起不到任何作用!
举个例子:某个黑客故意制造我们缓存中不存在的 key 发起大量请求,导致大量请求落到数据库。
👨💻面试官追问:缓存穿透怎么解决?
- 接口层增加校验。如用户鉴权校验,id做基础校验,id<=0的直接拦截。
- 缓存无效key。从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击。
- 布隆过滤器。bloomfilter就类似于一个hash set,用于快速判某个元素是否存在于集合中,其典型的应用场景就是快速判断一个key是否存在于某容器,不存在就直接返回。布隆过滤器的关键就在于hash算法和容器大小。
14.什么是缓存击穿?
缓存击穿
是指某一个热点数据缓存中没有但数据库中有数据(一般是缓存时间到期)。这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。
👨💻面试官追问:缓存击穿你会怎么解决?
- 设置热点数据永远不过期。
- 接口限流与熔断,降级。重要的接口一定要做好限流策略,防止用户恶意刷接口,同时要降级准备,当接口中的某些服务不可用时候,进行熔断,失败快速返回机制。
- 设置互斥锁。在并发的多个请求中,只有第一个请求线程能拿到锁并执行数据库查询操作,其他的线程拿不到锁就阻塞等着,等到第一个线程将数据写入缓存后,直接走缓存。(可以使用 Redis 分布式锁)
15.什么是缓存雪崩?
缓存雪崩
是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至宕机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。
👨💻面试官追问:缓存雪崩有什么解决方法?
- 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
- 采用 Redis 集群。如果缓存数据库是分布式部署,将热点数据均匀分布在不同的缓存数据库中,避免单机出现问题整个缓存服务都没办法使用。
- 设置热点数据永远不过期。
以上是关于计算机研究生复试常见面试题——计算机网络部分的主要内容,如果未能解决你的问题,请参考以下文章