###1.循环冗余检验的原理
例题:
解:
根据多项式的最高次幂得出冗余码的长度n=6。
然后对生成多项式G(x)=x 6 +x 5 +x+1G(x)=x^6+x^5+x+1G(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^0G(x)=1∗x6+1∗x5+0∗x4+0∗x3+0∗x2+1∗x1+x0
那么除数就是每一项前面的系数:除数=1100011
被除数为信息位+n个0,即信息位=1101110010001000000
余数即为冗余码,若长度不够,前面补0凑。
2.检验的原理RIP协议距离向量算法-如何更新路由表
题目:假定网络中路由器B中的路由表有以下项目:
B表:
目的网络距离下一跳路由N17AN22CN68FN84EN94F现在B收到C发过来的路由信息:
c表:
目的网络距离N24N38N64N83N95解:求出路由表B更新后的路由表:
1.先将C中的距离都加1
目的网络距离N24+1=5N38+1=9N64+1=5N83+1=4N95+1=6更新B后的表
目的网络距离下一跳路由解释N17AC中没有N1的信息,那么则 不需要更新N25C下一跳相同,无条件更新N39CB表中没有N3的信息,而C表中有N3,则需要将N3插入B表N65CB经过C到N6的距离为5,小于B到N6的距离8,需要更新,并将下一跳改为CN84EB到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位,主机号24B类: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=32^n-2\geq 6 ,那么n=32n−2≥6,那么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=302^5-2=3025−2=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>=1202^n-2>=1202n−2>=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>602^n-2>602n−2>60,那么n=6,8-6=2,则网络号可借到2位。网络号位数一共为24+2=26.
第二个子网首地址为:14.24.74.10000000/26。
子网N3:2 n −2≥102^n-2\geq102n−2≥10 那么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原因122438410达到了慢开始阈值511启动拥塞避免算法,每次加16127138149151016发生超时,置cwnd为1,阈值设为超时窗口的一半:8111122134148达到阈值,启动拥塞避免算法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报文,因此不能一起发送,需要四次握手。
例题:
rdt1.0是默认在可靠信道上的可靠数据传输
底层信道完全可靠:不会发生bit错误,不会丢弃分组
发送方和接受方的FSM独立
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ce5TmM0G-1610332720078)(计算机网络复习.assets/image-20210110105301513.png)]
6.2 rdt2.0默认信道上会产生bit错误,不产生丢失分组的情况。
底层信道可能会翻转分组中的bit
解决方法:利用效验和检测bit错误
如何从错误中恢复?
解决方法:
确认机制(ACK):接受方发送ACK告知发送方该分组正确接收NAK:接收方告诉发送方,该分组有错误发送方收到NAK后,重发分组。基于这种重传机制的rdt协议称为ARQ(Automatic Repeat ReQuest)协议
总结:rdt2.0引入了新的机制:1.差错检验2.接受方反馈控制消息ACK/NAK3.重传[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QDyL2b4H-1610332720079)(计算机网络复习.assets/image-20210110110123342.png)]
###6.3 rdt2.1
rdt2.0有什么缺陷?:如返回的ACK/NAK分组受损,发送方不理解接受方是否收到。
解决方法:当发送方收到收损的ACK和NAK分组时,重发当前的分组
在解决这个问题的时候,引入了新的问题:接受方接受到了冗余的分组,无法判断是新的分组还是重传的分组。于是需要给分组添加序号字段。
解决方法:
发送方每发一个分组序号+1接受方按序号接收,如果本次接收的分组和上次的一样,则丢弃该分组。注意: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.##8.最短路径(Dijkstra算法)
描述:
dist[]数组代表 源点到其余各点的距离path[]数组记录当前点的上一个顶点set[]数组表示哪些点已经被算出来了,即已经处在最短路径中了 9.计算等问题速率:指连接在计算机网络上的主机在数字信道上传送数据的速度.在计算机网络中,通常把最高速率称为带宽。
也称为数据率或比特率。单位b/s
Kb/s(k=1000),Mb/s(m=10 6 10^6106),Gb/s(10 9 10^9109),
文件数据大小数据量转换。1KB=8bitx1024=8192bit
发送时延=数据长度/速率
传播时延=信道的长度/电磁波在信道中的传播速率。
处理时延:
排队时延:
9.2香农定理信道的极限数据传输速率(也称为信道容量)C=wlog 2 (1+S/N)wlog_2(1+S/N)wlog2(1+S/N) 单位:b/s
其中w为信道的带宽,S为信道所传输的平均功率。N为信道内部的高斯噪声功率
信噪比(dB)=10log 10 (S/N10log_{10}(S/N10log10(S/N)
##10.滑动窗口协议
发送窗口为1
10.2回退N滑动窗口协议发送窗口1≤W T ≤2 n −11\leq W_T\leq 2^n-11≤WT≤2n−1,其中n是采用n位bit对帧进行编号
10.3选择重传滑动窗口协议发送窗口W T ≤2 n W_T\leq2^nWT≤2n/2
题目类型求信道利用率:
信道利用率最大= 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 + 单 程 传 播 时 间\frac{连续发送的帧数t*每一帧的传输时间}{连续发送的帧数t*每一帧的传输时间+单程传播时间}连续发送的帧数t∗每一帧的传输时间+单程传播时间连续发送的帧数t∗每一帧的传输时间
信道利用率= 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 + 单 程 传 播 时 间 ∗ 2\frac{连续发送的帧数t*每一帧的传输时间}{连续发送的帧数t*每一帧的传输时间+单程传播时间*2}连续发送的帧数t∗每一帧的传输时间+单程传播时间∗2连续发送的帧数t∗每一帧的传输时间
其中t≥2 n t\geq 2^nt≥2n
信道利用率= 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 连 续 发 送 的 帧 数 t ∗ 每 一 帧 的 传 输 时 间 + 单 程 传 播 时 间 ∗ 2\frac{连续发送的帧数t*每一帧的传输时间}{连续发送的帧数t*每一帧的传输时间+单程传播时间*2}连续发送的帧数t∗每一帧的传输时间+单程传播时间∗2连续发送的帧数t∗每一帧的传输时间
其中t≥2 n t\geq 2^nt≥2n
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则是不可靠信道