目录

  • 前言
  • 1. 奈式准则与香农定律(物理层)
    • 奈式准则
    • 香农定律
  • 2. 差错检测(链路层)
    • 奇偶校验
    • 循环冗余校验(CRC)
  • 3. 信道多路访问(链路层)
    • 码分多路复用(CDMA)
    • 载波侦听多路访问碰撞检测(CSMA/CD)
  • 4. 物理地址(MAC)与地址解析(ARP)
  • 5. 信道利用率(链路层)
  • 6. 路由选择算法(网络层)
    • 距离向量路由选择算法
    • 开放最短路径优先(OSPF)
  • 7. IP 数据报(网络层)
    • 首部结构
    • 数据分片
  • 8. IP 地址(网络层)
    • 表示
    • 网络地址转换(NAT)
    • 路由表与路由聚合
  • 9. IPV6(网络层)
  • 10. 滑动窗口(链路,传输层)
    • 停止-等待
    • 后退 N 步
    • 选择重传
    • 窗口大小规约
  • 10. TCP 拥塞控制(传输层)
  • 11. TCP 时序,连接管理(传输层)
    • 数据交付时序
    • 三次握手
    • 四次挥手
  • 12. DNS 域名解析(应用层)
  • 13. 持续 HTTP 与并行 TCP
    • 非持续 HTTP
    • 持续 HTTP
    • 例题(持续 HTTP)
    • 并行 TCP
    • 例题(并行 TCP)

前言

寄算机网络:

换!

1. 奈式准则与香农定律(物理层)

奈式准则

奈式准则告诉我们在 理想无噪声 的情况下,如果信号的频率是 W,码元的总数为 V,那么最大的信号传输速率为:

2Wlog⁡2V(单位为b/s)2W\log_2^V \ {} \ (单位为 b /s) 2Wlog2V​  (单位为b/s)

解读如下:信息以模拟信号(正弦波)的形式在物理信道上面传输,假设信号的频率是 W Hz,奈奎斯特告诉我们,需要用 严格大于 2W 的频率对信号进行采样才能保证无损,原因如下:


再来看公式,根据上面的分析:

  1. 因为采样的频率是 2W,那么我们每秒可以获得 2W 个离散的码元的值

  2. 如果有 V 种码元,最少需要用 log⁡2V\log_2^Vlog2V​ 个 bit 来表示一种码元,故每一个码元能传输的 bit 数目就是 log⁡2V\log_2^Vlog2V​

  3. 于是最终的信道速率等于二者乘积(每秒传输的码元数目 x 每个码元携带的比特数目)

这里假设有 8 种码元,比如 8 个离散的电平值,比如 0 伏特,1 伏特,一直到 7 伏特,就可以用二进制来表示这些离散的电平值:

电平值(伏特) 二进制表示
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

于是每个码元携带的 bit 数就为: log⁡2V\log_2^Vlog2V​

注:
奈氏准则只规定了最大的数据传输速率
实际传输速率不能超过理论值

香农定律

香农定律在 有噪声 的信道上规定了信号的最大传输速率为:

Wlog⁡2(1+SN)W\log_2^{(1+\frac{S}{N})} Wlog2(1+NS​)​

其中参数 SN\frac{S}{N}NS​ 为信噪比,如果没有单位,一般题目直接给出

注:

如果给出的信噪比是以 db(分贝)为单位,那么需要求解 SN\frac{S}{N}NS​,不能直接使用 :

信噪比(db)=10log⁡10SN信噪比(db) = 10 \log_{10}^{\frac{S}{N}} 信噪比(db)=10log10NS​​

所以计算香农定律中的最大信号传输速率,需要分两步:

  1. 如果信噪比以 db 的单位给出,需要从信噪比中解出 SN\frac{S}{N}NS​
  2. 将 SN\frac{S}{N}NS​ 带入公式 Wlog⁡2(1+SN)W\log_2^{(1+\frac{S}{N})}Wlog2(1+NS​)​ 计算最大传输速率

注:
在有噪声的信道上必须同时考虑奈氏准则与香浓定律,取二者的最小值作为信道传输速率的最大值:

