计算机网络
2025.6.19 明天就考试了,怎么办怎么办(慌)
最基础的知识点了
往年题https://xyy9233.github.io/2024/12/16/ji-wang/ 🥰伟大
第一章
通常把与因特网相连的计算机或其他设备称为端系统,端系统也称为主机,主机分为客户和服务器
接入网是指将端系统物理连接到边缘路由器的网络,边缘路由器是端系统到任何其他远程端系统的路径的第一台路由器
- 家庭接入
- 企业接入
- 广域无线接入
网络核心:位于网络层级的最顶层,连接多个边缘网络
分组交换与电路交换
特性 | 分组交换 | 电路交换 |
---|---|---|
连接类型 | 无连接(如IP网络)或 逻辑连接(如TCP) | 物理连接(独占端到端链路) |
建立过程 | 无需预先建立固定路径,数据包独立路由(如快递) | 需预先建立专用通道(如传统电话拨号) |
存储转发传输:在交换机开始向输出链路传输该分组的第一个比特之前,必须接受到整个分组。通过N条速率均为R的链路组成的路径,从源到目的地发送一个分组,d_end=NL/R
排队时延:分组交换机对每个相联的链路有一个输出缓存,到达的分组在输出缓存中等待,缓存大小有限,如果缓存满了,会发生丢包
转发表和路由选择协议
电路交换:在两台主机之间创建一条专用的端到端连接,链路中的电路通过频分复用或时分复用来实现
分组交换的性能优于电路交换:分组交换按需分配链路
例题:分组交换和电路交换支持的用户数
某网络提供商有一个总带宽为 1 Mbps(1000 Kbps) 的通信链路。每个用户在通信时需要恒定的 100 Kbps 带宽。
问题:
- 电路交换模式下,最多能同时支持多少个用户?
- 若采用分组交换,假设每个用户以 10% 的概率在任意时刻发送数据,问该链路最多可以支持多少个用户,使得几乎不会出现拥塞?
解答解析:
- 电路交换
- 每个用户通信时占用 100 Kbps,链路总带宽为 1000 Kbps;
- 所以最多能支持的并发用户数为:
1000/100=10 个用户
电路交换需要为每个用户预留带宽,即使用户暂时不发送数据也占用资源。
- 分组交换
- 每个用户在任意时刻有 10% 的概率发送数据;
- 假设有 NNN 个用户,则期望同时活跃的用户数为:
0.1×N
- 为了使链路不会拥塞,活跃用户带宽需求应不超过总带宽:
0.1×N×100≤1000⇒N≤100
所以,分组交换在这种统计复用场景下,最多可以支持 约 100 个用户,是电路交换的 10 倍。
时延
处理时延:检查分组首部和决定分组导向何处和其他因素比如检查比特级别的差错,微秒或更低数量级
排队时延:分组在链路上等待传输
传输时延:先到先服务方式,L表示该分组的长度,R表示从路由器A到路由器B的传输速率,L/R
传播时延:传播速率取决于物理媒介,传播时延=两台路由器的距离除以传播速率,d/s
排队时延和丢包:令a表示分组到达队列的平均速率,则比特到达队列的平均速率为La bps,La/R称为流量强度,设计系统时流量强度不能大于1
应用层
HTTP 服务器采用无状态(stateless)管理方式,不保存客户端的任何状态信息。为了能记录用户状态,需要使用cookies
Web Cache(网页缓存)的作用是在客户端或中间网络节点保存之前获取过的 Web 资源副本,以减少后续访问相同资源时的响应延迟、带宽消耗和服务器负载。这是 Web 性能优化中非常关键的一环。
DHCP协议
动态主机配置协议,自动为设备分配 IP 地址及网络参数,它使用UDP传输,属于应用层
使用端口:UDP 67(服务器端)、UDP 68(客户端)
工作流程
步骤 | 名称 | 说明 |
---|---|---|
① | Discover | 客户端广播发送 DHCP Discover,寻找 DHCP 服务器,源ip为0.0.0.0,目的ip为255.255.255.255 |
② | Offer | 服务器回应 DHCP Offer,提供一个 IP 地址等参数,源ip为dhcp服务器ip,目的ip为255.255.255.255 |
③ | Request | 客户端广播发送 DHCP Request,请求使用该 IP 地址,源ip为0.0.0.0,目的ip为255.255.255.255 |
④ | ACK | 服务器发送 DHCP ACK,确认配置,租约开始,源ip为dhcp服务器ip,目的ip为255.255.255.255 |
DNS协议
将域名转换为IP地址
本地 DNS 递归查询过程如下:
- 问根服务器(Root DNS)
- 问:“.com 域在哪?”
- 根服务器返回:你去找 .com 顶级域(TLD)服务器
- 问 .com 顶级域服务器
- 问:“example.com 在哪?”
- 返回:去找 example.com 的权威 DNS 服务器
- 问权威 DNS 服务器
- 问:“www.example.com 的 IP 是多少?”
- 返回最终答案:例如
93.184.216.34
- 本地 DNS 把结果返回给客户端
- 同时会将查询结果 缓存一段时间(根据 TTL),避免重复查询。
- 浏览器用 IP 发起 HTTP 请求
SMTP协议(了解)
邮件发送协议SMTP,邮件读取协议POP3
服务模型
- CS 客户端-服务器
- P2P 对等
- 混合
CS和P2P比较
对比维度 | CS(Client-Server) | P2P(Peer-to-Peer) |
---|---|---|
中心节点 | 有中心服务器 | 无中心,或仅有“协调服务器” |
节点角色 | 客户端请求、服务器响应 | 节点既是客户端又是服务器 |
通信方式 | 客户端 ↔ 服务器 | 节点 ↔ 节点(点对点) |
可扩展性 | 差,服务器是瓶颈 | 好,越多人越快(比如 BitTorrent) |
稳定性 | 高,服务器在线即可提供服务 | 依赖各节点,易受节点下线影响 |
资源管理 | 集中管理 | 分布式管理 |
维护成本 | 高(需要维护服务器) | 低(资源由用户节点维护) |
常见应用 | 网站、银行系统、邮箱、Web 服务等 | BT 下载、电驴、电信 IPTV、区块链、IPFS 等 |
持久性HTTP和非持久性HTTP
特性 | 非持久性 HTTP(Non-persistent) | 持久性 HTTP(Persistent) |
---|---|---|
连接方式 | 每个请求-响应对使用一个 TCP 连接 | 多个请求-响应共享一个 TCP 连接 |
TCP 连接次数 | 多次建立和关闭连接(开销大) | 建立一次连接后复用(效率高) |
延迟表现 | 更高的延迟,慢 | 延迟更低,快 |
使用情况 | HTTP/1.0 默认 | HTTP/1.1 默认启用(可禁用) |
$$
T_{\text{non-persistent}} = n \times (2 \cdot RTT + \frac{F}{R})
$$
$$
T_{\text{persistent}} = 2 \cdot RTT + n \cdot \frac{F}{R}
$$
传输层
TCP和UDP的区别
对比项 | TCP | UDP |
---|---|---|
全称 | Transmission Control Protocol(传输控制协议) | User Datagram Protocol(用户数据报协议) |
是否面向连接 | ✅ 是(需要三次握手建立连接) | ❌ 否(无连接,直接发送) |
可靠性 | ✅ 可靠传输,确保无丢包、无重复、按序到达 | ❌ 不可靠,可能丢包、不按序、不重传 |
传输方式 | 字节流(Stream) | 数据报(Datagram) |
拥塞控制 | ✅ 有(如 TCP Reno, CUBIC 等) | ❌ 没有 |
流量控制 | ✅ 有(滑动窗口机制) | ❌ 没有 |
首部开销 | 较大,20 字节起 | 较小,8 字节 |
速度 | 较慢(有确认、重传等机制) | 快(直接发,不管结果) |
典型应用 | HTTP、HTTPS、FTP、SMTP、SSH 等 | DNS、视频直播、VoIP、在线游戏等 |
UDP协议
checksum校验和
1.构造伪首部,虽然不在 UDP 报文中,但参与校验和计算
2.如果总长度不是 16 位的整数倍,补一个 0 字节再计算
3.按16位分组相加,产生溢出要加到低位
4.取反码
TCP连接
三次握手
四次挥手
拥塞控制
AIMD自适应指数衰减法
TCP CUBIC 改进AIMD,丢包后窗口大小减半,最初更快的增长,随后以更慢的速度达到最大窗口值

