计算机网络——问题复习法(1)
计算机网络——问题复习法(1)
问题1:Ethernet和WiFi的主要特点是什么?
有线与无线区别!
答案:
• Ethernet(以太网):
• 有线局域网(LAN)接入,通过物理电缆(如双绞线、光纤)传输数据。
• 特点:高可靠性、低延迟、带宽稳定(如千兆以太网)。
• WiFi(无线局域网):
• 无线LAN接入,通过无线电波(如2.4GHz/5GHz频段)传输数据。
• 特点:移动性强、部署灵活,但易受干扰(如障碍物、其他设备)。
解释:
Ethernet和WiFi是两种主流的局域网接入技术,分别对应有线和无线场景。Ethernet适合固定设备的高性能需求,而WiFi为移动设备提供便利,但可能牺牲部分稳定性。
问题2:Packet loss(丢包)的主要原因是什么?
路由器缓存不足,缓存空间满了之后,新的分组到来自动丢弃!
答案:
主要原因:路由器缓存溢出(因缓存空间有限)。
其他原因可能包括:网络拥塞、链路错误、硬件故障等。
解释:
当数据包到达路由器时,若瞬时流量超过缓存容量,后续包会被丢弃(丢包)。例如,TCP通过重传机制应对丢包,但会导致延迟增加。
问题3:解释网络分层中的封装(Encapsulation)与解封装过程。
报文-报文段-数据段-帧!
答案:
封装流程(发送方):
- 应用层:生成
message
(如HTTP请求)。
- 传输层:添加头部(如TCP端口号)→ 形成
segment
。
- 网络层:添加IP头部(如源/目的IP)→ 形成
datagram
。
- 链路层:添加MAC头部和尾部 → 形成
frame
。
解封装流程(接收方):
反向逐层剥离头部,最终交付message
给应用层。
解释:
每层通过添加头部(Header)实现特定功能(如路由、纠错)。例如:
• TCP头部:确保可靠传输(序列号、确认号)。
• IP头部:实现跨网络寻址。
• MAC头部:用于同一链路内的设备寻址。
示意图:
1
2
3
4应用层: [message]
传输层: [TCP头部][message] → segment
网络层: [IP头部][TCP头部][message] → datagram
链路层: [MAC头部][IP头部][TCP头部][message][MAC尾部] → frame
问题 (Question):
Two important reasons that the Internet is organized as a hierarchy
of networks for the purposes of routing are:
(因特网组织为层次体系的原因是路由是……?)
规模太大,需要自治!
选项 (Options):
A. Message complexity and speed of convergence
(消息复杂性和收敛速度)
B. Least cost and maximum free circuit availability
(最低成本和最大空闲电路可用性)
C. Link cost changes and link failure
(链路成本变化和链路故障)
D. Scale and administrative autonomy
(规模/比例 和 管理的自治)
答案 (Answer):
✅ D. Scale and administrative autonomy (规模/比例 和
管理的自治)
解释 (Explanation):
1. Scale (规模/比例)
• The Internet is too large to be managed as a single, flat network.
(因特网规模太大,无法作为一个单一的扁平网络来管理。)
• Hierarchical routing (e.g., Autonomous Systems, AS) reduces routing
table sizes and improves efficiency.
(分层路由(如自治系统 AS)减少了路由表大小,提高了效率。)
2. Administrative Autonomy (管理的自治)
• Different organizations (e.g., ISPs, companies) need independent
control over their networks.
(不同组织(如ISP、公司)需要对其网络进行独立控制。)
• Hierarchical routing allows local policies (e.g., BGP routing
decisions) without affecting the entire Internet.
(分层路由允许本地策略(如BGP路由决策)而不影响整个因特网。)
Why not other options?
• A (Message complexity & convergence speed) → Related to routing
algorithms (e.g., OSPF), but not the primary reason for hierarchy.
(与路由算法相关,但不是层次化的主要原因。)
• B (Least cost & circuit availability) → More about QoS (Quality of
Service), not hierarchy.
(更偏向服务质量 QoS,而非层次化。)
• C (Link cost changes & failure) → Affects routing stability, but
not the structural design of the Internet.
(影响路由稳定性,但不是因特网的结构设计原因。)
问题 (Question):
对比Client-Server模型和P2P模型的主要特征。
(Compare the key characteristics of the Client-Server model and the
P2P model.)
答案 (Answer):
模型 (Model) | Client-Server 模型 | P2P 模型 (Peer-to-Peer) |
---|---|---|
核心结构 | 集中式(服务器 + 客户机) | 分布式(对等节点直接通信) |
服务器角色 | Always-on(始终在线),服务多个客户机请求 | 无专用服务器,所有节点可同时作为客户机和服务提供者 |
客户机间通信 | ❌ 不能直接通信 | ✅ 任意对等方(peer)可直接通信 |
扩展性 (Scalability) | 依赖服务器容量,扩展性有限 | 自扩展性 (Self-scalability),节点越多性能越强 |
管理难度 | 易于集中管理 | 难以管理(缺乏中心控制) |
解释 (Explanation):
1. Client-Server 模型
•
集中式架构:服务器(Server)作为核心,始终在线并处理来自多个客户机(Client)的请求(如Web服务器和浏览器)。
• 通信限制:客户机之间不能直接通信,必须通过服务器中转(例如:电子邮件服务、在线银行)。
• 优缺点:
• ✅ 管理简单(集中控制)。
• ❌ 单点故障风险(服务器宕机则服务中断)。
• ❌ 扩展性受限(服务器带宽和计算能力是瓶颈)。
2. P2P 模型
•
分布式架构:无中心服务器,所有节点(Peer)地位平等,可直接交换资源(如BitTorrent、区块链网络)。
• 自扩展性:新节点的加入会贡献资源(带宽、存储),从而提升整体网络能力。
• 优缺点:
• ✅ 高容错性(无单点故障)。
• ✅ 扩展性强(节点越多,网络性能越强)。
• ❌ 管理困难(缺乏中心权威,易受恶意节点影响)。
对比总结
• 适用场景:
• Client-Server:需要高可靠性、集中管理的服务(如电子商务、云计算)。
• P2P:需要高扩展性、去中心化的应用(如文件共享、加密货币)。
• 关键差异:
差异点 | Client-Server | P2P |
---|---|---|
控制方式 | 中心化 | 去中心化 |
通信模式 | 客户机↔︎服务器 | 对等方↔︎对等方 |
典型应用 | HTTP/Web服务 | BitTorrent/Bitcoin |
问题 (Question):
常见应用(如文件传输、电子邮件、网页等)对底层传输服务在数据丢失(Data Loss)、吞吐量(Throughput)和时间敏感性(Timing)方面的基本要求是什么?
答案 (Answer):
应用 (Application) | 数据丢失容忍度 (Data Loss) | 吞吐量/带宽 (Throughput) | 时间敏感性 (Timing) |
---|---|---|---|
文件传输 (File Transfer) | ❌ 不能丢失 (No loss) | 弹性 (Elastic) | ⏳ 不敏感 (Not sensitive) |
电子邮件 (Email) | ❌ 不能丢失 (No loss) | 弹性 (Elastic) | ⏳ 不敏感 (Not sensitive) |
网页 (Web Documents) | ❌ 不能丢失 (No loss) | 弹性 (几kbps ~ Mbps) | ⏳ 不敏感 (Not sensitive) |
因特网电话/视频会议 | ✅ 可容忍 (Tolerant) | 音频: 几kbps–1Mbps 视频: 10kbps–5Mbps |
⏱️ 敏感 (100ms 延迟上限) |
存储音频/视频 | ✅ 可容忍 (Tolerant) | 同实时音视频 | ⏱️ 敏感 (几秒延迟上限) |
交互式游戏 (Online Games) | ✅ 可容忍 (Tolerant) | 几kbps–10kbps | ⏱️ 敏感 (100ms 延迟上限) |
即时通讯 (Instant Messaging) | ❌ 不能丢失 (No loss) | 弹性 (Elastic) | ⏳ 部分敏感 (有时需实时) |
解释 (Explanation):
1. 数据丢失容忍度 (Data Loss Tolerance)
• 不可丢失 (No
loss):文件传输、电子邮件、网页等应用要求数据完整可靠(如TCP协议)。
• 可容忍 (Tolerant):实时音视频、游戏等允许少量丢包(如UDP协议),因重传会导致延迟。
2. 吞吐量/带宽需求 (Throughput Requirements)
• 弹性
(Elastic):文件传输、电子邮件等对带宽无严格限制,能适应网络波动。
• 固定范围 (Fixed range):
• 音视频流:音频(低带宽)、视频(高带宽)。
• 交互式游戏:低带宽但需稳定。
3. 时间敏感性 (Timing Sensitivity)
• 不敏感 (Not sensitive):文件传输、网页加载等允许延迟(如HTTP)。
• 高度敏感 (Highly sensitive):
• 实时音视频/游戏:延迟 ≤100ms,否则用户体验差。
• 存储音视频:允许几秒缓冲(如YouTube预加载)。
底层传输服务选择
• TCP:用于不可丢失数据(如文件、邮件)。
• UDP:用于可容忍丢包但低延迟的应用(如视频会议、游戏)。
总结 (Summary)
• 关键分类维度:
• 可靠性 vs. 实时性:不可丢失数据 vs. 低延迟。
• 带宽需求:弹性适应 vs. 固定范围。
• 设计启示:不同应用需匹配不同的传输层协议(TCP/UDP)和QoS策略。
问题 (Question):
常见应用(如文件传输、电子邮件、网页、实时音视频等)如何选择TCP或UDP协议?
答案 (Answer):
应用类型 (Application) | 传输协议 (Protocol) | 选择原因 (Reason) |
---|---|---|
文件传输 (File Transfer) | TCP | 数据必须完整无误,不允许丢失 |
电子邮件 (Email) | TCP | 邮件内容必须可靠送达 |
网页浏览 (Web) | TCP | 网页数据(HTML、图片等)需完整加载 |
实时音视频 (VoIP/Video Call) | UDP | 低延迟优先,允许少量丢包 |
在线游戏 (Online Gaming) | UDP | 实时交互,延迟敏感 |
流媒体 (Video Streaming) | 通常UDP(如直播) 或TCP(如点播缓冲) |
直播:低延迟优先 点播:可缓冲,允许TCP可靠传输 |
解释 (Explanation):
1. 选择TCP的应用
• 核心需求:数据完整性(No loss)、可靠性(Reliability)。
• 典型场景:
• 文件传输(FTP、云存储):若数据丢失会导致文件损坏。
• 电子邮件(SMTP/POP3):邮件内容必须完整传递。
• 网页(HTTP/HTTPS):文本、图片需完全加载,否则页面显示错误。
• TCP特性:
• 通过确认重传(ACK+Retransmission)、流量控制、拥塞控制确保数据可靠传输。
• 代价:较高延迟(因需建立连接、重传等)。
2. 选择UDP的应用
• 核心需求:低延迟(Low latency)、实时性(Real-time)。
• 典型场景:
• 实时音视频(Zoom/Skype):少量丢包仅导致短暂卡顿,但重传会导致不可接受的延迟。
• 在线游戏(MOBA/FPS):玩家操作需毫秒级响应,丢包可通过游戏逻辑补偿。
• 直播流媒体(Twitch/YouTube Live):实时性优先,允许丢帧。
• UDP特性:
• 无连接、无重传,传输速度快,但不保证可靠性。
• 应用层可自行实现部分可靠性(如FEC前向纠错)。
3. 特殊案例:流媒体(点播 vs. 直播)
• 点播(如Netflix):
• 通常用TCP(如HTTP-based streaming),因用户可容忍缓冲,且需完整数据。
• 直播(如Twitch):
• 通常用UDP(如RTMP),因实时性优先,少量丢包不影响观看。
问题 (Question):
请解释Web Page、Object和URL之间的关系及其核心概念。
答案 (Answer):
概念 | 定义 | 关键特性 |
---|---|---|
Web Page | 由多个对象(Objects)组成的复合文档(如HTML、图片、CSS等)。 | - 用户看到的完整页面。 - 由多个文件组合而成。 |
Object | 构成Web Page的单个文件(如HTML文件、JPEG图片、JavaScript脚本等)。 | - 每个对象需要独立连接获取。 - 通过URL唯一标识。 |
URL | 用于定位Object的地址,格式为:协议://主机名/路径名 (如http://example.com/image.jpg )。 |
- 唯一标识网络资源。 - 包含服务器和文件路径信息。 |
解释 (Explanation):
1. Web Page(网页)
• 组成:一个Web Page由多个Object(对象)构成,例如:
• 基础对象:HTML文件(定义页面结构)。
• 嵌入对象:图片(JPEG/PNG)、视频(MP4)、样式表(CSS)、脚本(JS)等。
• 加载过程:
- 浏览器首先请求主HTML文件(通过URL)。
- 解析HTML后,发现嵌入的其他Object(如
<img src="image.jpg">
)。
- 为每个Object发起独立连接(HTTP请求)获取资源。
2. Object(对象)
• 本质:是存储在服务器上的独立文件,每个Object需要:
•
唯一URL:通过URL定位(如http://hostname/path/to/file
)。
• 独立传输:每个Object需单独建立连接(早期HTTP/1.1为串行,HTTP/2支持多路复用)。
• 示例:
• 若一个网页包含5张图片,则共需加载:1个HTML + 5个图片对象 = 6个独立文件。
3. URL(统一资源定位符)
•
结构:协议://主机名/路径名
(如https://www.example.com/images/logo.png
)。
• 协议:HTTP/HTTPS/FTP等。
• 主机名:服务器域名或IP地址(如www.example.com
)。
•
路径名:资源在服务器上的路径(如/images/logo.png
)。
• 作用:
• 客户端通过URL向服务器请求特定Object。
• URL是Web资源的全局唯一标识符。
图示关系 (Diagram Reference):
• 树状结构(如用户提供的图片所示):
1
2
3
4
5Web Page
│
├── Object 1 (HTML) → URL: http://host.com/index.html
├── Object 2 (Image) → URL: http://host.com/image.jpg
└── Object 3 (CSS) → URL: http://host.com/style.css
• 一个Web Page是对象的集合。
• 每个对象有唯一URL,且需独立获取。
总结 (Summary):
• Web Page = 多个Objects的组合。
• Object = 通过URL定位的独立文件。
• URL = 资源的“身份证”,包含协议、主机名和路径。
• 实际影响:
• 网页性能优化需减少Object数量(如合并CSS/JS)。
• HTTP/2和HTTP/3通过多路复用降低独立连接的开销。
问题 (Question):
解释HTTP请求/响应模型(HTTP Request/Response)以及基于拉取模型(Pull Model)的对象获取过程。
答案 (Answer):
1. HTTP请求/响应模型(HTTP Request/Response)
•
HTTP请求(Request):客户端(如浏览器)向服务器发送请求,格式如下:
1
2
3GET /index.html
Host: www.example.com
User-Agent: Mozilla/5.0GET
(获取资源)、POST
(提交数据)、PUT
(更新资源)等。
• URL路径:/index.html
(请求的资源路径)。
• 协议版本:HTTP/1.1
或 HTTP/2
。
•
头部(Headers):附加信息(如Host
、User-Agent
)。
• HTTP响应(Response):服务器返回请求的资源或状态,格式如下:
1
2
3
4
5200 OK
Content-Type: text/html
Content-Length: 1234
<html>...(数据内容)...</html>200
(成功)、404
(未找到)、500
(服务器错误)等。
•
头部(Headers):描述资源类型(如Content-Type
)、长度(Content-Length
)。
• 主体(Body):实际数据(如HTML文件、图片等)。
2. 拉取模型(Pull Model)的对象获取
• 定义:客户端主动发起请求(Pull),服务器被动响应(无推送能力)。
• 流程:
- 用户输入URL(如
http://example.com/page.html
)。
- 浏览器发送
GET
请求获取主HTML文件。
- 解析HTML后,发现嵌入对象(如
<img src="image.jpg">
)。
- 对每个嵌入对象发起新的HTTP请求(Pull)。
- 服务器返回对象数据,浏览器渲染完整页面。
• 特点:
• 无服务器推送:所有资源需客户端显式请求。
• 串行问题:HTTP/1.1需为每个对象建立独立连接(HTTP/2通过多路复用优化)。
解释 (Explanation):
1. HTTP请求/响应的核心角色
•
无状态协议(Stateless):每次请求独立,服务器不保留客户端历史信息(依赖Cookies/Session维护状态)。
• 关键头部示例:
•
Cache-Control
:控制缓存行为(如max-age=3600
)。
• Cookie
:传递会话状态(如用户登录信息)。
2. 拉取模型 vs. 推送模型(Push Model)
| 对比项 | 拉取模型(Pull) | 推送模型(Push) | | ---------- |
------------------------------ | ------------------------------ | |
发起方 | 客户端(如浏览器) | 服务器(如WebSocket) | | 实时性 |
依赖轮询(延迟高) | 服务器可主动推送(如聊天消息) | | HTTP/2优化 |
支持服务器推送(Server Push)* | 原生支持 |
*注:HTTP/2的Server Push允许服务器在客户端请求前预推送资源(如CSS文件),但仍基于请求-响应范式。
3. 实际应用中的挑战
• 性能瓶颈:
• HTTP/1.1的串行请求导致页面加载慢(解决方案:雪碧图、资源合并)。
• HTTP/2通过多路复用(Multiplexing)解决。
• 安全性:
• HTTPS(HTTP over TLS)加密请求/响应内容。
总结 (Summary):
• HTTP请求/响应是Web通信的基础,遵循“客户端拉取-服务器响应”模式。
• 拉取模型的缺点(延迟、串行)推动了HTTP/2和WebSocket等技术的发展。
• 关键协议演进:
• HTTP/1.1 → HTTP/2(多路复用、Server Push) → HTTP/3(基于QUIC,解决队头阻塞)。
问题 (Question):
解释HTTP协议的无状态性(Stateless)、持久连接(Persistent/Non-Persistent)、HTTP方法(GET/POST/PUT/DELETE等)以及常见状态码(200/404/500等)。
判断题:
“当使用持久HTTP(Persistent
HTTP)传输一个包含文本和3张图片的网页时,每个对象都需要建立独立的连接。”
→ F(False)
答案 (Answer):
1. HTTP的无状态性(Stateless)
• 定义:服务器不记录客户端之前的请求信息,每次请求独立处理。
•
解决方案:通过Cookies
、Session
或Token
(如JWT)维持状态。
2. 持久连接 vs. 非持久连接
| 类型 | 非持久HTTP(Non-Persistent) | 持久HTTP(Persistent) | |
-------- | --------------------------------- |
--------------------------- | | 连接方式 | 每个对象需单独建立TCP连接 |
复用同一TCP连接传输多个对象 | | 默认版本 | HTTP/1.0 | HTTP/1.1及以后版本
| | 性能影响 | 高延迟(三次握手开销 × 对象数量) |
减少握手开销,提升加载速度 |
3. HTTP方法(Methods)
| 方法 | 作用 | 幂等性 | 安全性 | | -------- |
-------------------------- | ------ | ---------- | | GET
|
获取资源(如请求网页) | 是 | 是(只读) | | POST
|
提交数据(如登录表单) | 否 | 否 | | PUT
|
更新资源(全量替换) | 是 | 否 | | DELETE
| 删除资源 | 是 |
否 | | HEAD
| 仅获取响应头(不返回Body) | 是 | 是 |
4. 常见HTTP状态码
| 状态码 | 含义 | 示例场景 | | --------------------------- |
-------------- | ----------------------- | | 200 OK
|
请求成功 | 网页加载成功 | | 404 Not Found
| 资源未找到 |
URL路径错误或文件被删除 | | 500 Internal Server Error
|
服务器内部错误 | 后端代码崩溃 | | 302 Found
| 临时重定向 |
登录后跳转到首页 |
判断题解析
• 题目:持久HTTP下,每个对象需独立建立连接?
• 答案:False(错误)。
• 原因:持久HTTP(HTTP/1.1默认)复用同一TCP连接传输所有对象(文本+图片),无需重复握手。
解释 (Explanation):
1. 无状态协议的实际影响
• 问题:用户登录后,服务器如何识别后续请求?
• 解决方案:
•
Cookies:服务器通过Set-Cookie
头部下发标识,客户端后续请求携带Cookie
头部。
• Session:服务器存储用户状态,通过Cookie中的Session ID关联。
2. 持久连接的优化原理
• HTTP/1.1的改进:
• 默认启用持久连接(Connection: keep-alive
)。
• 传输完一个对象后,连接保持打开状态,供后续请求复用。
• 示例:
• 加载含3张图片的网页时:
◦ 非持久HTTP:需4次TCP握手(1 HTML + 3图片)。
◦ 持久HTTP:仅1次TCP握手,复用连接传输所有对象。
3. HTTP方法的安全性与幂等性
•
安全性:GET
和HEAD
是安全的(仅读取数据,无副作用)。
•
幂等性:多次执行效果相同(如GET
、PUT
、DELETE
)。
• 注意:POST
非幂等(重复提交订单可能创建多个订单)。
4. 状态码分类
•
1xx
:信息类(如101 Switching Protocols
,用于WebSocket升级)。
•
2xx
:成功类(如206 Partial Content
,分片下载)。
•
3xx
:重定向类(如304 Not Modified
,缓存有效)。
•
4xx
:客户端错误(如403 Forbidden
,无访问权限)。
•
5xx
:服务器错误(如502 Bad Gateway
,后端服务不可用)。
总结 (Summary):
• 无状态性是HTTP的核心设计,需额外机制(如Cookies)维持会话。
• 持久连接显著减少延迟(HTTP/1.1的默认行为)。
•
HTTP方法区分操作类型,GET
/POST
是最常用方法。
•
状态码快速定位问题,200
/404
/500
需重点掌握。
• 判断题关键:持久HTTP下无需为每个对象新建连接(与HTTP/1.0的非持久连接混淆是常见错误)。
问题 (Question):
FTP协议中的控制连接(Control Connection)和数据连接(Data Connection)分别有什么作用?
答案 (Answer):
连接类型 | 作用 | 特点 |
---|---|---|
控制连接 | 传输控制信息(如用户认证、命令PUT/GET 、目录操作等)。 |
- 持久化(整个会话期间保持打开)。 - 默认端口21。 |
数据连接 | 实际传输文件内容(如上传/下载文件)。 | - 按需创建,传输完成后关闭。 - 默认端口20(主动模式)。 |
解释 (Explanation):
1. 控制连接(Control Connection)
• 功能:
•
传输命令和响应(如USER
、PASS
、LIST
、PUT
、GET
)。
• 维护会话状态(FTP是有状态协议,与HTTP无状态相反)。
• 流程(如图片所示):
- 用户通过FTP客户端发起连接(如输入
ftp example.com
)。
- 客户端与服务器端口21建立控制连接。
- 通过控制连接发送认证和操作指令(如
get file.txt
)。
2. 数据连接(Data Connection)
• 功能:
• 专用于传输文件内容或目录列表。
• 每次文件传输需独立建立数据连接。
• 两种模式:
• 主动模式(Active Mode):服务器从端口20主动连接客户端。
• 被动模式(Passive Mode):客户端连接服务器的随机高端口(解决防火墙问题)。
• 流程(如图片所示):
- 用户输入
get file.txt
后,服务器通过控制连接通知客户端准备传输。
- 建立数据连接(端口20或高端口),传输文件内容。
- 传输完成后,数据连接关闭,控制连接保持。
3. 关键对比(FTP vs. HTTP)
| 特性 | FTP | HTTP | | -------- | -------------------------- |
----------------------------- | | 连接类型 | 分离的控制连接+数据连接 |
单一连接(请求/响应复用) | | 状态管理 | 有状态(控制连接维持会话) |
无状态(依赖Cookies/Session) | | 默认端口 | 控制21 / 数据20 | 80 (HTTP)
或 443 (HTTPS) |
总结 (Summary):
• 控制连接:FTP的“指挥中心”,负责发送指令和维持会话。
• 数据连接:FTP的“运输通道”,仅在实际传输文件时临时建立。
• 为什么分离?
• 控制与数据分离提高效率(如同时浏览目录和下载文件)。
• 允许防火墙灵活配置(被动模式解决客户端防火墙限制)。
问题 (Question):
在电子邮件系统中,SMTP、POP3、IMAP和HTTP协议分别扮演什么角色?
判断题:
“在电子邮件系统中,SMTP是用于发送邮件的协议,而POP3是用于接收邮件的协议。”
→ T(True)
答案 (Answer):
1. 邮件发送协议:SMTP(Simple Mail Transfer
Protocol)
• 作用:推送(Push)邮件到邮件服务器或接收方服务器。
• 模型:客户端→服务器或服务器→服务器(如Gmail发送邮件到QQ邮箱)。
• 端口:默认25(明文)或465(SSL加密)。
• 特点:
• 仅支持文本传输(附件需编码为ASCII,如Base64)。
•
使用命令-响应模式(如HELO
、MAIL FROM
、RCPT TO
)。
2. 邮件接收协议(Pull Model)
| 协议 | 功能 | 特点 | | ---- | -------------------------------------- |
-------------------------------------------------------- | | POP3 |
从服务器下载邮件到本地,删除服务器副本 | - 简单轻量。
-
不支持多设备同步(邮件仅存本地)。 | | IMAP |
在服务器上管理邮件,同步多设备访问 | - 保留服务器副本。
-
支持文件夹标记、搜索等高级功能。 | | HTTP |
通过Web界面访问邮件(如Gmail、QQ邮箱) | -
基于浏览器,无需专用邮件客户端。 |
3. 判断题解析
• 题目:SMTP用于发送邮件,POP3用于接收邮件?
• 答案:True(正确)。
• 原因:
• SMTP负责发送邮件(从客户端到服务器,或服务器间中转)。
• POP3/IMAP/HTTP负责接收邮件(从服务器拉取到客户端)。
解释 (Explanation):
1. 邮件系统工作流程
1. 发送阶段(SMTP):
• 用户A通过SMTP将邮件发送到发送方服务器(如Gmail的SMTP服务器)。
• 发送方服务器通过SMTP将邮件中转到接收方服务器(如QQ邮箱服务器)。
接收阶段(POP3/IMAP):
• 用户B通过POP3/IMAP从接收方服务器拉取邮件到本地客户端(如Outlook)。Web邮件(HTTP):
• 用户B直接通过浏览器访问邮件服务器(如登录mail.qq.com)。
2. 协议对比(POP3 vs. IMAP)
| 对比项 | POP3 | IMAP | | -------- | ------------------------ |
---------------------------- | | 邮件存储 | 下载后默认删除服务器副本 |
保留服务器副本,多设备同步 | | 功能支持 | 仅基本下载/删除 |
支持文件夹管理、标记、搜索等 | | 适用场景 | 单设备离线使用 |
多设备在线协作 |
3. 为什么SMTP不能接收邮件?
• SMTP设计为单向传输协议(发送方→接收方),缺乏邮件查询和管理功能。
• 接收邮件需协议支持拉取(Pull)和状态管理(如已读/未读标记),这是POP3/IMAP的职责。
图示参考 (Diagram Reference):
1. 邮件发送(SMTP):
1
User A → [SMTP] → Gmail Server → [SMTP] → QQ Mail Server
1
User B ← [POP3/IMAP] ← QQ Mail Server
1
User B ← [HTTP] ← mail.qq.com
总结 (Summary):
• SMTP:邮件系统的“邮递员”,负责发送和中转邮件。
• POP3/IMAP:邮件系统的“收件箱”,负责从服务器拉取邮件(POP3简单,IMAP功能丰富)。
• HTTP:通过浏览器访问邮件的替代方案(如Gmail网页版)。
• 关键点:
• SMTP仅用于发送,POP3/IMAP/HTTP用于接收。
• IMAP更适合现代多设备场景,POP3逐渐被淘汰。
问题(Question ):
解释P2P架构在文件分发中的可扩展性(Scalability)优势。
答案 (Answer):
P2P文件分发的可扩展性原理
1. 去中心化资源共享:
•
每个对等节点(Peer)既是客户端(下载数据),也是服务器(上传数据)。
• 传统C/S模型:服务器带宽是瓶颈;P2P模型:节点越多,总带宽越大。
自扩展性(Self-scalability):
• 新加入的节点贡献上传带宽,系统整体容量随用户增长而提升。• 例如:BitTorrent中,下载同一文件的用户越多,下载速度越快。
分块传输(Chunk-based Distribution):
• 文件被分割为小块(如256KB),节点间并行交换不同块,减少单点依赖。动态负载均衡:
• 节点根据网络状况选择最优邻居交换数据,避免拥塞。
解释 (Explanation):
• 对比C/S模型:
指标 | C/S模型 | P2P模型 |
---|---|---|
服务器压力 | 高(所有客户端依赖单一服务器) | 低(负载分散到各节点) |
带宽成本 | 服务器带宽需求线性增长 | 用户越多,总带宽越充足 |
• 数学证明: |
•
C/S模型分发时间:T = max{F/us, F/dmin}
(F
为文件大小,us
为服务器带宽,dmin
为最慢客户端带宽)。
•
P2P模型分发时间:T = max{F/us, F/dmin, NF/(us + Σui)}
(N
为节点数,ui
为节点上传带宽)。
• P2P的T随N增长趋近于常数,而C/S的T随N线性增长。
(注:参考Page 145的BitTorrent案例及分发时间公式。)
问题 (Question ):
传输层(Transport Layer)如何为运行在不同主机上的应用进程提供逻辑通信(Logical Communication)?
答案 (Answer):
传输层的逻辑通信功能
1. 抽象信道:
•
传输层在端到端(End-to-End)之间建立逻辑链路,屏蔽底层网络细节(如路由、跳数)。
• 应用进程只需关注IP+端口,无需处理物理链路差异。
多路复用/解复用:
• 复用(Multiplexing):多个应用进程共享同一网络层连接(如TCP/UDP)。• 解复用(Demultiplexing):通过端口号将数据正确交付给目标进程。
可靠性保障(以TCP为例):
• 确保数据有序、无丢失、无差错到达对端进程。
解释 (Explanation):
• 逻辑 vs. 物理通信:
• 物理通信:网络层(IP)负责主机到主机的实际数据传输(可能经过多跳路由)。
• 逻辑通信:传输层(TCP/UDP)为进程提供直接对话的幻觉,如图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
[Process A] ↔ (逻辑链路) ↔ [Process B]
↑↓ 传输层封装/解封装
[Host 1] → (物理网络) → [Host 2]
```
• 关键协议:
• TCP:面向连接,可靠传输(如HTTP、FTP)。
• UDP:无连接,尽力而为(如视频流、DNS)。
## **问题 (Question):**
解释传输层的套接字寻址(Socket Addressing)以及无连接(Connectionless)和面向连接(Connection-oriented)的多路复用(Multiplexing)与多路分解(Demultiplexing)机制。
选择题:
*“将运输层报文段(segment)中的数据交付到正确套接字(socket)的应用称为?”*
A. 多路复用(Multiplexing)
B. 频分复用(FDM)
C. 多路分解(Demultiplexing)
D. 时分复用(TDM)
---
**答案 (Answer):**
✅ C. 多路分解(Demultiplexing)
---
**解释 (Explanation):**
**1. 套接字寻址(Socket Addressing)**
• 定义:套接字 = IP地址 + 端口号(如`192.168.1.1:80`)。
• 作用:唯一标识主机上的一个应用进程,确保数据准确交付。
• 示例:Web服务器监听`80`端口,客户端通过IP+80端口与之通信。
**2. 多路复用与多路分解**
| 机制 | 方向 | 功能 |
| -------- | ------------------ | ------------------------------------------------------------ |
| 多路复用 | 发送方(源主机) | 从多个套接字收集数据块,封装为运输层报文段(segment),交给网络层发送。 |
| 多路分解 | 接收方(目标主机) | 根据报文段头部的端口号,将数据交付到正确的套接字(应用进程)。 |
**3. 无连接(UDP) vs. 面向连接(TCP)的复用/分解**
• UDP(无连接):
• 仅通过目标端口号识别套接字(源IP和端口可忽略)。
• 特点:简单快速,但可能误传(如重复报文)。
• TCP(面向连接):
• 通过四元组(源IP、源端口、目标IP、目标端口)唯一标识连接。
• 特点:可靠交付,确保数据有序到达。
**4. 选择题解析**
• 题目:将segment数据交付到正确套接字的应用是?
• 答案:多路分解(Demultiplexing)。
• 依据:
• 用户提供的图片明确说明:“多路分解将‘运输层segment’交付到正确的‘套接字’”。
• 多路复用是发送方的封装过程,多路分解是接收方的解封装过程。
**5. 图示参考(用户提供的图片)**
• 文字内容:
```
多路复用[multiplexing]:
在源主机从不同「套接字」中收集「数据块」,并为每个数据块封装上header生成segment,传递到网络层。
多路分解[demultiplexing]:
将‘运输层segment’交付到正确的「套接字」。
• 关键点:
• 复用:多个套接字→一个网络层接口。
• 分解:一个网络层接口→多个套接字。
总结 (Summary):
• 套接字寻址:通过IP+端口唯一标识进程。
• 多路复用:发送方合并多个应用数据为网络层报文。
• 多路分解:接收方根据端口号分发数据到目标进程。
• 核心区别:
• 复用(Multiplexing):“从哪来到哪去”(发送端)。
• 分解(Demultiplexing):“该给谁”(接收端)。
问题 (Question):
解释UDP协议中的检验和(Checksum)机制及其作用。
答案 (Answer):
1. UDP检验和(Checksum)的功能
•
目的:检测UDP数据报在传输过程中是否发生比特错误(如位翻转、丢失等)。
• 特点:
• 非强制(IPv4中可禁用,IPv6中必须启用)。
• 仅提供差错检测,不纠正错误(出错则丢弃数据报)。
2. 检验和计算方法(如图片所示)
1. 数据分组:将UDP数据报内容(含伪头部)按16位(2字节)分组。
2. 累加求和:将所有16位字相加(二进制求和)。
3. 溢出回卷:若结果溢出(超过16位),将进位1加回到最低位。
4.
取反码:对最终和取反码(1补数),结果存入Checksum
字段。
3. UDP数据报格式(参考图片)
| 字段 | 长度 | 说明 | | ---------------- | ------- |
---------------------------------------- | | Source Port | 16 bits |
源端口号(可选,全0表示无端口)。 | | Dest. Port | 16 bits |
目标端口号(必填)。 | | Length | 16 bits |
UDP数据报总长度(含头部,最小为8字节)。 | | Checksum | 16 bits |
检验和(覆盖数据报和伪头部)。 | | Application Data | 可变 |
上层应用数据(如DNS查询、视频流)。 |
解释 (Explanation):
1. 伪头部(Pseudo-Header)的作用
•
组成:包含IP层信息(源IP、目标IP、协议号、UDP长度),用于增强校验强度。
• 目的:确保IP层未错误转发数据报到其他主机或协议。
2. 检验和计算示例
假设需校验3个16位字:
• 0x1234
+ 0x5678
+ 0x9ABC
=
0xFFFF
(和) →
取反码得0x0000
(Checksum)。
•
接收方验证:对所有字段(含Checksum)求和,若结果为0xFFFF
,则无错误。
3. 为什么UDP需要检验和?
• 不可靠信道:底层网络(如以太网)可能引入比特错误。
• 轻量级保障:虽不保证可靠传输,但能过滤明显错误的数据报。
4. 与TCP检验和的对比
| 对比项 | UDP检验和 | TCP检验和 | | -------- | -----------------------
| ----------------------- | | 覆盖范围 | UDP头部 + 数据 + 伪头部 |
TCP头部 + 数据 + 伪头部 | | 强制性 | IPv4可选,IPv6必须 | 必须 |
问题 (Question):
解释停止等待协议(Stop-and-Wait)与流水线/滑动窗口协议(Pipelining/Sliding-Window)的工作原理及性能差异。
流水线体现其中!
答案 (Answer):
1. 停止等待协议(Stop-and-Wait)
• 工作原理:
- 发送方发送一个数据包,等待对应的ACK确认。
- 收到ACK后,才发送下一个数据包。
• 性能分析:
• 吞吐量公式:Throughput = L / (RTT + L/R)
◦ `L`:数据包大小,`R`:链路速率,`RTT`:往返时延。
• 缺点:信道利用率低(大部分时间在等待ACK)。
2.
流水线/滑动窗口协议(Pipelining/Sliding-Window)
• 工作原理:
- 发送方连续发送多个数据包(无需等待单个ACK)。
- 接收方按序确认,发送方通过滑动窗口动态调整未确认包数量。
• 性能优势:
• 吞吐量提升:Throughput ≈ min{W × L/RTT, L/R}
◦ `W`:窗口大小(允许未确认的包数量)。
• 信道利用率高:持续占用链路,减少空闲时间。
解释 (Explanation):
1. 停止等待协议图示分析(参考用户图片)
• 关键时间点:
• t=0
:发送第一个数据包的第一个比特。
• t=L/R
:发送完最后一个比特。
• t=RTT+L/R
:收到ACK,可发送下一个包。
• 问题:
•
每个数据包需等待完整RTT,导致利用率仅为L/R / (RTT + L/R)
(若RTT大,则效率极低)。
2. 流水线协议图示分析(参考用户图片)
• 关键改进:
•
发送方在t=L/R
时已开始发送第二个包,无需等待第一个包的ACK。
• 接收方批量确认(如累计ACK),减少控制开销。
• 滑动窗口机制:
•
窗口大小W
:限制未确认包数量,避免拥塞(如TCP的拥塞控制窗口)。
• 动态调整:根据网络状况(丢包、延迟)扩大或缩小窗口。
3. 协议对比
| 对比项 | 停止等待 | 流水线/滑动窗口 | | -------- |
-------------------------- | ------------------------- | | 发送方式 |
逐包发送,等ACK | 连续发送,滑动窗口控制 | | 吞吐量 | 低(受限于RTT) |
高(与窗口大小成正比) | | 适用场景 | 简单链路(如卫星通信早期) |
现代互联网(TCP核心机制) |
总结 (Summary):
• 停止等待:简单但低效,适用于低带宽或高可靠性需求场景。
• 流水线/滑动窗口:高效利用带宽,是TCP实现高吞吐的核心技术。
• 关键公式:
•
停止等待:利用率 ≈ 1 / (1 + 2a)
,其中a = RTT / (L/R)
。
• 流水线:最大吞吐 = W × L/RTT
(理想情况下)。
问题 (Question):
解释Go-Back-N(GBN)和Selective Repeat(SR)协议中的累积确认(Cumulative
Acknowledgment)机制,并回答以下问题:
1.
对于GBN滑动窗口协议,若序列号比特数为n,则发送窗口的最大尺寸是?
A. n
B. 2n-1
C. 2n-1
D. 2n-1
答案:C(2n-1)
- 当窗口大小为1时,SR、GBN和交替比特协议在功能上等价。
答案:True(正确)
答案 (Answer):
1. 累积确认(Cumulative Acknowledgment)
•
定义:接收方通过单个ACK确认按序到达的所有数据包(如ACK=3表示序列号≤3的包均已接收)。
• GBN vs. SR的差异:
协议 | ACK机制 | 重传策略 |
---|---|---|
Go-Back-N | 累积确认(ACK=n确认所有≤n的包) | 超时或收到重复ACK时,重传窗口内所有包。 |
Selective Repeat | 独立确认(每个包单独ACK) | 仅重传丢失的包,保留正确接收的包。 |
2. GBN发送窗口的最大尺寸(2n-1)
• 原因:
• 序列号空间为2n(n比特编码)。
• 为避免ACK混淆(如新旧包序列号重叠),窗口最大尺寸需满足:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
发送窗口大小 + 接收窗口大小 ≤ 序列号空间
(GBN中接收窗口=1,故发送窗口 ≤ 2<sup>n</sup>-1)
```
• 示例:n=3时,序列号空间为8(0~7),窗口最大为7。
**3. 窗口大小为1时的等价性**
• 原因:
• 窗口=1意味着每次仅发送一个未确认包,无流水线操作。
• 此时:
◦ GBN:无累积ACK需求(仅一个包待确认)。
◦ SR:无选择性重传需求(仅一个包可能丢失)。
◦ 交替比特协议:本质是窗口=1的停等协议。
• 结果:三者均退化为停等协议,功能完全一致。
---
**解释 (Explanation):**
**1. GBN的累积确认与重传**
• 用户图片内容:
> *“GBN中,一个ACK没收到就把这个ACK前边的都丢掉”*
> • 解读:
• 若ACK=3丢失,发送方会重传序列号≥3的所有包(即使部分已正确接收)。
• 缺点:带宽浪费(重复传输正确数据)。
**2. SR的选择性重传**
• 用户图片内容:
> *“SR中,一个ACK没收到就选择重传这一个”*
> • 解读:
• 仅重传丢失的包(如序列号=4的包丢失,仅重传4)。
• 优点:高效利用带宽,但需复杂缓存管理。
**3. 序列号空间与窗口大小关系**
• 数学推导:
• 序列号范围:0 ~ 2<sup>n</sup>-1(共2<sup>n</sup>个序号)。
• GBN约束:发送窗口 ≤ 2<sup>n</sup>-1(防止接收方无法区分新旧包)。
• SR约束:发送窗口 + 接收窗口 ≤ 2<sup>n</sup>(通常各取2<sup>n-1</sup>)。
**4. 功能等价性验证(窗口=1)**
• 用户图片内容:
> *“窗口1时会自动排除有可能无序的包”*
> • 解读:
• 窗口=1时,所有协议均变为停等协议:
◦ 发送方发送包→等待ACK→超时重传。
◦ 无乱序包可能(因每次仅一个包在传输)。
---
**总结 (Summary):**
• GBN:累积确认 + 批量重传,窗口最大为2<sup>n</sup>-1。
• SR:独立确认 + 选择性重传,窗口通常为2<sup>n-1</sup>。
• 窗口=1时:所有协议退化为停等协议,功能等价。
• 关键公式:
• GBN窗口:`W ≤ 2<sup>n</sup>-1`
• SR窗口:`W ≤ 2<sup>n-1</sup>`
## **问题 (Question):**
解释最大报文段长度(MSS)和最大传输单元(MTU)的关系,并说明它们如何影响TCP数据传输。
> 经常会在少于40这个考点上进行考察!
---
**答案 (Answer):**
**1. 定义与关系**
| 术语 | 定义 | 关系 |
| --------------------- | ------------------------------------------------------------ | ------------------------------ |
| MTU(最大传输单元) | 数据链路层单次可传输的最大数据帧大小(如以太网MTU=1500字节)。 | MTU = MSS + TCP头 + IP头 |
| MSS(最大报文段长度) | TCP协议单次可发送的应用数据最大长度(不含TCP/IP头部)。 | MSS = MTU - 40字节(TCP+IP头) |
**2. 典型计算(以太网示例)**
• MTU = 1500字节(常见于以太网)。
• TCP头 = 20字节,IP头 = 20字节 → 头部总和 = 40字节。
• MSS = 1500 - 40 = 1460字节。
**3. 对TCP传输的影响**
• 避免分片(Fragmentation):
• TCP通过MSS协商(三次握手时交换)确保数据段不超过MTU,避免IP层分片(分片降低性能)。
• 效率优化:
• 更大的MSS → 更高吞吐量(减少头部开销比例)。
• 但需适配路径最小MTU(Path MTU Discovery机制)。
---
**解释 (Explanation):**
**1. MTU与MSS的层次关系**
• MTU是数据链路层限制(如以太网、WiFi),决定物理帧的最大载荷。
• MSS是传输层(TCP)概念,仅计算应用数据,排除协议头。
• 公式验证:
```
IP数据报 = TCP段 + IP头 = (MSS + TCP头) + IP头 ≤ MTU
→ MSS ≤ MTU - 40
2. 为什么避免IP分片?
• 分片缺点:
• 重组开销:接收方需缓存和重组分片。
• 全局影响:任一分片丢失会导致整个数据报重传。
• TCP的解决方案:
• 通过MSS限制TCP段大小,确保IP数据报不超过MTU。
3. 实际场景中的MSS协商
• 三次握手阶段:
•
客户端和服务器在SYN
和SYN-ACK
报文中通告各自的MSS值(如MSS=1460
)。
• 双方选择较小的MSS作为实际值。
• Path MTU Discovery:
• 若路径中某链路MTU更小(如VPN隧道),TCP动态调整MSS。
总结 (Summary):
• MTU:数据链路层限制,决定单帧最大容量。
• MSS:TCP优化传输的机制,确保数据段适应MTU。
• 关键规则:MSS = MTU - 40字节
(默认TCP/IP头)。
• 设计目标:最大化吞吐量,最小化分片。
问题 (Question):
解释TCP报文段结构中的RST、SYN、FIN标志位的作用,并描述TCP三次握手(Three-Way Handshake)的连接建立过程。
注意ack和ACK,ack一般是1,ACK是对对应发送段的回应!
答案 (Answer):
1. TCP报文段标志位(6-bit Flags)
| 标志位 | 作用 | 触发场景 | | ------ |
------------------------------------------------------ |
------------------------------------------------------------ | | SYN |
同步序列号,用于连接建立。 | -
客户端发送SYN=1
发起连接。
-
服务器回复SYN=1, ACK=1
。 | | FIN |
终止连接,表示发送方数据已发送完毕。 | -
客户端/服务器发送FIN=1
关闭连接。
-
对方回复ACK
。 | | RST |
重置连接,强制终止异常连接(如端口未监听、数据错误)。 | -
服务器拒绝连接时发送RST=1
。 |
2. TCP三次握手流程
- SYN:客户端发送
SYN=1, seq=x
(随机初始化序列号)。
- SYN-ACK:服务器回复
SYN=1, ACK=1, seq=y, ack=x+1
(分配资源并确认客户端序列号)。
- ACK:客户端发送
ACK=1, seq=x+1, ack=y+1
,连接建立完成。
3. 接收窗口(Rcv Window)
•
作用:接收方通过Rcv Window
字段告知发送方剩余缓冲区大小(即愿意接收的字节数)。
•
设置时机:在三次握手的SYN-ACK
和后续数据段中动态调整。
解释 (Explanation):
1. SYN标志位与资源分配
• 用户图片说明:
“SYN:三次握手时,server为了响应一个收到的SYN,分配并初始化连接变量和缓存,并返回SYNACK”
• 关键点:
•
服务器收到SYN
后,会分配内存(如接收缓冲区)并生成初始序列号(seq=y
)。
•
若资源不足(如连接数超限),可能直接回复RST
拒绝连接。
2. FIN标志位与连接终止
• 用户图片说明:
“FIN:关闭连接时,client向server发送FIN为1的segment,server返回FIN为1的中止segment”
• 关键点:
• 四次挥手:
1. 客户端发送`FIN=1` → 服务器回复`ACK`。
2. 服务器发送`FIN=1` → 客户端回复`ACK`。
•
半关闭状态:一方发送FIN
后仍可接收数据(如服务器继续传输剩余数据)。
3. RST标志位的强制终止
• 用户图片说明:
“RST:ppt都没有。。”
• 实际作用:
•
异常处理:当收到无效报文(如目标端口未监听)时,直接回复RST
重置连接。
•
与FIN的区别:RST
是立即终止,不保证数据完整性;FIN
是优雅关闭。
4. 接收窗口(Rcv Window)的动态性
• 用户判断题:
“When a TCP connection is established, the value of Rcv Window in the segment header is set by the receiver.” → True
由接收者来界定!
• 原理:
•
接收方根据可用缓冲区空间实时更新Rcv Window
(如SYN-ACK
中初始值为8192字节)。
• 发送方需遵守窗口限制(流量控制核心机制)。
5. 三次握手的必要性
• 用户判断题:
“In the TCP, connection establishment of transport layer uses method of three-way handshaking.” → True
• 原因:
•
防止历史连接冲突:通过随机序列号(seq=x/y
)避免旧重复报文干扰。
•
双向资源确认:确保双方均准备好通信(客户端确认服务器SYN-ACK
,服务器确认客户端ACK
)。
总结 (Summary):
• SYN:连接建立的钥匙,触发资源分配。
• FIN:礼貌告别,确保数据完整传输。
• RST:强制终止,应对异常情况。
•
三次握手:通过SYN
和ACK
的交换,实现可靠的双向连接建立。
• 接收窗口:动态控制发送速率,避免接收方缓冲区溢出。
问题 (Question):
计算一个TCP报文段封装成IP数据报时的开销百分比(Overhead
Percentage)。
已知条件:
• 应用层消息:头部20字节 + 用户数据180字节。
• TCP头部:20字节(无选项字段)。
• IP头部:20字节(无选项字段)。
选项:
A. 30%
B. 75%
C. 33%
D. 25%
依然是40的问题!
答案 (Answer):
✅ D. 25%
解释 (Explanation):
1. 开销(Overhead)的定义
• 开销 = 协议头部总字节数 / 总传输数据量。
• 总传输数据量 = 应用数据 + 所有协议头部。
2. 分步计算
1. 应用层消息:
• 头部:20字节(题目给出)。
• 用户数据:180字节。
TCP封装:
• TCP头部:20字节(无选项字段,Page 234标准值)。• TCP报文段总长度 = TCP头部 + 应用层消息 = 20 + (20 + 180) = 220字节。
IP封装:
• IP头部:20字节(无选项字段)。• IP数据报总长度 = IP头部 + TCP报文段 = 20 + 220 = 240字节。
开销计算:
• 总头部字节数 = 应用层头部 + TCP头部 + IP头部 = 20 + 20 + 20 = 60字节。• 开销百分比 = (总头部 / 总传输数据量) × 100% = (60 / 240) × 100% = 25%。
3. 关键验证
• 用户提供的公式:
1
2IP datagram header = 应用层头部(20) + TCP头部(20) + IP头部(20) = 60字节
开销百分比 = 60 / (180 + 60) = 25%
• 题目中“应用消息头部”是否计入开销需明确。此处根据用户解析,计入总开销。
• 若仅计算TCP+IP头部(40字节),则结果为40/220≈18.18%(无对应选项)。
4. 为什么选D?
•
题目明确要求计算每个IP数据报的开销,因此需包含所有协议头部(应用层+TCP+IP)。
• 只有选项D(25%)匹配计算结果。
总结 (Summary):
• TCP头部固定20字节(无选项时),IP头部固定20字节。
• 开销计算逻辑:
1
2
3总开销 = 各层头部之和
总数据量 = 用户数据 + 总开销
百分比 = (总开销 / 总数据量) × 100%
问题 (Question):
解释TCP的流量控制(Flow Control)和拥塞控制(Congestion Control)的区别,并判断以下陈述是否正确:
- “TCP通过流量控制服务防止发送方淹没接收方。” →
T(True)
- “TCP流量控制的目标与拥塞控制的目标相同。” → F(False)
流量控制限制端到端之间,拥塞控制注重于网络,是更加重要的考点!
答案 (Answer):
1. 流量控制 vs. 拥塞控制的核心区别
| 对比项 | 流量控制(Flow Control) | 拥塞控制(Congestion Control) | |
-------- | ------------------------------------------- |
-------------------------------------- | | 控制对象 |
接收方(接收缓冲区剩余空间) | 网络(路由器队列拥塞程度) | | 目标 |
防止发送方超过接收方的处理能力 | 防止发送方超过网络的承载能力 | |
实现机制 | 通过接收窗口(RcvWindow)
动态调整发送速率 |
通过拥塞窗口(Cwnd)
动态调整发送速率 | | 触发信号 |
接收方的ACK
报文中的窗口字段 |
丢包(超时或重复ACK)或延迟增加 |
2. 判断题解析
1. “TCP通过流量控制服务防止发送方淹没接收方。”
• 答案:True。
•
原因:流量控制通过RcvWindow
限制发送速率,确保接收方缓冲区不溢出。
“TCP流量控制的目标与拥塞控制的目标相同。”
• 答案:False。• 原因:
◦ 流量控制的目标是保护接收方。
◦ 拥塞控制的目标是保护网络(避免全局性能下降)。
解释 (Explanation):
1. 流量控制(Flow Control)
• 用户提供的说明:
“Flow control:取决于接收方接收和缓存报文的能力”
• 工作原理:
•
接收方在ACK
中通告RcvWindow
(如剩余缓冲区=10KB)。
• 发送方确保未确认数据量 ≤ RcvWindow。
• 示例:
•
若接收方缓冲区满,RcvWindow=0
,发送方暂停发送,直到接收方腾出空间(通过ACK
更新窗口)。
2. 拥塞控制(Congestion Control)
• 用户提供的说明:
“Congestion control:取决于网络拥塞程度”
• 工作原理:
• 丢包作为拥塞信号:超时或收到3个重复ACK(如TCP Reno)。
• 动态调整Cwnd
:
◦ 慢启动(Slow Start):`Cwnd`指数增长,探索可用带宽。
◦ 拥塞避免(AIMD):`Cwnd`线性增减,平衡公平性与效率。
• 示例:
• 网络拥塞时,路由器丢包 →
发送方检测到丢包后减半Cwnd
。
3. 为什么目标不同?
• 流量控制是端到端问题(仅涉及发送方和接收方)。
• 拥塞控制是全局问题(涉及所有共享同一网络路径的TCP连接)。
4. 共同点
• 用户提供的说明:
“共同点:加在sender上”
• 解读:
• 两者均通过限制发送方的速率实现控制,但依据的信号和目的不同。
总结 (Summary):
• 流量控制:解决接收方过载,依赖RcvWindow
。
• 拥塞控制:解决网络过载,依赖Cwnd
和丢包信号。
• 关键区别:
• 流量控制是局部优化,拥塞控制是全局优化。
•
协议设计:TCP通过Min(RcvWindow, Cwnd)
确定实际发送窗口,兼顾两者目标。