2. 差错检测(链路层)

奇偶校验

数据一共 n bit,有效数据 n-1 bit,使用 1 bit 作为校验位,使得总共 n bit 中:

  1. 奇校验:1 的个数为奇数
  2. 偶校验:1 的个数为偶数

奇偶校验比较简单,但有可能发生了偶数 bit 的错误却检测不出来,检错率为 50%

循环冗余校验(CRC)

循环冗余校验较为复杂,但是检错能力更强。

首先约定一个校验码和一个阶数,假设最高阶数 r=3r=3r=3,校验码为 100110011001

注:
阶数为 r,校验码 bit 数目为 r+1
此外,校验码是发送方接收方共同知晓的

然后将 rrr 比特的全 0 数据拼接到源数据后面,假设源数据为 101001101001101001,这里取 r=3r=3r=3 那么最终拼接后的数据为:

101001000101001 \ 000 101001 000

然后利用校验码,对拼接后的数据进行模二除法(异或),得到余数:

最终的余数为 001001001,那么发送时,就把他拼接在源数据 101001101001101001 的后面,最终待发送的数据如下:

101001001101001 \ 001 101001 001

接收端利用同样的校验码,对 101001001101001 \ 001101001 001 进行模二除法(异或),如果得到的数据是 0,那么校验通过,否则校验失败

3. 信道多路访问(链路层)

将多路信号在单一信道上面传输。

码分多路复用(CDMA)

为每个站点分配一个码片序列号,形如 000110110001101100011011,根据码片序列,将 0 写成 -1 就可以获得编码向量:

A=(−1,−1,−1,+1,+1,−1,+1,+1)A = (-1,-1,-1,+1,+1,-1,+1,+1) A=(−1,−1,−1,+1,+1,−1,+1,+1)

如果码片序列 取反码 ,即 111001001110010011100100 然后再将 0 替换为 -1 就可以得到反编码向量:

A‾=(+1,+1,+1,−1,−1,+1,−1,−1)\overline{A} = (+1,+1,+1,-1,-1,+1,-1,-1) A=(+1,+1,+1,−1,−1,+1,−1,−1)

其中向量 AAA 和 A‾\overline{A}A 有 3 个特征:

  1. 不同设备之间的向量相互正交,即 A⋅B=0A \cdot B=0A⋅B=0
  2. 相同设备之间的向量,规格化内积为 1,即 1m⋅A⋅A=1\frac{1}{m}\cdot A\cdot A=1m1​⋅A⋅A=1
  3. 相同设备之间的向量和反向量,规格化内积为 -1,即 1m⋅A⋅A‾=−1\frac{1}{m}\cdot A\cdot \overline{A}=-1m1​⋅A⋅A=−1

注:
其中 m 是向量的维数

如果设备 A 要发送比特数据 1,那就向信道提交向量 AAA,如果要发送比特数据 0,那就提交向量 A‾\overline{A}A,对于 B 设备同理

假设现在 A 设备发送 1 比特,提交了 AAA,与此同时 B 设备发送 0 比特,提交了 B‾\overline{B}B,那么信道上面的数据为他们提交的数据的叠加:

S=A+B‾S = A + \overline{B} S=A+B

接收方利用每个站点的向量,和信道上的数据 SSS 做规格化内积得到数据。 如果要获取 A 站点的数据,那么有:

DataA=A⋅S=1m⋅A⋅(A+B‾)=1+0=1Data_A = A \cdot S = \frac{1}{m}\cdot A \cdot (A + \overline{B}) = 1 + 0 = 1 DataA​=A⋅S=m1​⋅A⋅(A+B)=1+0=1

结果是 1,说明 A 站点发送的数据是比特 1,如果是负一,说明发送的是比特 0,对于 B 站点也是一样:

DataB=B⋅S=1m⋅B⋅(A+B‾)=0+−1=−1Data_B = B \cdot S = \frac{1}{m}\cdot B \cdot (A + \overline{B}) = 0 + -1 = -1 DataB​=B⋅S=m1​⋅B⋅(A+B)=0+−1=−1

