计算机网络期末大题复习

1.冗余码计算

###1.循环冗余检验的原理

在这里插入图片描述

例题:

在这里插入图片描述

解:

根据多项式的最高次幂得出冗余码的长度n=6。

然后对生成多项式 G ( x ) = x 6 + x 5 + x + 1 G(x)=x^6+x^5+x+1 G(x)=x6+x5+x+1补全得到除数

G ( x ) = 1 ∗ x 6 + 1 ∗ x 5 + 0 ∗ x 4 + 0 ∗ x 3 + 0 ∗ x 2 + 1 ∗ x 1 + x 0 G(x)=1*x^6+1*x^5+0*x^4+0*x^3+0*x^2+1*x^1+x^0 G(x)=1x6+1x5+0x4+0x3+0x2+1x1+x0

那么除数就是每一项前面的系数:除数=1100011

被除数为信息位+n个0,即信息位=1101110010001000000
在这里插入图片描述

余数即为冗余码,若长度不够,前面补0凑。

2.检验的原理

在这里插入图片描述

2.路由表更新

RIP协议距离向量算法-如何更新路由表

题目:假定网络中路由器B中的路由表有以下项目:

B表:

目的网络距离下一跳路由
N17A
N22C
N68F
N84E
N94F

现在B收到C发过来的路由信息:

c表:

目的网络距离
N24
N38
N64
N83
N95

解:求出路由表B更新后的路由表:

1.先将C中的距离都加1

目的网络距离
N24+1=5
N38+1=9
N64+1=5
N83+1=4
N95+1=6

更新B后的表

目的网络距离下一跳路由解释
N17AC中没有N1的信息,那么则 不需要更新
N25C下一跳相同,无条件更新
N39CB表中没有N3的信息,而C表中有N3,则需要将N3插入B表
N65CB经过C到N6的距离为5,小于B到N6的距离8,需要更新,并将下一跳改为C
N84EB到N8的距离为4,B经过C到N8的距离也为4则不更新
N94FB到N9的距离为4,小于经过C到N9的距离6,不更新

3.子网划分

1.ip地址分类

A类:1.0.0.0-126.0.0.0 网络号8位,主机号24
B类:128.0.0.0-191.255.0。0 网络号16位,主机号16位
C类:192.0.0.0-223.255.255.0 网络号24位,主机号8位

2.子网划分方法

子网需要向主机号借位来增加其网络号的长度来增加子网的数目

例题1(主机号数目相同):

在这里插入图片描述

解:

首先求出需要借多少位(n)的主机号: 2 n − 2 ≥ 6 , 那 么 n = 3 2^n-2\geq 6 ,那么n=3 2n26,n=3

则子网掩码为:255.255.255.11100000=255.255.255.224

每个子网的网络地址为:193.160.80.00100000=193.160.80.32

​ 该子网的广播地址:主机号全1,193.160.80.00111111=193.160.80.63

​ 主机地址范围:193.160.80.33—62,主机号个数: 2 5 − 2 = 30 2^5-2=30 252=30

​ 193.160.80.01000000=193.160.80.64

​ 193.160.80.10000000=193.160.80.128

​ 193.160.80.10100000=193.160.80.160

​ 193.160.80.11000000=193.160.80.192

​ 193.160.80.11100000=193.160.80.224

例题2(主机号数目不同):

在这里插入图片描述

解:

根据所需主机数目确定主机号所需要的的位数

子网N1: 2 n − 2 > = 120 2^n-2>=120 2n2>=120,那么n=7,8-7=1,则网络号可借到1位。网络号位数一共为24+1=25

第一个子网首地址为:14…24.74.00000000/25.主机号范围为:14.24.74.0000001-14.24.74.01111110

子网N2: 2 n − 2 > 60 2^n-2>60 2n2>60,那么n=6,8-6=2,则网络号可借到2位。网络号位数一共为24+2=26.

第二个子网首地址为:14.24.74.10000000/26。

子网N3: 2 n − 2 ≥ 10 2^n-2\geq10 2n210 那么n=4.网络号一个为24+4=28

第三个子网首地址为;14.24.74.11000000/28

4.拥塞控制算法

原理部分:

在这里插入图片描述

算法分为4个部分:

1.慢开始:在慢开始阶段,拥塞窗口每个轮次翻倍(x2),直到达到了慢开始门限(阈值),如果超过阈值,则窗口只能设置为阈值

2.拥塞避免:拥塞避免阶段,拥塞窗口每个轮次·+1,直到超时。这时将拥塞窗口置为1,慢开始门限设为超时的一半

3.快重传:当接收到了3-ACK(收到了3个重复的报文,有数据包丢失),执行快重传算法,下一个轮次:将拥塞窗口设置为当前窗口的一半,慢开始门限也设置为该值。即拥塞窗口大小=慢开始门限,那么就是执行拥塞避免

4.快恢复