TCP reno

慢启动阶段:初始时cwnd=1 MSS,每一个轮次cwnd大小加倍,指数级增长
拥塞避免阶段:每一个轮次cwnd加1,线性增长
快重传:
超时:这是严重的拥塞,说明连续多个数据包都没有被确认。
将拥塞窗口 cwnd 重置为 1 MSS,ssthresh(慢开始门限)设为原 cwnd 的一半,重新进入 慢开始阶段
收到三次重复ACK:说明某个包丢了,但之后的包被收到了。
快速重传丢失的数据包(无需等待超时),ssthresh = cwnd / 2
cwnd = ssthresh + 3 × MSS(考虑已经收到 3 个冗余 ACK)
进入快速恢复(Fast Recovery)阶段,在收到新的 ACK 后,恢复到拥塞避免(Congestion Avoidance)阶段
快速恢复:
每收到一个重复的ACK,cwnd加1
收到一个新的ACK,将 cwnd 恢复为 ssthresh,退出快速恢复,进入拥塞避免阶段
newreno:改进了快速恢复算法。在Reno中发送方只要收到一个新的ACK就会进入拥塞避免阶段,在New Reno中只有所有丢失的包都重传并收到确认后才退出
MTU:数据链路层中一个数据帧最大能承载的字节数,一般为1500bytes
MSS:TCP协议中一个TCP报文中应用层数据的最大长度,MSS=MTU-IP头部-TCP头部=1460bytes
TCP流量控制
基于滑动窗口协议,为了匹配发送方的发送速率和接收方的读取速率
传输层和数据链路层流量控制的区别:传输层定义端到端用户之间的流量控制,数据链路层定义两个相邻节点的流量控制。数据链路层的滑动窗口大小是固定的,而传输层的可以动态变化
停等协议
相当于发送窗口大小=1,接收窗口大小=1
滑动窗口协议
协议 | 特点 | 丢包/出错时 | 适用于 |
---|---|---|---|
GBN(Go-Back-N) | 接收方只接收按序号到达的分组,只发送累计确认 ACK | 丢一个,后面全部重传 | 逻辑简单、吞吐低 |
SR(Selective Repeat) | 接收方可接受乱序分组,每个分组独立确认 | 只重传出错/丢失的那一个 | 更复杂、吞吐高 |
利用率