得到 -1 说明 B 站点发送的是 0 比特

注:
此处牢记向量的两条性质:

  1. 和自己人内积,结果是有效数据
  2. 和别的站点的向量内积,结果是 0

例子:

载波侦听多路访问碰撞检测(CSMA/CD)

在发送之前检测信道是否忙,如果不忙就发送信息,相比于传统的 CSMA 算法,多个碰撞检测机制,即发送的时候一旦检测到碰撞,就停止发射

因为是边听边发,要求发送时间足够长,否则还没来得及检测碰撞,就发送结束了。所以 CSMA/CD 将 过短的帧视为碰撞的无效帧 丢弃

注:
以太网规定最短帧长为 64 字节

那么发送时间最短能到多少呢?假设最极限的情况,A 给 B 发数据,A 的数据到 B 的门口了,B 也开始发数据,此时 A 发送的帧被撞碎,返回 A,经过了一来一回,所以最迟 2τ2\tau2τ 的时间可以检测到碰撞:


其中 τ\tauτ 为单向传播时延。

发送数据后最迟经过 2τ2\tau2τ 的时间就可以知道是否发送碰撞,如果 2τ2\tau2τ 时间内没有碰撞,之后都不会有碰撞了(CSMA/CD 的机制)

假设最短帧长为 LLL,数据传输速率为 V传输V_{传输}V传输​,站点距离为 SSS,数据传播速率为 V传播V_{传播}V传播​,那么有:

LV传输>2SV传播\frac{L}{V_{传输}}>\frac{2S}{V_{传播}} V传输​L​>V传播​2S​

如果在发送时不幸发生碰撞,那么应该等待一段随机的时间再发送。

CSMA/CD 中,碰撞发生时,由算法决定等待的时间长短。首先确定基本退避时间为往返时延 2τ2\tau2τ

然后确定这是第几次发生碰撞(或者说重传次数),设这个次数为 k,按照常理,发生碰撞的次数越多,越应该等待更长的时间再发送。此外, k 不宜过大否则等待时间太长,于是 k 取值为:

k=min⁡(重传次数,10)k=\min(重传次数,10) k=min(重传次数,10)

最后从集合 [0,1,2,3,...,2k−1][0,1, 2, 3,...,2^k-1][0,1,2,3,...,2k−1] 中选取一个数字,乘以基本退避时间 2τ2\tau2τ,就是最终发生碰撞的等待时间。这个策略叫做 二进制指数退避算法

4. 物理地址(MAC)与地址解析(ARP)

物理地址(MAC 地址)是硬件网卡出厂自带的地址,6 字节,不可更改。所以交换机转发一个以太网帧最短的转发时延就是:

t转发=6字节V传输速率t_{转发}=\frac{6 字节}{V_{传输速率}} t转发​=V传输速率​6字节​

在链路层发送数据帧的时候要包含源目物理地址,如果发送之前不清楚物理地址,那么就需要 ARP 协议查询。

通过 广播 询问目的 IP 地址对应的 MAC 地址,发现目的主机之后,目的主机 单播 一条回复

5. 信道利用率(链路层)

约定从第一个帧发送开始,到收到第一个帧的回复,这段时间叫做一个周期。而信道利用率是指一个周期中,发送帧的时间的占比。信道利用率越高,说明交换机在越勤奋的干活。

如果仅考虑传输时延和传播时延,那么一个周期的时间分为两部分:传输和传播。假设传输一个帧需要 T 时间,而在一个周期内传送了 n 个帧,那么信道利用率为:

利用率=nTRTT+T利用率=\frac{nT}{RTT+T} 利用率=RTT+TnT​

以 n=3 为例:


例题:


解:

6. 路由选择算法(网络层)

距离向量路由选择算法

其实就是一个简单的 dp,假设 dis(A,B)dis(A, B)dis(A,B) 表示 A 到 B 节点的距离,有如下的拓扑:


那么:

dis(A,B)=min⁡(dis(A,B),dis(A,C)+dis(C,B))dis(A, B) = \min(dis(A, B), \ dis(A, C) + dis(C, B)) dis(A,B)=min(dis(A,B), dis(A,C)+dis(C,B))