需要知道三个概念:轮次n,拥塞窗口cwnd,慢开始门限ssthresh

例题

轮次拥塞窗口cwnd原因
12
24
38
410达到了慢开始阈值
511启动拥塞避免算法,每次加1
612
713
814
915
1016发生超时,置cwnd为1,阈值设为超时窗口的一半:8
111
122
134
148达到阈值,启动拥塞避免算法
159

5.TCP三次握手建立和四次挥手释放连接

1.序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。
2.确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。
3.确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效

4.同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。

5.终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接

    PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号

5.1三次握手

在这里插入图片描述

1)首先客户端向服务器端发送一段TCP报文,其中:

标记位为SYN,表示“请求建立新连接”;序号为Seq=X(X一般为1);随后客户端进入SYN-SENT阶段。

(2)服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段。并返回一段TCP报文,其中:

标志位为SYN和ACK,表示“确认客户端的报文Seq序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接”(即告诉客户端,服务器收到了你的数据);序号为Seq=y;确认号为ack=x+1,表示收到客户端的序号Seq并将其值加1作为自己确认号ack的值;随后服务器端进入SYN-RCVD阶段。

(3)客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP报文。其中:

标志位为ACK,表示“确认收到服务器端同意连接的信号”(即告诉服务器,我知道你收到我发的数据了);序号为Seq=x+1,表示收到服务器端的确认号ack,并将其值作为自己的序号值;确认号为ack=y+1,表示收到服务器端序号Seq,并将其值加1作为自己的确认号ack的值;随后客户端进入ESTABLISHED阶段。服务器收到来自客户端的“确认收到服务器数据”的TCP报文之后,明确了从服务器到客户端的数据传输是正常的。结束SYN-SENT阶段,进入ESTABLISHED阶段。

5.2四次挥手

连接的释放必须是一方主动释放,另一方被动释放

在这里插入图片描述

(1)首先是客户端想释放连接,向服务器端发送TCP报文:

​ 标记位为FIN=1,表示“请求释放连接”,seq=u。

随后客户端进入FIN-WAIT-1阶段,即半关闭阶段。并且停止向服务器端发送数据(这里不发送的是正常连接时传输的数据(非确认报文),而不是一切数据,所以客户端仍然能发送ACK确认报文),但是客户端仍然能接受从服务器端传输过来的数据。

(2)服务器端接受到了客户端的释放连接请求,随后服务器端结束ESTABLLISHED(建立)阶段,进入CLOSE-WAIT阶段(半关闭)并返回一段TCP报文:

ACK=1,表示接受到了客户端发送的连接请求,序号为seq=v;ack=u+1,表示是在收到客户端报文的基础上,将序号seq的值+1作为本报文段确认号ack的值。

随后服务器端开始准备释放服务器端到客户端的连接。

(3)客户端收到了服务器端发出的报文后,确认了服务器收到了客户端的发出的释放连接请求。随后客户端结束FIN-WAIT-1阶段,进入FIN-WAIT-2阶段。等待服务器端发送连接释放报文。

(4)服务器端将最后的数据发送完毕后,就向客户端发送连接释放报文:

​ FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w.

​ 发送完连接释放的报文后,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

​ (5)客户端收到服务器的连接释放请求报文后,必须要发出确认报文:

​ ACK=1,ack=w+1,seq=u+1。

​ 此时,客户端就进入TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2**MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。

​ 而服务器端接受到客户端发出的确认ACK后,立即进入CLOSED转态。

问题:为什么连接的时候是三次握手,而关闭的时候是四次挥手?

答:因为当服务器端收到客户端的连接建立请求SYN=1后,服务器daunt可以直接发送SYN+ACK报文进行应答,其中SYN是用来同步的,ACK是用来应答确认的。

而在关闭连接时,当服务器端收到FIN=1(连接释放请求)后,不会立即关闭SOCKET,只能先回复一个ACK报文,告诉客户端,你的请求我收到了。但是得等我服务器端的所有 报文都发送完了,我才能发送FIN报文,因此不能一起发送,需要四次握手。

例题:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.rdt

6.1 rdt1.0

rdt1.0是默认在可靠信道上的可靠数据传输

  1. 底层信道完全可靠:不会发生bit错误,不会丢弃分组

  2. 发送方和接受方的FSM独立

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ce5TmM0G-1610332720078)(计算机网络复习.assets/image-20210110105301513.png)]

6.2 rdt2.0

默认信道上会产生bit错误,不产生丢失分组的情况。

  1. 底层信道可能会翻转分组中的bit

    ​ 解决方法:利用效验和检测bit错误

  2. 如何从错误中恢复?

    解决方法:

    • 确认机制(ACK):接受方发送ACK告知发送方该分组正确接收
    • NAK:接收方告诉发送方,该分组有错误
    • 发送方收到NAK后,重发分组。
  3. 基于这种重传机制的rdt协议称为ARQ(Automatic Repeat ReQuest)协议

