计算机网络
本文系统梳理了研究生招生考试《计算机学科基础》科目中计算机网络部分的主要知识点。首先介绍了计算机网络的概念、体系结构及其交换技术,并对OSI七层模型与TCP/IP四层模型进行对比。随后阐述了物理层的相关概念,如码元、比特率、带宽及Nyquist与Shannon定理;接着详述了数据链路层,包括封装成帧、差错控制、流量控制与可靠传输,以及介质访问控制(含CSMA/CD、CSMA/CA、令牌传递等)。在网络层部分,介绍了IPv4/IPv6的首部字段、ARP、DHCP、ICMP、路由算法及NAT等核心机制;在传输层,重点分析了UDP与TCP,包括连接建立与释放、流量控制和拥塞控制。最后,在应用层讲解了DNS、FTP、HTTP、电子邮件等典型协议的原理和工作流程,为研究生招生考试《计算机学科基础》科目中的计算机网络部分提供了全面、系统的复习思路。
(摘要由 OpenAI o1-preview 生成)
第一章 计算机网络体系结构¶
存储-转发,计算总时间¶
发送时延/传播时延:计算机发送数据包到链路上所需时间。
传输时延:数据包从链路上传输到接收方所需时间。
存储-转发计算总时间:需要等待一个数据包完全接收后才能开始转发,整体过程类似于一个流水线。
交换技术¶
电路交换技术:建立连接,传输数据,释放连接。
报文交换技术:不需要建立连接,直接传输数据。
分组交换技术:将数据(报文)分成小块,每个小块独立传输。
OSI 七层模型 与 TCP/IP 四层模型¶
自底向上:
OSI 七层模型 | TCP/IP 四层模型 | 功能 | 特征 |
---|---|---|---|
物理层 | 网络接口层 | ||
数据链路层 | 网络接口层 | MAC 地址 | |
网络层 | 网际层 | OSI 规定提供有连接和无连接服务,TCP/IP 只提供无连接服务 | IP 地址 |
传输层 | 传输层 | OSI 提供有连接服务,TCP/IP 提供有链接(TCP)和无连接(UDP)服务 | 端口号 |
会话层 | 应用层 | 建立同步,提供检查点机制 | |
表示层 | 应用层 | 数据格式转换、编码、压缩、加密与解密 | |
应用层 | 应用层 | 网络应用 |
计算机网络协议的概念¶
协议包括语法、语义和时序三个要素。
语法:数据格式。例如 TCP 报文段的格式。
语义。例如 TCP 连接建立的过程。
时序。例如 TCP 连接建立中前后的时序关系。
第二章 物理层¶
波特率、比特率¶
波特率:每秒传输的码元数。一个码元是固定时长的一个数字脉冲。一个脉冲可以携带不止 1 位的数据。例如,将频率或者振幅空间划分为 \(2^n\) 个等级,那么一个码元可以携带 \(n\) 位数据。
比特率:每秒传输的比特数。比特率 \(=\) 波特率 \(\times\) 每个码元携带的比特数。
计算极限速率¶
Nyquist 定理:为确保能够恢复原始信号,采样频率至少是信号频率的两倍。假设带宽为 \(W\),那么极限波特率为 \(2W\)。从而极限比特率为 \(2W \log_2 M\),其中 \(M\) 是每个码元携带的比特数。
Shannon 定理:考虑随机的高斯噪声时,极限比特率为 \(W \log_2 (1 + S/N)\),其中 \(S/N\) 是信号功率与噪声功率之比。
信噪比:\(\log_{10} (S/N)\),单位 dB。dB 数转换功率比:\(\displaystyle S/N = 10^{\frac{dB}{10}}\)。
往往需要同时考虑 Nyquist 定理和 Shannon 定理的限制。
数字信号的编码¶
(1) RZ 编码:Return to Zero。每个码元的中间有一个零电平。
(2) NRZ 编码:Non-Return to Zero。每个码元的中间没有零电平。需要双方同步时钟。
(3) NRZI 编码:Non-Return to Zero Inverted。每个码元的中间没有零电平,但是下一个码元的电平取决于上一个码元的电平。如果电平发生跳变,则表示 0,否则表示 1。需要双方同步时钟。
(4) Manchester 编码:每个码元的中间都发生电平跳变。向上跳变表示 0,否则表示 1。可以通过电平跳变来同步时钟。(IEEE 802.3 以太网)
(5) Differential Manchester 编码:每个码元的中间都发生电平跳变,但此跳变无意义。只有码元的开始处的跳变有意义。向上跳变表示 0,否则表示 1。可以通过电平跳变来同步时钟。
物理层设备¶
中继器:无存储转发功能,只是对信号进行整形、放大、转发。
集线器:多个端口的中继器。
被物理层设备连接的网络同处于一个冲突域。
第三章 上半部分 数据链路层¶
数据链路层:为网络层提供 有/无连接 有/无确认 服务。
有/无连接:是否需要事先建立可靠连接。
有/无确认:是否需要接收方确认。不使用序号和确认的服务是不可靠的。
不存在有链接但无确认的情况。
封装成帧¶
帧定界:在数据包前后加上特定的标志,以便接收方识别帧的开始和结束。
透明传输:无论数据内容,都不会造成帧定界的混淆。
(1) 字符计数法:每一帧第一个字段记录整个帧的长度(包括帧头和帧尾)。
(2) 字符填充法:使用特殊的 ASCII 字符定界。在帧中出现特定字符时,插入转义字符,以避免混淆。
(3) 零比特填充法:使用 01111110
作为帧定界。在帧中出现 11111
时,插入 0
。接收时,如果出现 11111
,根据其后的比特是 0
还是 1
来判断是否是帧定界:如果是 0
,则删除填充的 0
,此处是数据;如果是 1
,则此处是帧定界。
(4) 违规编码法:使用特殊的编码方式,使得帧定界不会出现在数据中。
差错控制¶
(1) 奇偶校验:使用 1 位的校验码,加上这一位后,1
的个数为奇数或者偶数。(分别对应奇校验和偶校验)
(2) CRC 校验:\(m\) 位的数据,使用 \(r\) 位作为校验码。取 \(r+1\) 位的多项式 \(G(x)\),使用 {data[m-1:0], r{1'b0}}
除以 \(G(x)\),得到余数作为校验码。使用不进位借位的二进制加减法(XOR)进行计算。将余数放在数据的后面,接收方再次计算与 \(G(x)\) 的除法,如果余数为 0,则说明没有错误。可以检出所有 \(r\) 位以内的错误。
(3) 海明码:提供对单比特错误的检测和纠错,\(n\) 位的数据,\(r\) 位的纠错码,需要满足 \(2^r \geq n + r + 1\),即纠错码的总组合数大于等于所有可能的单比特错误位置(包括无单比特错误的情况)。
从 1 开始计数,将 \(r\) 位的纠错码排列在第 1, 2, 4, 8, ... 位上,然后在剩余的空间中按顺序填入原先的数据。每个数据被其位置号的二进制表示为 1 的纠错码校验(例如,对于处于位置 0b1011
的数据,被第 1, 2, 4 位的纠错码校验)。纠错码通过计算被其控制的数据位的异或得到。
接收方将检验位与所有被其控制的数据为作异或,如果结果为 0,则说明没有错误;否则,则说明在二进制位置号这一位为 1 的某一位出现了错误。
海明码的码距:海明编码中,任意两个有效的数据位组合之间的海明距离。
码距为 \(d\) 的海明码,提供对 \(d-1\) 位错误的检测和 \(\displaystyle \lfloor \frac{d - 1}{2} \rfloor\) 位错误的纠正(这是因为解码器通过选择距离最近的有效码字纠正错误,如果错误位数大于 \(\displaystyle \lfloor \frac{d - 1}{2}\rfloor\),那么最近的有效码字可能不唯一)。
例子:经典海明码,\(n = 4\),\(2^r \geq n + r -1\) \(\Rightarrow\) \(r = 3\),俗称 7, 4 码。其中任意两个有效数据位组合为 0000000
和 1110000
\(\Rightarrow\) 码距为 3 \(\Rightarrow\) 可以检测(但无法定位) 2 位错误和纠正(检测并定位) 1 位错误。
流量控制与可靠传输¶
相关概念:逐帧确认/累积确认、发送窗口 \(W_T\) /接收窗口 \(W_R\)(可以发送/允许接收的帧号)。
用滑动窗口来建模帧传输的过程。
(1) 停止等待协议
\(W_T = W_R = 1\)。逐帧确认。
(2) Go-Back-N 协议
按序接收,因此 \(W_R = 1\)。累计确认。
\(W_T > 1\),但需要满足 \(W_T + W_R \leq 2^n\),其中 \(n\) 是帧编号的位数,以免在同一轮传输中就用尽所有可能的帧编号。
当发送方检测到超时,重传超时的帧以及之后的所有帧。
当发送方收到 ACK 时,发送窗口后移。
(3) 选择重传协议
\(W_T, W_R > 1\)。逐帧确认。
\(W_T + W_R \leq 2^n\)。
\(W_T \geq W_R\)。
一旦接收方检测到错误,向发送方发送 NAK,要求重传;无错,发送 ACK,窗口后移。
(4) 计算信道利用率:发送用时 / 总用时
第三章 下半部分 介质访问控制子层¶
信道划分下的介质访问控制¶
(1) 时分复用
(2) 频分复用、波分复用(光的频分复用)
(3) 码分复用:每个站使用相互正交的单位向量表示 0 和 1。叠加传播,接收者使用发送站向量上的投影判断这个发送站是否发送了信号:如果投影为正,则发送了 1;如果投影为负,则发送了 0;如果投影为 0,则没有发送信号。
随机访问下的介质访问控制¶
(1) ALOHA 协议:有就发,如果确认超时,那么就认为发生了冲突,等待随机时长后重发。(如果改为立即重发,则会发生互递归,必然导致继续冲突)
(2) 时隙 ALOHA 协议:将时间划分为时隙,每个站在时隙开始时发送,如果冲突,等待随机时长后重发。
(3) CSMA 协议:监听信道,如果信道空闲,立即发送;如果信道忙,等待随机时长后重试。又细分为非坚持型 CSMA、1-坚持型 CSMA、p-坚持型 CSMA。这里的「坚持」指的是信道忙时是否继续监听信道。
(4) CSMA/CD 协议:CD = Collision Detection。如果发送过程中检测到冲突,立即停止发送,等待后重试。如何检测冲突:计算 RTT = \(2\tau\),如果在 \(2\tau\) 内收到了另外一个站的信号,那么就认为发生了冲突。适用于半双工通信(以太网)。这也是以太网帧最小帧长的原因:一个帧不能短到发送完之前还没有检测到可能的冲突。(检测到冲突的最大时长需要 \(2\tau\))
CSMA/CD 等待时长的计算:\(2 \tau \cdot r\),其中 \(r\) 是从 0 到 \(2^{\min(k, 10)} - 1\) 的随机数,\(k\) 是冲突重传次数。当 \(k = 16\) 时,不再重传,而是放弃(认为网络拥塞)。
(5) CSMA/CA 协议:CA = Collision Avoidance。避免冲突,而不是检测冲突。每个站在收到信息后,必须等待 IFS(Interframe Space)时间后才能发送下一个帧。每一个帧都需要确认。SIFS 用于间隔开不同的帧,因此每发送一个帧至少等待一个 SIFS。DIFS 用于发送 RTS 帧前的等待。
申请占用信道时,先发送 RTS(请求发送),然后等待接收到 CTS(允许发送)帧,随后等待 SIFS 时间后发送数据帧。适用于无线局域网。
(6) 令牌传递协议:每个站必须持有令牌才能发送数据。由令牌帧携带数据,每个站收到令牌后,可以发送数据(如果没有数据,则立即传递令牌),然后将令牌传递给下一个站。适用于令牌环网络。
局域网¶
局域网的特性由:拓扑结构、传输介质、介质访问控制决定
以太网:
逻辑拓扑结构:总线型;物理拓扑结构:星型
传输介质:双绞线、光纤
介质访问控制:CSMA/CD
无连接无确认,曼彻斯特编码。
以太网 MAC 帧的格式:
前导码 | 目的地址 | 源地址 | 类型 | 数据 | CRC |
---|---|---|---|---|---|
8 Byte | 6 Byte | 6 Byte | 2 Byte | 46-1500 Byte | 4 Byte |
802.11 无线局域网:
介质访问控制:CSMA/CA
802.11 MAC 帧的格式:
帧控制 | 持续期 | 地址 1 | 地址 2 | 地址 3 | 序列控制 | 地址 4 | 数据 | CRC |
---|---|---|---|---|---|---|---|---|
2 Byte | 2 Byte | 6 Byte | 6 Byte | 6 Byte | 2 Byte | 6 Byte | 0-2312 Byte | 4 Byte |
其中,地址 1、2、3 的含义由帧控制字段中的「去往 AP」、「来自 AP」决定。按顺序为 dest, src, addr3。addr3 为源地址或者目的地址(考虑到需要先向 AP 发送数据,然后再由 AP 转发给目的地址,因此需要 addr3 来标识真正的目的或者源地址)。
802.1Q 虚拟局域网:
通过在以太网帧中添加 VLAN 标签来实现虚拟局域网。
前导码 | 目的地址 | 源地址 | VLAN 标签 | 类型 | 数据 | CRC |
---|---|---|---|---|---|---|
8 Byte | 6 Byte | 6 Byte | 4 Byte | 2 Byte | 46-1500 Byte | 4 Byte |
使用 VLAN 标签(中的后 12 位)来区分不同的虚拟局域网。
广域网¶
节点交换机:局域网中的路由器与广域网的接口。
PPP 协议:点对点链路控制协议。用于在两个节点之间建立连接。用户计算机与 ISP 之间的连接。有连接、无确认(不可靠)。
异步的 PPP 帧使用字节填充法来进行帧定界。同步的 PPP 帧使用 01111110
作为帧定界。
PPP 帧只有最长限制,没有最短限制,这是因为 PPP 的点对点通信不需要使用 CSMA/CD 进行冲突检测。
数据链路层设备¶
交换机的自学习机制:交换机通过学习源地址来建立 MAC 地址表。当交换机接收到一个帧时,它会查看帧中的源地址,并将其与接收到这个帧的端口相关联。
交换机在转发帧时,如果目的 MAC 地址在 MAC 地址表中,那么就直接转发到对应的端口;如果不在,那么就广播到所有端口。
被数据链路层设备连接的网络同处于一个广播域。
第四章 网络层¶
网络层提供有链接的虚电路服务(OSI) 或者 无连接的数据报服务(TCP/IP)。在 TCP/IP 协议栈中,网络层使用 IP 地址。
SDN:软件定义网络。将网络设备的控制平面与数据平面分离,通过控制器来控制网络设备。
控制平面:路由选择,集中控制路由表并下发到路由器。
数据平面:数据包转发,根据路由表转发数据包。
IPv4¶
(1) IP 数据报中部分首部字段:
字段 | 描述 | 大小 |
---|---|---|
版本 | 值为 0x4 |
4bit |
首部长度 | 以 4B 为单位 | 4b |
总长度 | 以 1B 为单位,包括首部和数据 | 2B |
标识 | 计数器,用于分片 | 2B |
标志 | MF,DF,RF | 3bit |
片偏移 | 以 8B 为单位 | 13bit |
TTL | 生存时间,每经过一个路由器减 1 | 1B |
首部校验和 | 校验 IP 首部 | 2B |
源 IP 地址 | 4B | |
目的 IP 地址 | 4B |
(2) IP 数据报的分片:当数据报长度超过链路层的 MTU 时,进行分片,每一个路由器都可以对数据报进行分片。
其中,首部的标识用于恢复数据报的顺序,以数据报为单位;而标志和片偏移用于重组数据报的分片,以分片为单位。
(3) IPv4 地址:32 位,分为网络号和主机号。网络号用于路由,主机号用于标识主机。
分类的 IP 地址:网络号的位数分别为 8、16、24 位(A、B、C 类,分别以 0
,10
,110
开头)
保留全 0 和全 1 的网络号。全 0 的主机号表示本网络,全 1 的主机号表示本网络的广播地址。
私有 IP 地址:不被路由器转发的 IP 地址。
类型 | 地址范围 |
---|---|
A 类 | 10.0.0.0 - 10.255.255.255 |
B 类 | 172.16.0.0 - 172.31.255.255 |
C 类 | 192.168.0.0 - 192.168.255.255 |
(4) 对主机号,可以进一步划分为子网号和主机号。
子网掩码:子网掩码的 1 位标识网络号和子网号,0 位标识主机号。
当发送 IP 报文时,检查目的 IP 是否在同一子网中,若是,则直接发送;否则,发送到默认网关。
(5) CIDR:使用不定长的网络号和子网号,通过 CIDR 表示法来表示。(在 IP 地址后面加上 /
和子网掩码的位数,例如表示点对点链路时,可以使用 /30
,表示只有两个主机的子网。)
使用 CIDR 表示法,可以合并路由表表项,减少路由表的大小。
(6) 路由表使用最长前缀匹配,转发到复合条件的表项中,前缀最长的那一项。使用 a.b.c.d/32
表示通往特定主机的路由,使用 0.0.0.0/0
表示默认路由。
(7) NAT:由路由器维护的 NAT 表,将内部 IP 地址映射到外部 IP 地址。
(8) ARP:将 IP 地址解析为 MAC 地址。广播 ARP 请求,单播 ARP 响应。路由器中维护 IP 地址与 MAC 地址的映射表。
(9) DHCP:即插即用的 IP 地址分配协议。DHCP 服务器维护 IP 地址池,客户端发送 DHCP 请求,服务器回复 DHCP 响应。UDP,C/S,应用层协议。
(10) ICMP:Internet 控制报文协议。其本身是网络层协议(只能得到 IP 地址,不能得到端口号),但使用 ICMP 的 ping
工作在应用层,使用 ICMP 的 traceroute
工作在网络层。
ICMP 差错报文:终点不可达(不能交付数据报),超时(TTL 为 0 时),源点抑制(网络拥塞),参数问题(首部校验和错误),重定向(使用另外的路由)。
IPv6¶
首部长度固定为 40 字节,首部扩展位于数据部分,不需要 DHCP,支持身份验证和加密,支持 Anycast。
区别于 IPv4,只有源主机能够对 IP 数据报进行分片,中间路由器不再对数据报进行分片,并且不再使用校验和。
IPv6 地址:128 位,分为网络前缀和主机标识。使用 :
分隔,::
标识若干个连续的 0000
字段。
网络号 | 子网号 | 接口 ID = MAC 地址 |
---|---|---|
48 bit / 3 节 | 16 bit / 1 节 | 64 bit / 4 节 |
私有地址:FE80:...
至 FEBF:...
。
广播地址:FF00:...
至 FFFF:...
。
路由算法¶
(1) 距离-向量算法:即单源最短路径的 Frod-Bellman 算法。每个节点维护到其他节点的距禋向量,通过交换距离向量来更新路由表 -> RIP 算法(没有全局视角的最短路径算法),UDP,C/S,应用层
初始化时,每个节点向相邻节点发送自己的距离向量,然后接收相邻节点的距离向量,更新自己的距离向量,如果发生变化,则向相邻节点发送更新的距离向量,直到收敛。
RIP 算法使用跳数作为距离,最大跳数为 15,超过 15 被认为不可达。
graph LR
A{路由表中有目的网络?} -->|Yes| B{下一跳一致?};
B -->|Yes| C{新的下一跳总距离更近?};
C -->|Yes| D[更新];
C -->|No| E[不更新];
B -->|No| E;
A -->|No| E;
不可达信息传送速度慢。
(2) 链路状态路由算法:即单源最短路径的 Dijkstra 算法。每个节点维护到其他节点的链路状态,通过交换链路状态来更新路由表 -> OSPF 算法(有全局视角的最短路径算法),网络层
OSPF 算法定时向邻居发送 HELLO 报文,以确定可达性。当链路状态发生变化时,重新计算自己到所有节点的最短路径,然后使用洪泛法向所有节点发送链路状态。
(3) 层次路由算法:分层,AS 内部保持一致,AS 之间无要求。AS 之间使用 BGP 协议,每个 AS 的代理人路由器(BGP 边界路由器)向相邻 AS 的代理人路由器发送路由信息,使用 TCP。
多播¶
只有当路径发生分叉时,才会复制数据报。仅 UDP 支持多播。
(1) 多播地址:IPv4 中为 224.xxx.xxx.xxx
- 239.xxx.xxx.xxx
(以 1110
开头)。以太网原生支持多播,因此在 IPv4 地址中,需要将多播地址映射为以太网的多播地址。IPv4 中多播地址使用 28 位标识主机,但以太网的多播地址只有 23 位,因此在转换为 MAC 地址时舍弃高 5 位。
(2) IGMP:Internet 组管理协议。用于主机向路由器报告自己加入或者离开多播组,不会产生 ICMP 差错报文。
移动 IP(漫游)¶
C/S,应用层。
移动站,永久地址(归属地址),转交地址(在访问漫游网络时,临时获得的地址),归属代理,漫游代理。移动站之间的通信通过代理之间建立的隧道进行。
网络层设备¶
路由器,路由器实现了网络层、数据链路层、物理层的功能。隔离广播域,通过网络层连接不同的异构网络。
第五章 传输层¶
传输层功能:提供端到端的,面向连接(TCP)或者无连接(UDP)的服务。
提供差错检测(同时检测首部和报文,TCP,UDP)和流量控制,拥塞控制(TCP)。
UDP¶
(1) UDP 首部:
源端口 | 目的端口 | 数据报总长 | 全文校验和 |
---|---|---|---|
2B | 2B | 2B | 2B |
(2) 校验和的计算:添加 12B 的伪首部(源 IP,目的 IP,协议,数据报总长)在最前方,以 16 位为粒度,分割,求和,取反。若数据部分为奇数个字节,需要补 0。
(3) UDP 无连接,无确认,无流量控制,无拥塞控制。支持一对一、一对多、多对一、多对多的通信。
目的端口错误:发送 ICMP 端口不可达报文。
校验和错误:直接丢弃。
TCP¶
(1) TCP 首部:
源端口 | 目的端口 | 序号 | 确认号 | 数据偏移/首部长度 | ... | 校验和 | ... |
---|---|---|---|---|---|---|---|
2B | 2B | 4B | 4B | 4b | ... | 2B | ... |
TCP 首部长度可变,固定部分 20B,可选部分最长 40B,需要 4B 对齐。
数据偏移/首部长度:以 4B 为单位,表示数据距离数据报第一个字节的偏移量。
校验和:计算与 UDP 一致。
(2) TCP 连接建立(三次握手)
前两次握手(SYN 数据报)不传输数据但需要消耗序列号。第三次握手即可携带数据,如果没有数据,则不需要消耗序列号。
C S
| SYN=1, seq=x |
+--------------------------------------> |
| SYN=1, ACK=1, seq=y, ack=x+1 |
| <--------------------------------------+
| ACK=1, seq=x+1, ack=y+1 |
+--------------------------------------> |
| |
(3) TCP 连接释放(四次挥手)
FIN 数据报在不传输数据时也消耗序列号。
C S
| FIN=1, seq=x |
+--------------------------------------> |
| ACK=1, seq=y, ack=x+1 |
| <--------------------------------------+
| |
| |
| FIN=1, ACK=1, seq=z, ack=x+1 |
| <--------------------------------------+
| ACK=1, seq=x+1, ack=z+1 |
+--------------------------------------> |
| x
| (wait 2 MSL)
|
x
在第二次与第三次挥手之间,如果服务器没有数据发送,那么可以合并第二次与第三次挥手。
从用户发起 FIN 开始计算,用户端最短释放连接的时间时 1 RTT + 2 MSL。
从用户发起 FIN 开始计算,服务端最短释放连接的时间时 1.5 RTT。
(4) 流量控制
使用首部的窗口字段来进行流量控制。接收方通过窗口字段来告诉发送方自己的接收窗口大小 rwnd
。如果对方的 rwnd
为 0,则定时主动发送 0 窗口探测报文。
(5) 拥塞控制
拥塞窗口 cwnd
,慢启动阈值 ssthresh
。
能发送的数据大小为 min(cwnd, rwnd)
。
未发生拥塞时,每一个传输轮次,cwnd *= 2
,直到 cwnd >= ssthresh
,然后进入拥塞避免阶段,每一个传输轮次,cwnd += 1
。
判断拥塞:超时或者收到 3 个冗余 ACK。
一旦发生拥塞,使 ssthresh = cwnd / 2
,cwnd = 1
,进入快速恢复阶段,每一个传输轮次,cwnd *= 2
。
如果是在一轮内收到 3 个冗余 ACK,那么 ssthresh = cwnd / 2
,cwnd = ssthresh
,并使用快速重传,对每个报文发送 ACK ,而非使用稍带确认。
与拥塞控制有关的计算,一个样例:
考虑拥塞控制时,不是有多少数据就能发多少数据,而需要同时受限于传输速率、接收窗口大小、拥塞窗口大小。下面的示例假设接收窗口大小总是足够大。并忽略传输时延。
#1 | #2 | #3 | #4 | #5 | #6 | #7 | |
---|---|---|---|---|---|---|---|
本传输轮次 cwnd | 1 | 2 | 4 | 8 | 16 | 17 | 18 |
累计发送 MSS | 1 | 3 | 7 | 15 | 31 | 48 | 66 |
时间流逝 | 1RTT | 2RTT | 3RTT | 4RTT | 5RTT | 6RTT | 7RTT |
平均速率 | \(\frac{1}{RTT}\) | \(\frac{3}{2RTT}\) | \(\frac{7}{3RTT}\) | \(\frac{15}{4RTT}\) | \(\frac{31}{5RTT}\) | \(\frac{48}{6RTT}\) | \(\frac{66}{7RTT}\) |
在每一个传输轮次中,每收到一个 ACK,cwnd += 1
。例如,当收到 ack = 4 * MSS + 1
的确认报文时,cwnd = 4 + 1 = 5
。
第六章 应用层¶
网络应用模型:C/S 模型、P2P 模型。
DNS¶
C/S 模型,53 号端口,UDP。
分为递归查询和迭代查询。
FTP¶
C/S 模型,21 号端口(控制连接),20 号端口(数据连接),TCP。
分为主动模式和被动模式。
HTTP¶
面向事务,无状态,C/S 模型,80 号端口,TCP。
非持续连接:1 个网页元素对象对应 1 个 TCP 连接。
持续连接、非流水线:收到用户的响应后,才能发送下一个对象。
持续连接、流水线:不需要等待用户的响应,就可以直接发送下一个对象。
有关发送网页元素对象需要的时延的计算,需要考虑 TCP 的拥塞控制。