该算法是分布式的,每个节点一有更新,就广播自己的 所有路由信息 (整个路由表)给 邻居 节点

注:
RIP 算法是该算法的一个实现

开放最短路径优先(OSPF)

直接发送整个路由表信息,在大规模网络时收敛慢,于是 OSPF 只发送 邻居节点 的链路状态,但是这些报文通过泛洪(类似 BFS 一层一层)的方式传播到 所有 节点

因为每次只需要传递邻居的信息,该信息的规模和网络规模无关,于是 OSPF 能够在较大的网络也能收敛

7. IP 数据报(网络层)

首部结构

首部 定长部分 固定 20 字节,其中比较重要的部分有:

  1. 首部长度:变长首部的长度,以 4 字节为单位,最多可长到 60 字节
  2. 总长度:首部加上数据部分的总长度,以 1 字节为单位
  3. 片偏移:IP 数据报分片偏移,以 8 字节为单位

数据分片

因为链路层最大传输单元(MTU)为 1500 字节,而 IP 数据报的长度不能超过 1500,于是需要对 IP 数据报的 数据部分 进行分片

下面是一个分片的例子,假设有长度为 4000 字节的 IP 数据报需要发送,首部按照标准情况为 20 字节,那么需要对 3980 字节的数据进行分片。

因为 MTU 是 1500,那么每个 IP 包包头为 20,故最大数据为 1480 字节,分片情况如下:

注:
这里 0~1479 其实包含了第一段的 1480 个字节,因为是从 0 开始数数的
这一点和数组下标有点类似,要注意

8. IP 地址(网络层)

表示

四字节,采用点分十进制表示。一个 IP 地址由两部分组成,第一部分是网络号,第二部分是主机号。

其中主机号不能为全 0 或者全 1,全 0 的主机号表示该网段本身,全 1 的主机号表示广播地址

对于标准的 IP 地址有 4 种类别,他们的网络号和主机号都是固定的,分别为 ABCD 类地址。其中 D 类地址用作多播,此外 127.0.0.1 用作本机环回口:

A 类地址的网络号有 8 bit,其中全 0 的不能用,那么一共有 1~126 一共 126 个网络,而主机号有 24 bit,可以表示 224−22^{24}-2224−2 个主机

B 类地址网络号前两位固定为 10,可变的有 14 位,有 214−12^{14}-1214−1 个网络可用,减一是因为 128.0 不可指派

C 类地址前三位固定位 110,可变的位有 21 位,有 221−12^{21}-1221−1 个网络可用,减一是因为 192.0.0 不可指派

网络地址转换(NAT)

将专用网络地址转换为公共地址,让多个主机共享同一出口 IP 地址,从而增加主机的数目,是 IP 地址用完了的一种妥协方式。

对于每类地址,都有一部分网段被用来保留做私有地址,粗字体为网络号:

  • A 类地址:10.0.0.0 ~ 10.255.255.255,分出一个网段
  • B 类地址:172.16.0.0 ~ 172.31.255.255,分出 16 个网段
  • C 类地址:192.168.0.0 ~ 192.168.255.255,分出 256 个网段

边界路由器通过 端口号 区分私有网络内部的设备,代价是网络层要动上层传输层的东西(端口号),违反了协议的约定

注:
私有地址不经转换直接出现在公网上,那么直接丢弃数据包

路由表与路由聚合

路由器维护路由表,保存路由信息。包括目的地址和下一跳地址。在收到新分组的时候先检查目的 IP 地址,如果在路由表中有对应项目,那么转发之

如果有多条匹配的项目,选最长的匹配,因为网络号越长,越精确。例子:深圳市南山区,和深圳市南山区深圳大学沧海校区致腾楼

例子:


按照掩码取目的地址 132.19.237.5 的 网络号 然后将取出来的网络号和路由表中的项目进行对比。R3 的网络号不同不匹配,而 R1 和 R2 都是能够匹配上的,但是此时根据 最长匹配原则 应该选 R2,因为 R2 的网络号更长更精确