总结:rdt2.0引入了新的机制:
1.差错检验
2.接受方反馈控制消息ACK/NAK
3.重传

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QDyL2b4H-1610332720079)(计算机网络复习.assets/image-20210110110123342.png)]

###6.3 rdt2.1

rdt2.0有什么缺陷?:如返回的ACK/NAK分组受损,发送方不理解接受方是否收到。

解决方法:当发送方收到收损的ACK和NAK分组时,重发当前的分组

在解决这个问题的时候,引入了新的问题:接受方接受到了冗余的分组,无法判断是新的分组还是重传的分组。于是需要给分组添加序号字段。

解决方法:

  1. 发送方每发一个分组序号+1
  2. 接受方按序号接收,如果本次接收的分组和上次的一样,则丢弃该分组。

注意:ACK和NAK不需要明确的序号,因为假设信道不丢失分组的。发送方知道所接受的ACK或NAK是对应最近发送分组的响应。

6.4 rdt2.2

进一步改进:

接收方接收到受损分组时,不发送NAK,改为发送一个对前一个正确接收分组的ACK.

发送方接收到对同一个分组的两个ACK,可以判断出接收方没有正确收到被两次确认的那一个分组。

6.5 rdt3.0

默认:会出现bit错误,会丢分组,

因为会丢分组,所以需要引入超时重发机制。

即:发送方发送一个数据 后,如果一定时间内未收到ACK,则重传分组。

实现:每发送一个分组,就设置开启一个递增(减)计数定时器,超时了重发分组。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9dLRPgE0-1610332720080)(计算机网络复习.assets/image-20210110130350728.png)]

7.CSMA\CD冲突检测原理

  1. 当一个站点想要发送数据,先侦听信道是否空闲
  2. 如果信道忙,则等待,直到信道空闲,如果空闲则发送数据
  3. 在发送数据的同时,站点继续侦听网络,确认没有其他站点在同时传输数据才继续传输数据,因为有可能两个或多个站点都同时检测到信道空闲然后几乎同时开始传输数据,如果两个或多个数据同时发送数据,就会产生冲突,若无冲突就继续发送。
  4. 若有冲突,则立即停止发送数据,但是需要发送一个加强冲突的阻塞信号,使得网络上所有的工作站都知道网络上发生了冲突,然后等待一个随机时间,在转到1.

在这里插入图片描述

##8.最短路径(Dijkstra算法)

在这里插入图片描述

描述:

dist[]数组代表 源点到其余各点的距离
path[]数组记录当前点的上一个顶点
set[]数组表示哪些点已经被算出来了,即已经处在最短路径中了

9.计算等问题

速率:指连接在计算机网络上的主机在数字信道上传送数据的速度.在计算机网络中,通常把最高速率称为带宽。

也称为数据率或比特率。单位b/s

Kb/s(k=1000),Mb/s(m= 1 0 6 10^6 106),Gb/s( 1 0 9 10^9 109),

文件数据大小数据量转换。1KB=8bitx1024=8192bit

发送时延=数据长度/速率

传播时延=信道的长度/电磁波在信道中的传播速率。

处理时延:

排队时延:

9.2香农定理

信道的极限数据传输速率(也称为信道容量)C= w l o g 2 ( 1 + S / N ) wlog_2(1+S/N) wlog2(1+S/N) 单位:b/s

其中w为信道的带宽,S为信道所传输的平均功率。N为信道内部的高斯噪声功率

信噪比(dB)= 10 l o g 10 ( S / N 10log_{10}(S/N 10log10(S/N)

##10.滑动窗口协议
在这里插入图片描述

10.1停止等待协议

发送窗口为1

10.2回退N滑动窗口协议

发送窗口 1 ≤ W T ≤ 2 n − 1 1\leq W_T\leq 2^n-1 1WT2n1,其中n是采用n位bit对帧进行编号

10.3选择重传滑动窗口协议

发送窗口 W T ≤ 2 n W_T\leq2^n WT2n/2

题目类型求信道利用率:

信道利用率最大= 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 + 单 程 传 播 时 间 \frac{连续发送的帧数t*每一帧的传输时间}{连续发送的帧数t*每一帧的传输时间+单程传播时间} t+t

信道利用率= 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 + 单 程 传 播 时 间 ∗ 2 \frac{连续发送的帧数t*每一帧的传输时间}{连续发送的帧数t*每一帧的传输时间+单程传播时间*2} t+2t

其中 t ≥ 2 n t\geq 2^n t2n

信道利用率= 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 + 单 程 传 播 时 间 ∗ 2 \frac{连续发送的帧数t*每一帧的传输时间}{连续发送的帧数t*每一帧的传输时间+单程传播时间*2} t+2t

其中 t ≥ 2 n t\geq 2^n t2n

11.TCP和UDP的区别

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
  • 20
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值