rdt
可靠数据传输协议,它通常作为一种教学模型出现,用来帮助理解实际网络协议(如 TCP)是如何解决数据丢失、重复、乱序等问题的。
rdt1.0
可靠信道,无差错,不丢包,最简单
rdt2.0
信道可能出错,使用 确认ACK / 负确认NAK + 校验位
rdt2.1
增加了 序号来防止 ACK / NAK 混淆
rdt2.2
使用 ACK + 序号(无 NAK)
rdt3.0
处理信道可能丢包的问题,增加超时重传机制,相当于停等协议
sender:
TCP的往返时延超时机制
EstimatedRTT = (1 - α) * EstimatedRTT + α * SampleRTT
这是一个加权平均公式,用于估计 RTT(即从一个数据包发送到收到确认的时间)
指数加权平均移动,α典型值为0.125
优点:
对最近的样本更敏感,响应网络变化;
对过去的样本仍保留一定影响,从而避免波动太大;
可以平滑 RTT 的估计值,提高 TCP 超时机制的稳定性。
DevRTT 表示 RTT 的平均偏差,是对 RTT 波动情况的一种估计。若网络中 RTT 波动很大,DevRTT 也会较大;反之,如果 SampleRTT 很稳定,DevRTT 就会较小。
DevRTT=(1−β)⋅DevRTT+β⋅∣SampleRTT−EstimatedRTT∣
β典型值为0.25
TCP 的超时重传时间TimeoutInterval=EstimatedRTT+4⋅DevRTT
这是为了应对 RTT 的波动——容忍范围扩大 4 倍,以减少不必要的重传。
若 RTT 非常不稳定,DevRTT 会变大,TimeoutInterval 就会自动增加;
若 RTT 非常平稳,TimeoutInterval 会相应减小,提高效率。
TCP fairness
当多个 TCP 流共享同一瓶颈链路时,每个流都能获得大致相同的吞吐量,不会有某个流“独占”资源而饿死其他流。
为什么会有fairness?
因为 TCP 的拥塞控制机制天然具有“自适应”行为,它能根据网络反馈(如丢包)来控制自己的发送速率。
这让多个 TCP 连接在共享链路时,相互协调、退让,从而实现公平。
网络层
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
路由器的两个功能:路由和转发
数据平面和控制平面,转发是数据平面的功能,路由选择是控制平面的功能
SDN
一种网络架构,集中式的控制平面和分布式的数据平面,两个平面相互分离。
远程主机为每个分组计算出最佳路由,通过openflow协议将转发表(流表)下发给路由器
网络发生了拥塞的根据是随着通信子网负载的增加,吞吐量反而降低
存储转发机制:路由器在开始向输出链路传输第一个分组之前,必须接受到整个分组
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,ping命令
路由算法
静态路由:管理员手工配置
动态路由:
- 距离-向量路由算法:所有结点定期将它们的路由表转发给所有相邻的结点,然后更新路由表,RIP算法
- 链路状态路由算法:向本自治系统的所有路由器发送信息,使用泛洪法,发送的信息是与路由器相邻的所有路由器的链路状态,只有当链路状态发生变化时路由器才发送消息,OSPF算法
层次路由:对于大规模的网络,因特网将整个互联网分为许多较小的自治系统,自治系统内部决定用哪种路由协议
内部网关协议(IGP):RIP,OSPF
外部网关协议(EGP):BGP
子网划分
快学
NAT
NAT 是一种由路由器实施的技术,用于将私有 IP 地址(内网地址)转换为公有 IP 地址(公网地址),从而实现内网主机访问互联网或外网访问内网服务。
工作方式:
以 内网主机访问外网 为例(最常见):
- 内网主机发送请求(如访问 www.baidu.com),源 IP 是私有 IP(如 192.168.1.100);
- 路由器收到后,使用 NAT 把源 IP 转换为自己的公网 IP(如 101.1.2.3),并记录转换关系;
- 数据包发送到公网;
- 响应返回时,路由器根据记录,将目标 IP(公网 IP)重新转换为 192.168.1.100,转发给内网主机。
数据链路层
帧定界帧同步和透明传输
流量控制(传输层也有)
差错控制:
- 检错码:奇偶校验码,CRC循环冗余校验码
- 纠错码:海明码(好复杂)
介质访问控制
信道划分介质访问控制:
- 频分
- 时分
- 波分
- 码分
随机访问介质访问控制:
- ALOHA协议
- CSMA
- CSMA/CD(有线局域网) 支持半双工方式
- CSMA/CA(无线局域网)
ALOHA:https://blog.csdn.net/shulianghan/article/details/108095501
CSMA:
- 监听信道(Carrier Sense):
- 发送方在发送数据前先监听信道是否正在被占用。
- 信道空闲(Idle):
- 若信道空闲,立即开始发送数据。
- 信道繁忙(Busy):
- 若信道被占用,则等待一段时间后重新监听。
- 可能冲突(Collision):
- 由于传播延迟等原因,两个节点可能会“几乎同时”判断信道空闲并发送,导致冲突。
- 冲突检测/避免(取决于具体变体)
协议名 | 中文名 | 说明 |
---|---|---|
1. 纯 CSMA | 无碰撞检测或避免机制 | 听到空闲就发,不考虑冲突。 |
2. 1-坚持 CSMA | 1-persistent CSMA | 如果信道空闲立即发送,若忙就持续监听直到空闲立即发送(易冲突)。 |
3. 非坚持 CSMA | Non-persistent CSMA | 如果信道忙,等待随机时间再监听(降低冲突概率,但效率低)。 |
4. p-坚持 CSMA | p-persistent CSMA(用于时隙系统) | 若空闲以概率 p 发送,否则延迟一个时隙再尝试。 |
5. CSMA/CD | 冲突检测(Ethernet) | 发送时监听是否有冲突,若有冲突立即停止发送(不能用于无线)。 |
6. CSMA/CA | 冲突避免(Wi-Fi) | 在发送前先等待一段时间(DIFS),再进行竞争避免(不能检测冲突)。 |