因为路由表允许存在多条路由,假设网段 A 分了三个子网 B,C,D,而通往 B,C,D 的三个路由条目都从同一出口转发,那么可以将这三个路由条目合并。

例子:有三条路由:

  • 去深圳大学沧海校区致腾楼,走南海大道
  • 去深圳大学沧海校区饭堂,走南海大道
  • 去深圳大学沧海校区理工楼,走南海大道

路由合并后:

  • 去深圳大学沧海校区,走南海大道

题目:

选取最长的公共网络号,作为聚合后的网段号即可:

所以聚合后的网络号占 8 + 8 + 5 = 21 位,即 172.18.10000000.0,即 172.18.128.0/21

9. IPV6(网络层)


注意压缩规则即可。压缩只能用一次,并且保证最大压缩:

10. 滑动窗口(链路,传输层)

注:
链路层的滑动窗口和传输层规则一致

通过确认和超时重传机制保证数据的可靠性。维护两个窗口值:

  • 发送窗口:还能发送多少个分组
  • 接收窗口:还能接收多少个分组

如果接收到一个对窗口 最左侧 的分组的确认,那么发送窗口向右滑动一位:

发送窗口为 0 表示所有分组均已发送,但是未被确认,此时不能再发送新分组。如果已经发送的分组迟迟没被确认,定时器超时只会会进行重传

停止-等待

在收到确认之前,不允许发送新分组,即 串行 的发送。

发送窗口为 1,接收窗口为 1

后退 N 步

允许一次发送很多分组,但是接收方 按顺序接收 数据。一旦丢包,要重新从 最早丢失 的分组开始,重传它和它之后的 N 个分组

发送窗口为 N,接收窗口为 1


接收窗口为 1 保证了按序收取分组,但是一旦失序,代价很大

选择重传

发送窗口为 N,接收窗口为 N,不按照顺序接收分组,如果收到失序分组,先缓存起来,直到组成有序的分组序列再提交给上层。并且发送端只需要选择性地重传那些没有被确认的分组,所以叫选择重传

同时采用 累计确认 机制,收到 ack N,表示所有序号小于等于 N 的帧都已经被确认

接收窗口为 N,发送窗口为 N


更加详细的例子:

窗口大小规约

公式如下:

发送窗口长度+接收窗口长度≤序号空间的分组数目发送窗口长度+接收窗口长度\le 序号空间的分组数目 发送窗口长度+接收窗口长度≤序号空间的分组数目

假设用 n 比特表示序号空间,那么可以表示 2n2^n2n 个分组,于是有:

发送窗口长度+接收窗口长度≤2n发送窗口长度+接收窗口长度\le 2^n 发送窗口长度+接收窗口长度≤2n

否则无法分辨重传的分组和新的分组

例:

发送窗口 = 3,接收窗口 = 2,序号范围 0 ~ 3,一共 4 个分组

  1. 发送方传输 0,1,2 分组,但是分组 2 的 ack 丢失了,于是窗口从 [0, 1, 2] 滑动到 [2, 3, 0],注意序号的循环使用

  2. 接收端成功接收到 0,1,2 分组,接收窗口滑动到 [3, 0]

  3. 此时发送方发送 0 号分组(新分组),接收方无法判断这个 0 是因为 ack 0 丢失导致的 重传 分组(因为接收方不保证 ack 一定传到到)还是因为发送窗口滑动而发送的 新的 分组

如图:

10. TCP 拥塞控制(传输层)

流量控制是接收方对于发送方的,而拥塞控制是发送方自发地针对整个网络,调整自己的发送速率。

规定拥塞窗口为当前周期(传输回合,或者说 RTT)内,能发送的字节数目,如果和流量控制一起,那么:

发送窗口=min⁡(接收窗口,拥塞窗口)发送窗口=\min(接收窗口,拥塞窗口) 发送窗口=min(接收窗口,拥塞窗口)

首先确定基本发送数据的长度 MSS,初始拥塞窗口为 1 MSS,每次收到 ack,拥塞窗口翻倍,如果拥塞窗口超过阈值大小,那么此时应该线性增加,每次增加 1 MSS,而不是翻倍,这个过程叫做慢启动:

