一、基础概念与模型
1. 什么是通信协议?列举三种常见的网络通信模型?
OSI七层模型:标准化分层框架,涵盖物理层至应用层
TCP/IP四层模型:互联网实际应用的分层结构,包含网络接口层、网络层、传输层、应用层。
五层协议体系结构:结合OSI与TCP/IP的折中模型,物理层、数据链路层、网络层、传输层、应用。
2. 解释OSI七层模型及各层功能
物理层:传输原始比特流,定义电气与物理介质特性(如网线、光纤)
数据链路层:封装帧结构,管理物理地址(MAC地址)及错误检测(如以太网协议)
网络层:路由数据包,处理逻辑值(IP地址)与跨网络通信(如IP协议)
传输层:提供端到端可靠/不可靠传输(TCP/UDP)
会话层:建立、管理与终止会话(如远程登录连接)
表示层:数据测试转换、加密/解密(如HTTPS加密)
应用层:直接面向用户的恶应用服务接口
3. TCP/IP四层模型与OSI模型的对应关系是什么?
网络接口层:对应OSI的物理层+数据链路层(如以太网、Wi-Fi)
网络层:对应OSI网络层(如IP协议)
传输层:对应OSI的传输层(如TCP/UDP)
应用层:会话层、表示层、应用层(如HTTP、DNS)
4. 五层协议体系结构与TCP/IP模型的区别?
五层协议体系结构与TCP/IP模型的差异主要体现在:
层级划分:五层模型保留OSI的物理层与数据链路层作为独立层级,而TCP/IP合并为网络接口层
应用层范围:TCP/IP应用层合并了OSI的会话层、表示层功能,五层模型仅保留应用层名称
5. 什么是面向连接与非面向连接的服务?举例说明.
面向连接:通信前需建立专用通道,确保数据顺序与可靠性(如TCP三次握手传输文件)
非面向连接:无需预先建立连接,数据独立发送,可能丢包(如UDP实时视频流传输)
6. 网络协议分层的意义是什么?
模块化设计:各层独立开发与优化,建立系统复杂性
职责隔离:层级间分工明确(如传输层管卡考行,网络层管路由)
互操作性:标准化层便于不同厂商设备协同工作
7. 解释协议栈中封装与解封装的过程
封装:数据从高层向底层传递时,每层添加头部控制信息。例如,应用层数据经传输层添加TCP透露,网络层添加IP头部,数据链路层添加帧头和帧尾。
解封装:接收端从物理层逐层向上剥离控制信息。例如:链路层去除帧头,网络层解析IP地址,传输层校验TCP序号
二、物理层与数据链路层
1. 物理层的主要作用是什么?
物理层负责在物理介质上传输原始比特流,定义电器特性、物理接口标准及传输介质规范(如电压、线缆类型、光纤接口)。其核心功能包括
比特流编码与解码
建立/断开物理连接
指定传输速率与同步方式
2. 数据链路层如何保证相邻节点间可靠传输?
帧校验:使用CRC校验检测传输错误,丢弃错误帧
确认与重传:接收方发送ACK确认,未收到ACK则重传(如停止等待协议)
流量控制:通过滑动窗口机制匹配手法速率
MAC地址管理:记录设备物理地址与端口映射关系,确保精准投递
3. 什么是MAC地址?与IP地址的区别是什么?
对比项 | MAC地址 | IP地址 |
---|---|---|
层级 | 数据链路层(二层) | 网络层(三层) |
作用范围 | 局域网内唯一标识设备 | 跨网络唯一标识设备 |
分配方式 | 硬件固化,出厂设定 | 动态分配(如DHCP)或静态配置 |
格式 | 48位十六进制(如00-1A-2B-3C-4D) | IPv4(32位)/IPv6(128位)数字格式 |
4. ARP协议的作用及工作原理
作用:解析目标IP地址对应的MAC地址,实现网络层到数据链路层的地址映射
工作原理:
ARP请求广播:源主机发送ARP请求包(包括目标IP),官博之局域网内所有设备
ARP响应单播:目标主机返回ARP响应包,告知自身MAC地址
缓存映射:源主机记录IP-MAC映射到ARP标,后续通信直接查表
5. 解释交换机与路由器的区别
对比项 | 交换机 | 路由器 |
---|---|---|
工作层级 | 数据链路层 | 网络层(三层) |
转发依据 | MAC地址表(端口-MAC映射) | 路由表(目标网络-下一跳IP) |
广播域处理 | 不隔离广播域(同一VLAN内广播) | 隔离广播域(不同网络间不转发广播) |
功能重点 | 局域网内高效帧转发 | 跨网络寻址与路由选择 |
6. VLAN的作用及实现原理
作用:
隔离广播域:划分逻辑子网,减少广播风暴影响
增强安全性:隔离不同部门/业务流量
灵活管理:设备物理位置无关,按逻辑分组
实现原理:
端口划分:将交换机端口静态分配到不同VLAN
标签封装:基于IEEE 802.1Q协议,在帧头添加VLAN ID标识(如VLAN 10/20)
Trunk链路:通过Trunk端口跨交换机传输多VLAN流量
三、网络层
1. IP协议的定义及作用
定义:Ip是网络层核心协议,负责在不同网络间传输数据包,提供无连接的、尽力而为的传输服务
作用:
寻址和路由:通过IP地址标识设备,并基于路由表选择最佳传输路径
数据分片与重组:根据网络MTU(最大传输单元)拆分或重组数据包
跨网络通信:屏蔽底层网络差异,实现异构网络的互联互通
2. IPv4与IPv6的主要区别
对比项 | IPv4 | IPv6 |
---|---|---|
地址长度 | 32位(约43亿地址) | 128位(理论上3.4x10~38地址) |
地址标识 | 点分十进制 | 冒号分隔16进制 |
头部复杂度 | 固定20字节,含校验和字段 | 简化固定40字节,无校验和字段 |
关键改进 | 依赖NAT缓解地址不足 | 原生支持自动配置、端到端加密 |
3. IP地址的分类及子网划分方法
传统分类:
A类:0.0.0.0~127.255.255.255(网络号8位,主机号24位)
B类:128.0.0.0~191.255.255.255(网络号16位,主机号16位)
C类:192.0.0.0~223.255.255.255(网络号24位,主机号8位)
子网划分:
子网掩码:通过延长网络号划分子网(如255.255.255.0表示24位网络号)
CIDR(无类域间路由):可变长子网掩码(如192.168.1.0/26表示26位网络号
4. 什么是NAT?其应用场景有哪些?
定义:网络地址转换将私有IP地址映射为公有IP地址,解决IPv4地址不足问题
应用场景:
家庭网络:多设备共享一个公网Ip访问互联网
企业内网:隐藏内部网络拓扑,增强安全性
IPv4和IPv6:通过NAT64实现协议转换
5. ICMP协议的作用及常见应用(如Ping)
作用:互联网控制报文协议(ICMP)用于网络层错误报告与诊断(如丢包通知、路径追踪)
常见应用:
Ping:检测目标可达性与往返时延
Traceroute:显示数据包传输路径和每跳延迟
6. 路由协议的分类(如RIP、OSPF、BGP)及特点
协议类型 | 协议 | 特点 | 适用场景 |
---|---|---|---|
内部网关协议(IGP) | RIP | 基于跳数(最大15跳),周期性广播路由表 | 小型网络(如企业分支) |
OSPF | 基于链路状态(SPF算法),划分区域优化收敛速度 | 大型企业网/运营商网络 | |
外部网关协议(EGP) | BGP 路径矢量协议,基于策略跨自治系统选路 | 互联网骨干网(如ISP互联) |
7. 解释路由表的作用及生成方式
作用:存储网络可达性信息,直到数据包转发路径选择
生成方式:
直接路由:自动添加直连网络条目
静态路由:管理员手动配置
动态路由:通过RIP、OSPF等协议学习路由信息
优先级:
按管理距离(AD值)排序,直连路由(AD=0)优先于静态路由(AD=1)和动态路由(如OSPF AD=1110)
四、传输层
1. TCP与UDP的主要区别及适用场景
维度 | TCP | UDP |
---|---|---|
连接性 | 面向连接(需三次握手建立连接) | 无连接,直接发送数据报 |
可靠性 | 高可靠:确认应答、重传、流量控制等机制 | 不保证数据完整性,可能丢包 |
传输方式 | 字节流传输(按顺序重组数据) | 数据报传输(每个报文独立处理) |
速率与效率 | 速度较慢(需额外控制开销) | 速度快(无连接和确认机制) |
适用场景 | 文件传输、邮件、网页浏览等需可靠性场景 | 实时音视频、DNS查询、直播等低延迟场景 |
2. TCP如何保证可靠传输?列举关键机制
确认应答、超时重传、序列号与排序、流量控制、拥塞控制。
3. 三次握手与四次挥手的详细过程及必要性?
三次握手(建立连接)
SYN:客户端发送SYN包(序列号ISN_C)至服务端,进入SYN_SENT状态。
SYN+ACK:服务端回复SYN包(序列号ISN_S)及ACK(ISN_C+1),进入SYN_RCVD状态。
ACK:客户端发送ACK(ISN_S+1),双方进入ESTABLISHED状态。
必要性:确保双方序列号同步,验证双向通信能力,避免历史连接干扰。
四次挥手(断开连接)
FIN:主动关闭方发送FIN包,进入FIN_WAIT_1状态。
ACK:被动关闭方回复ACK,进入CLOSE_WAIT状态,主动方进入FIN_WAIT_217。
FIN:被动关闭方处理完毕后发送FIN包,进入LAST_ACK状态。
ACK:主动关闭方回复ACK,进入TIME_WAIT状态,等待2MSL后关闭。
必要性:确保双方数据收发完毕,避免残留报文干扰新连接
4. 为什么TIME_WAIT状态需要等待2MSL?
确保被动方的ACK到达:若主动方最后一ACK丢失,被动方重传FIN时仍可响应。
消除旧链接报文:得带2MSL(报文最大生存时间)使网络中残留报文过期。
5. TCP拥塞控制的算法有哪些?
算法 | 机制 |
---|---|
慢启动 | 初始窗口指数级增长至阈值,避免网络过载 |
拥塞避免 | 窗口线性增长,触发拥塞时阈值减半 |
快速重传 | 收到3次重复ACK立即重传丢失包,而非等待超时 |
快速恢复 | 重传后直接进入拥塞避免阶段,而非慢启动 |
6. 解释SYN Flood攻击原理及防御方法
原理
攻击者伪造大量SYN包,耗尽服务资源(半开连接队列)
防御
SYN COOKIE::服务器不保存连接状态,通过加密哈希验证请求合法性。
限流与过滤:防火墙限制同一IP的SYN请求频率,过滤异常流量。
7. UDP协议为何被称为“不可靠”?实际应用场景举例
不可靠性表现:无确认重传、流量控制、数据包顺序保障。
应用场景:DNS查询、实时流媒体。
8. QUIC协议相比TCP的优势是什么?
基于UDP实现:绕过运营商对TCP的干扰,降低部署成本。
多路复用:单连接支持多数据流,避免队头阻塞。
0-RTT建连:复用历史连接时可实现瞬时通信(首次仍需1-RTT)。
前向纠错(FEC):通过冗余数据减少重传次数,提升弱网性能。
五、应用层协议
1. HTTP协议的定义及无状态特性解决方案?
定义
HTTP协议,即超文本传输协议,是一种基于请求与响应、无状态、无连接的协议,尝基于TCP/IP协议传输数据。默认端口是80。
无状态特性
HTTP协议是无状态协议,即协议对客户端没有状态存储,对事务的处理没有记忆能力。例如,访问一个网站需要重复的登录操作。
解决方案
Cookies/Session会话保存:通过Cookies在客户端存储少量信息,Session在服务端维护用户会话装填,通常通过Session ID关联客户端
持久连接:只要任务一段没有明确提出断开连接,连接就会保持打开状态,从而在一定程度上模拟了状态保持
2. HTTP 1.0、1.1、2.0的核心改进?
HTTP 1.0
每个请求/响应都需要单独建立和关闭TCP连接,导致高延迟和资源浪费
不保留请求之间的上下文信息,每次请求单独处理
仅支持基础的Expires和Last-Modified头字段实现缓存,功能优先。
必须提前知道内容长度,否则无法传输动态生成的内容
缺少Host投资端,一个服务器无法托管多个域名
HTTP1.1
持久连接:默认服用TCP连接,允许一个连接上发送多个请求,减少握手开销
虚拟主机:支持一个IP地址托管多个域名
缓存策略:引入ETag、Cache-Control、if-None-Match等头字段,支持更精细的缓存策略
动态内容:允许服务器动态生成内容时,无需预先知道Content-Length
其他改进:支持范围请求、更多状态码和HTTP方法
HTTP2.0
二进制格式:将文本协议改为二进制格式,解析效率更高,减少错误
多路复用:单连接上并行传输多个请求和响应,彻底解决对头阻塞问题
头部压缩:使用HPACK算法压缩头部,较少重复字段的传输开销
服务器推送:服务器可主动向客户端推送资源,减少客户端等待请求
请求优先级:允许客户端未请求设置优先级,优化关键资源的加载顺序
3. HTTPS加密原理及握手过程?
加密原理
HTTPS协议是一种 通过计算机网络进行安全通信的协议,经过HTTP进行通信,利用SSL/TLS进行加密数据包。HTTPS在内容传输的加密上使用的是对称加密,非对称加密之作用在证书验证阶段。
握手过程
ClientHello:客户端发送支持的SSL/TLS版本、加密算法列表及随机数
ServerHello:服务端选择加密算法,返回随机数和数字证书
密钥交换:客户端验证证书有效性,生成第三个随机数,用公钥加密后发送
生成会话密钥:双方通过Client Random、Server Random、Pre-Master Secret生成Session Key
加密通信:后续数据传输使用Session Key进行数据加密
4. HTTP常见状态码(如200、404、500)的含义?
200 OK:请求已成功处理。
404 Not Found:服务器无法找到请求的资源。
500 Internal Server Error:服务器在处理请求时遇到了未知的错误。
5. GET与POST方法的区别及安全问题?
区别:
数据传输方式:GET方式的请求参数在URL中,用户可见;POST的参数在request body中,用户不可见。
数据传输量:GET方式受到URL长度限制,只能传递少量数据;POST方式对传递的数据大小无限制。
用途:GET方法主要用于获取信息;POST方法主要用于更新数据。
安全问题:
GET方式由于参数在URL中,存在信息泄露的风险。
POST方式相对更安全,但也需要采取其他安全措施,如HTTPS加密。
6. Cookie、Session与Token的机制及区别
Cookie:
机制:服务器端通过HTTP响应头Set-Cookie发送到浏览器的一小段数据(键值对),浏览器会存储它,并在后续请求中自动通过Cookie请求头回传给服务器。
特点:存储在浏览器端,易受CSRF攻击,可设置过期时间。
Session:
机制:服务器端维护的用户会话状态(如用户ID、权限等),通常通过Session ID(存储在客户端的Cookie中)关联客户端。
特点:存储在服务端,比纯Cookie安全,敏感信息不直接暴露,但在分布式系统中需共享Session。
Token:
机制:无状态的凭证(如JWT),包含用户信息和签名,由服务器签发,客户端存储(通常为LocalStorage或Cookie)并在请求时携带(如Authorization头)。
特点:存储在客户端,需防XSS攻击(LocalStorage)或CSRF攻击(Cookie),服务端无需存储Token,适合分布式系统。
7. WebSocket协议与HTTP长轮询的对比?
WebSocket
通信机制:提供全双工通信机制,允许服务器与客户端之间建立持久的连接,并实时交换数据
性能和实时性:由于建立了持久的连接,减少了开销和延迟,提供更高的性能和实时性
服务器负载:虽然较少了请求次数,但持久连接增加了服务器维持连接的负担
实现复杂性:实现相对复杂,需要专门的服务器支持和客户端实现
兼容性:不是所有的恶网络环境都支持WebSocket,可能会被某些代理和防火前阻塞
应用场景:适用于高实时性要求的应用,如在线游戏、实时聊天和实时数据监控
HTTP长轮询:
通信机制:工作在传统的HTTP协议之上,通过客户端不断发送请求给服务器来获取最新数据。服务器在有数据更新时才响应请求。
性能和实时性:每次请求可能引入额外的延迟,对于需要快速响应的实时应用,性能可能受限。
服务器负载:每个请求都需要服务器处理和响应,可能导致更高的服务器负载。
实现复杂性:实现相对简单,可以在现有的HTTP基础上构建。
兼容性:兼容性较好,因为它基于标准的HTTP协议。
应用场景:适用于对实时性要求不高的应用,或者简单的实时更新功能,如新闻更新或社交媒体通知。
8. DNS解析过程及递归/迭代查询的区别?
DNS解析过程
浏览器输入URL后,先进行解析URL是否合法
浏览器检查是否有缓存(浏览器缓存、系统缓存、路由器缓存),如果有缓存则直接显示,如果没有缓存,则进行域名解析,解析获取相对应的IP地址。
递归/迭代查询的区别
递归查询:由主机到本地域名服务器的查询方式。如果本地域名服务器没有该域名的记录,它会代表主机向其他DNS服务器发送查询请求,直到找到所需的IP地址或确定域名不存在。递归查询需要DNS服务器不断地向其他DNS服务器请求,直到找到最终结果。
迭代查询:由本地DNS服务器向根域名服务器发出查询请求的方式。根域名服务器会返回下一个应该查询的DNS服务器的地址,本地DNS服务器再根据这个地址继续查询,直到找到所需的IP地址。迭代查询中,每个DNS服务器只负责返回部分结果或指向下一个查询服务器的地址。
9. 为什么DNS通常使用UDP协议?
主要原因:处于性能和效率的考虑
小型请求和快速响应、低延迟、无状态、节省带宽等。
10. SMTP、POP3、IMAP协议的区别?
SMTP:主要用于发送邮件。定义了电子邮件的传输方式,并负责将邮件从发件人的电子邮件客户端发送到收件人的电子邮件服务器,通过TCP/IP连接发送电子邮件
POP3:主要用于接收电子邮件。允许用户从服务器上下载并存储邮件到本地设备。通常,POP3会将邮件从服务器上下载到本地设备后,删除服务器上的邮件副本(但现代的POP3服务器大多提供“只下载邮件,不删除服务器端邮件”的选项)。
IMAP:主要用于远程访问电子邮件。在服务器上维护邮件的副本,而不是将其完全下载到本地设备。IMAP允许用户从任何一个连接到服务器的设备上访问邮件,包括查看、删除、标记已读等操作。IMAP还支持在本地缓存邮件,以便离线访问。IMAP服务器与客户端之间的操作是双向同步的。
11. FTP的主动模式与被动模式?
主动模式:FTP客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP服务器必须和客户端建立一个新的连接用来传送数据。
被动模式:在建立控制通道的时候和主动模式类似,但建立连接后发送的不是PORT命令,而是PASV命令。FTP服务器收到PASV命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送。
12. RPC协议的基本原理及与HTTP API的对比
RPC(Remote Procedure Call)协议基本原理:
RPC协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。
RPC协议通常包括以下几个部分:客户端存根(Stub)、服务端存根(Stub)、网络传输模块和远程过程。客户端存根负责将客户端的请求参数打包成网络消息,并发送给服务端;服务端存根负责接收网络消息,并解析出请求参数,然后调用实际的过程或函数;远程过程执行完毕后,将结果返回给服务端存根,服务端存根再将结果打包成网络消息,发送给客户端存根;客户端存根解析出返回结果,并返回给客户端。
与HTTP API的对比:
通信方式:RPC协议通常使用二进制格式
进行通信,而HTTP API通常使用文本格式(如JSON、XML)进行通信。
性能:由于RPC协议使用二进制格式和更紧凑的编码方式
,通常比HTTP API具有更高的性能。
易用性:HTTP API通常更容易使用和调试,因为它们是基于HTTP协议的,可以使用标准的HTTP工具和库进行开发和测试。而RPC协议通常需要专门的客户端和服务器实现
。
灵活性:HTTP API通常更灵活,可以支持更复杂的业务逻辑和数据处理。而RPC协议通常更侧重于远程过程调用,对于复杂的业务逻辑和数据处理可能需要额外的封装和处理。