隐蔽站问题:
A 和 C 都能和 B 通信,但 A 和 C 互相“听不到”(不在彼此的无线信号覆盖范围)
用RTS和CTS解决隐蔽站问题
A 想发送数据给 B,先发送一个 RTS(请求发送)帧;
B 收到 RTS 后,若信道空闲,就返回一个 CTS(允许发送)帧;
所有能听到 CTS 的节点(比如 C)会知道 B 将接收数据,于是保持沉默(不发数据);
A 收到 CTS 后再正式发送数据;
完成后 B 回复 ACK 确认。
ARP协议
地址解析协议,ip地址映射到MAC地址,每台主机都有ARP表
ARP的工作原理:
主机 A 检查自己的 ARP 缓存表:
- 看有没有 192.168.1.2 对应的 MAC 地址。
- 如果有,直接使用;
- 如果没有,继续下一步。
主机 A 发起 ARP 请求广播:
- 目标 IP:192.168.1.2
- ARP 请求数据包封装在以太网帧中,目的 MAC 地址是广播地址
FF:FF:FF:FF:FF:FF
- 各局域网设备都能收到。
主机 B 收到 ARP 请求,发现目标 IP 是自己:
它会回复一个 ARP 响应包,告诉主机 A:
“我 192.168.1.2 的 MAC 地址是 BB-BB-BB-BB-BB-BB”
此时,B 已经知道 A 的 MAC 地址了,不需要再额外发 ARP 请求。
主机 A 接收 ARP 响应:
- 将 192.168.1.2 和 BB-BB-BB-BB-BB-BB 的对应关系写入 ARP 缓存表。
- 后续发送数据时就可以直接使用该 MAC 地址
交换机自学习
交换表的表项至少包含一个MAC地址,连通该MAC地址的端口
初始时交换表为空
主机 A(MAC_A)发送数据给主机 B(MAC_B),交换机学习MAC_A,MAC_B不在表中,泛洪
更新MAC地址表
如果B发送数据给A,那么交换机单播转发
VLAN
广播域是指网络中能接收到同一个广播消息的所有设备的集合。当一个设备发送广播帧(如ARP请求)时,该帧会被广播域内的所有设备接收。
交换机的所有端口属于同意广播域,路由器可以隔离广播域,VLAN可以分割广播域。
冲突域是指网络中共享同一信道的设备集合,这些设备在发送数据时可能发生冲突(即多个设备同时发送导致数据碰撞)。冲突域的大小影响网络效率(尤其是半双工通信)。
交换机每个端口是一个独立的冲突域,路由器可以隔离冲突域
VLAN(虚拟局域网)是一种在二层(数据链路层)将物理局域网划分为多个逻辑子网的技术,使不同VLAN之间的设备无法直接通信(除非通过路由器或三层交换机)。
还有一部分内容
第七章怎么还要考啊喂☹️
IEEE 802.11 Wifi
蜂窝网络 4G
IEEE 802.3 以太网
802.11使用星形拓扑,其中心称为接入点,在MAC层使用CSMA/CA协议,又称为Wi-Fi
隐藏终端问题和衰减使得多路访问在无线网络中的复杂性远高于在有线网络中的情况
CDMA(自学)https://blog.csdn.net/qq_43262059/article/details/106201119 放这里
码分多址(CDMA)属于信道划分协议族,在无线LAN和蜂窝技术中应用十分广泛
看题