如果此时出现三个冗余 ACK 说明网络轻度拥塞, 此时拥塞窗口变为原拥塞窗口的一半,阈值也变为原拥塞窗口的一半 。此时直接开始线性增长:

如果超时,说明网络严重拥塞,此时应该将 拥塞窗口调整为 1,重新开始慢启动,同时阈值变为原拥塞窗口的一半 ,如图:

总结:

  1. 不管发生严重还是轻度的丢包事件,阈值都变为原拥塞窗口的一半
  2. 收到三个冗余 ack 轻度丢包,此时拥塞窗口减半
  3. 超时,说明严重丢包,此时拥塞窗口变为 1 重新开始慢启动


例题1:


答案:7


例题2(流量+拥塞):

答案:5 个 RTT,25 ms,注意 发送窗口=min⁡(接收窗口,拥塞窗口)发送窗口=\min(接收窗口,拥塞窗口)发送窗口=min(接收窗口,拥塞窗口)


画表,把每个 RTT 前后拥塞窗口的变换写出来就不容易错

11. TCP 时序,连接管理(传输层)

数据交付时序

在数据传输时,关注两个字段:

  1. seq:本报文端所发送的第一个字节的序号
  2. ack:期望收到对方下一个报文段的第一个数据字节的序号

当前报文的 seq 号,永远要等于上一个报文的 ack 号

牢记这一点就能做题。

注:
在握手和挥手的时候,上一个报文没有给出 ack,那么此时 seq 就任取


解答:

三次握手

TCP 建立连接时,需要三次握手机制:

  1. 首先客户端发送 SYN 标志位为 1 的请求连接报文,此时客户端发送的 seq 为 x
  2. 服务端发送 SYN,ACK 标志位为 1 的应答,此时服务端发送的 seq 为 y,ack 为 x+1
  3. 客户端发送 ACK 标志位为 1 的应答,此时客户端发送的 seq 为 x+1,ack 为 y+1,同时这个 ACK 要捎带数据

注:
对于 2 中
注意客户端的 SYN 报文不带数据,但是消耗一个序号
于是服务端返回 ack 就期待的下一个序号是 x+1

再注:
对于 3 中
首先回应上一个报文的期待(ack=x+1),本次的 seq 就为 x+1
如果 ACK 带数据那么就消耗一个序号,所以 seq 是 y+1,一般都是捎带确认,第三次就直接来数据了

捎带确认机制例题:


答:4000

因为是捎带确认,第一个数据报的 seq 就是 1001,而最后一个 FIN 的 seq 是 5001,说明在 FIN 之前,对最后一个数据的应答报文中,ack 是 5001,故说明 1001 ~ 5000 的数据都已经收齐,即 4000 字节的数据:

四次挥手

TCP 是全双工通信,所以要分两步断开连接:

  1. 断开【客户端 --> 服务端】的通信
  2. 断开【服务端 --> 客户端】的通信

所以需要四次挥手:

  1. 客户端发送 FIN 报文,seq=u
  2. 服务端回复 ACK 报文,seq=v,ack=u+1,表示断开【客户端 --> 服务端】
  3. 客户端不能再有任何包发送给服务端了,但服务端可能还有数据发送,发送结束的时候,服务端发送 FIN ACK 报文,seq=w,ack=u+1
  4. 客户端收到 FIN ACK 报文,回复 ACK 报文,seq=u+1,ack=w+1,表示断开【服务端 --> 客户端】,然后等待 2MSL 最长报文寿命,然后关闭

12. DNS 域名解析(应用层)

给 IP 地址一个好记的标志。无需记忆 IP 地址,只需要根据域名查询对应主机的 IP 地址,DNS 服务提供了这种功能

查询分两种,迭代和递归:


13. 持续 HTTP 与并行 TCP

非持续 HTTP

在使用 http 请求 web 文件对象的时候,首先要建立 TCP 连接,因为 HTTP 基于 TCP 连接:

第一个 RTT 是建立 TCP 连接必须的,而第二个 RTT 是 http 请求和 http 应答的花费

注:
这里第三次握手直接附带了 http 请求
所以只用一个 RTT 就够了

此外, TCP 的连接用完就丢了。所以每传输一个新文件,都要重新建立 TCP 连接,开销大。非持续 HTTP 对于 n 个文件就需要的总时间为:

n∗(2∗RTT+T传输)n * (2 * RTT + T_{传输}) n∗(2∗RTT+T传输​)

持续 HTTP

建立 TCP 连接之后保持,后续的文件传送都基于第一次建立的 TCP 连接:

传送 n 个文件需要的时间是:

RTT+n∗(RTT+T传输)RTT + n * (RTT+T_{传输}) RTT+n∗(RTT+T传输​)

例题(持续 HTTP)

在如下条件下,请计算分别采用非持续连接方式和持续连接方式请求一个Web页面所需要的时间。题目条件如下:

  1. 测试的客户端与服务器之间往返时延RTT平均值为150 ms,一个Gif对象的平均发送时延为35 ms
  2. 一个Web页面中包含10个Gif图片,Web页面的基本HTML文件、HTTP请求报文、TCP握手报文大小忽略不计
  3. TCP三次握手的第三步中捎带一个HTTP请求
  4. 使用非流水线方式

注:
这里必须先拿到网页的 HTML 文件,才能请求后续的 gif 图片

使用非持续 HTTP 连接:

t=RTT+RTT+10∗(2∗RTT+T传输)=300+3350=3650t=RTT+RTT+10*(2*RTT+T_{传输})=300+3350=3650 t=RTT+RTT+10∗(2∗RTT+T传输​)=300+3350=3650

第一个 RTT 是建立 TCP 连接,第二个 RTT 是请求 HTML 文档,之后的 10 个 gif 传输,对于每个 gif 都要先建立 TCP 连接再请求


使用持续 HTTP 连接:

t=RTT+RTT+10∗(RTT+T传输)=300+1850=2150t = RTT+RTT+10*(RTT+T_{传输}) = 300 + 1850 = 2150 t=RTT+RTT+10∗(RTT+T传输​)=300+1850=2150

并行 TCP

如果建立多个 TCP 连接,同时传输文件,效率会更加高。和持续 、 非持续 HTTP 排列组合,一共有 4 种情况,做题要小心

以持续 HTTP 和 5 个并行的 TCP 连接为例,传输 8 个文件:


假设 k 个 TCP 连接并行所以需要的轮次数目 r 为:

r=n/k+1=8/5+1=2r = n / k +1=8/5+1=2 r=n/k+1=8/5+1=2

所以总时间:

t=RTT+r∗(RTT+T传输)t=RTT+r*(RTT+T_{传输}) t=RTT+r∗(RTT+T传输​)

例题(并行 TCP)


注意因为先要请求到 HTML 页面文件,才能请求别的文件,所以比起上文的公式,这里要一个额外的 RTT

计算机网络重要知识点总结(期末复习笔记)相关推荐

  1. 电子科技大学操作系统期末复习笔记(二):进程与并发控制

    目录 前言 进程管理 进程基本知识 程序的顺序执行 前趋图 程序的并发执行 并发程序 进程的定义和特征 进程的特征和状态 操作系统内核 定义 功能 原语 原子操作的实现 操作系统控制结构 进程控制块P ...

  2. 【期末复习笔记】知识产权法——著作权、专利法、商标权

    [期末复习笔记]知识产权法 著作权 著作权法不予以保护的客体 著作权的归属 著作权的内容 著作人身权 著作财产权 著作权的取得方式:自动取得 著作权的保护期限: 邻接权 表演者权 表演者义务 表演者权 ...

  3. 【Python数据分析与可视化】期末复习笔记整理(不挂科)

    [Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...

  4. RFID原理及应用期末复习笔记 | 1.RFID概述【完结✿✿ヽ(°▽°)ノ✿】

    系列索引:RFID原理及应用期末复习笔记 | 快速索引 RFID是博主大三下的一门专业课,因为疫情缩短学期进程提前结课,所以期末考试也来的更早,这里就简单记录一下自己复习时的一些笔记,也给后来的学弟学 ...

  5. 南邮部分期末复习笔记汇总@tou

    README 知识库链接:tou/njupt-cst-notes 这个知识库存放了部分我在 NJUPT-CST 专业就读期间的期末复习笔记,这一部分公开的语雀笔记是我众多笔记中总结的还算 OK 的,仅 ...

  6. 奇异矩阵能lu分解条件_矩阵分析-期末复习笔记(上)

    (复习笔记,可能有点乱.夹杂着乱七八糟的英文,因为要用英文考试.) (如果有误请一定要和我说!祝我final考个好成绩-) 目录: 特征值,特征向量,相似 (Eigenvalues, eigenvec ...

  7. 数理统计期末复习笔记(一)

    数理统计期末复习笔记 主要内容: 数据压缩,点估计,假设检验,区间检验 Reference: Statistical Inference, Casella&Berger Chapter 6 D ...

  8. 【期末复习】北京邮电大学《数字内容安全》课程期末复习笔记(5. 社交媒体安全)

    [相关链接] [期末复习]北京邮电大学<数字内容安全>课程期末复习笔记(1. 绪论) [期末复习]北京邮电大学<数字内容安全>课程期末复习笔记(2. 信息隐藏与数字水印) [期 ...

  9. 抽样调查理论与方法期末复习笔记

    第3章 简单随机抽样 均方误差=方差+偏倚的平方 ​ 3.5某林场共有1000公顷林地,随机布设了50块面积为0.06公顷的方形样地,测得这50块样本地的平均木材蓄积量为9m3,标准差为1.63m3. ...

  10. 2021/06/29计算机视觉期末复习笔记整理

    计算机视觉期末复习笔记整理 引言 我的复习参考 期末考试考题回忆 PPT对应中文笔记整理 参考的几篇博客的笔记 引言 刚结束可能是我学生时代最后一场考试了,orz热乎着,记录一下. 这门课是学校新开的 ...

最新文章

  1. sql 纵向求和_sql列统计求和
  2. 摩拜联合微信全国免押金骑行 这样的CP组合可以多来一点
  3. C#操作Excel数据增删改查(转)
  4. python中easygui有几种_一、Python 模块EasyGui详细介绍
  5. Linux Polkit 中的pkexec 组件存在的本地权限提升漏洞(CVE-2021-4034)修复方法及centos6和centos7的安装包
  6. 随想录(canvas学习)
  7. l开头的英文车标是什么车_行业冷知识 | 为什么汽车品牌都喜欢用动物做车标?...
  8. myeclipse6.5集成freemaker
  9. 自学python考哪些证书-学Python能挣多少钱?哪些人适合学Python?
  10. js 中 的时间类和 setTimeout 和setInterval
  11. BBS论坛管理系统软件建模实验
  12. 2021苹果最新供应链名单公布
  13. (转)原子时代来临-Intel革命性Atom透析
  14. 听听那冷雨 -- 余光中
  15. NNDL 实验五 前馈神经网络(2)自动梯度计算 优化问题
  16. 如何成为一个优秀的数据分析师?
  17. 世界上最顶尖的技术都在哪些国家?
  18. 七年级计算机教案模板范文,七年级信息技术论文大纲模板 七年级信息技术论文提纲怎样写...
  19. Python : 7-6 三天打鱼两天晒网 (15 分)
  20. ArcGIS 字段值替换

热门文章

  1. Python+uiautomator2手机UI自动化测试实战
  2. 用Java实现简单画板
  3. 手把手教你自制U盘重装win10系统专业版(纯净版)+激活【图文教程】
  4. 21、关于破解点触的验证码
  5. Cause: java.sql.SQLExceptioValue ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp
  6. Houdini图文笔记:VEX知识点小结(一)
  7. AI+智能服务机器人应用基础【学习报告】
  8. Sketchup 程序自动化(二)Ruby 基础、单位转换
  9. 醉眼看花花也醉,冷眼观世世亦冷
  10. MyBatis SQL里的大于号、小于号