计算机网络期末复习题

计算机网络期末复习题

  1. 因特网诞生时间

1983年TCP/IP协议成为ARPANET上的标准协议,使得所有使用TCP/IP协议的计算机都能利用互连网相互通信,所以人们把1983年作为互联网的诞生时间

  1. 单工通信、半双工、全双工的区别
  • 单工

    只能一方发送,一方接收,也就是单向通信

  • 半双工

    双方都能发送与接收消息,但是同一时间只能一方发送消息

  • 全双工

    双方都能同时发送消息

  1. 网络中每一层的PDU(协议数据单元)的名称
  • 物理层—比特流
  • 数据链路层—帧(数据链路层使用物理地址、硬件地址,也就是MAC地址
  • 网络层—分组(网络层使用IP地址
  • 运输层—运输协议数据单元(TCP—报文段、UDP—报文或用户数据报)
  • 应用层—数据、报文
  1. CRC生成多项式有n位,则冗余码为 n − 1 n-1 n1
  2. 网络核心部分和网络边缘部分分别有哪些设备
  • 网络核心部分

    路由器、交换机

  • 网络边缘部分

    主机、服务器

  1. 计算机网络的五层协议模型包含哪些层?计算机网络中常用设备处于五层协议结构模型哪一层?每层有什么功能?哪一层负责可靠的数据传输

1️⃣物理层、数据链路层、网络层、运输层、应用层

2️⃣

  1. 物理层设备

    中继器1

    集线器2

  2. 数据链路层设备

    交换机

    网桥

    网卡

    注意:交换机和网桥不一样,详情请看

  3. 网络层设备

    路由器

  4. 运输层设备

    网关

3️⃣

  1. 物理层

    透明传输比特流

  2. 数据链路层

    将网络层的IP数据包(分组)封装成帧、差错控制、流量控制、传输管理

  3. 网络层

    为分组交换网上的不同主机提供通信服务

    对分组进行路由选择、实现流量控制、拥塞控制、差错控制和网际互联

  4. 传输层

    主机中两个进程之间的通信,为端到端提供可靠的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务

  5. 应用层

    通过应用进程间的交互来完成特定网络应用

4️⃣

​ 数据链路层负责点到点的数据的可靠传输

​ 传输层使用面向连接连接的协议来保证数据的可靠传输

  1. 路由器、交换器、转发器(集线器)分别工作在哪一层?
  • 路由器工作在网络层
  • 交换机工作在数据链路层
  • 集线器工作在物理层
  1. RIP协议和OSPF协议各有什么特点、区别?距离向量/链路状态

特点:

​ RIP协议:

  • 仅和相邻路由器交换信息
  • 路由器交换的信息是当前路由器所知道的全部信息,即自己的整个路由表
  • 按照固定的时间间隔交换路由信息

OSPF协议:

  • 会和整个网络中所有的路由器交换信息
  • 路由器交换的信息是交换与相邻所有路由器的链路状态(与哪些路由器相邻,以及该链路的代价[如:费用、距离、时延、带宽])
  • 只有链路状态发生变化时才会发送信息

区别:

  1. 两者适用范围不同。

    RIP适用于中小型网络,比较简单。

    OSPF适用于较大网络。它将自治系统分为若干个区域,区域内外使用不同的处理方法,减少网络数据量大传输。

  2. 运行有区别

    RIP运行时,首先向外发送请求报文,其他运行RIP的路由器收到请求后,马上把自己的路由器发送过去,一段时间内没有收到请求的话,会将这个相邻的路由从路由表中去除(也就是认定这个路由故障),并且广播更新自己的路由表

    形象点说,就是一群人互相交流来获取信息(别人的路由表),然后拿着这个得来的信息跟我自己已经有的信息(自己的路由表)对比,然后把我的信息更新到最优,更新完以后,我还要告诉别人我更新以后的信息【说白了,不就是信息共享,然后优化信息再共享,然后使得整个圈子里面的信息都最优嘛】

    OSPF要求每个路由器周期性地发送链路状态信息,使得所有区域内的路由器都能形成一个链路状态数据库,然后每个路由器都以自己为出发点来计算最短路径(Dijkstra算法)

    这个算法就是说,一片区域内的人,两两人之间互相交换信息,然后记下整个区域内全部的信息,这样就知道了整个区域网络的拓扑结构(比如每两个路由器之间有多远啊之类的),拿着这个信息,我就可以自己知道如何到达某个网络了,相当于通过交换信息得到了一张地图,这样我们就可以沿着地图走最优路径了,而RIP算法每个路由器只知道走哪个路最近,而不知道下一步应该怎么走,将下一步的问题交给了下一个路由器


    距离向量:从这个路由到其他距离的最短路径的集合,相当于一个一维数组

    链路状态:是否和某个路由器相邻,以及到达这些链路所需要的“代价”,代价可以是距离、时延、带宽等

  3. 使用情况不同

    OSPF占用的实际带宽比RIP少,OSPF使用的CPU时间比RIP少,OSPF使用的内存比RIP大,RIP在网络中更新路由状态的时间比OSPF多

  1. 使用香农公式求信道的极限传输速率

既然说到了香农公式,不妨顺便说一下奈氏准则呗

奈氏准则

在信道中,码元3传输的速率存在上限,如果在信道种,信号的频率太高了,那么信号就会显得十分密集(在x轴上),让接收端无法识别码元之间的界限,这就是码间串扰。那么奈氏准则需要求的就是带宽受限的这样一个信道中的极限码元传输速率。

那么极限码元传输速率= 2 W 2W 2W(Baud)

W W W指的是信道带宽,单位Hz。码元传输速率是指码元的传输速率,也就是一秒传输的码元数量,不是真实的数据传输速率)

极限数据传输速率= 2 W l o g 2 V 2Wlog_2V 2Wlog2V(b/s)

V V V指的是码元的离散数量,也就是一个码元有多少种电平,因此 极 限 码 元 传 输 速 率 ∗ 每 个 码 元 能 表 示 的 比 特 数 极限码元传输速率*每个码元能表示的比特数 就能得出极限数据传输速率)

注意,奈氏准则考虑的是无干扰情况下的极限传输速率,所以码元的离散程度是没有上限的,因此在奈氏准则中的极限传输速率理论上是无限大的


香农定理

信 噪 比 = 10 l o g 10 ( S N ) d B 信噪比=10log_{10}(\frac{S}{N}) dB =10log10(NS)dB

其中 S S S是信号的平均功率,N是噪声的平均功率

上面奈氏准则中是计算无干扰的情况下信道极限传输速率的大小,但是实际上信道并不会没有干扰,当噪音越大时,一个码元在不失真的前提下的最大离散程度就越小,而香农定理就是将噪音考虑进去了,香农定理公式指出的在有噪声的情况下的信道极限信息传输速率C是
C = W l o g 2 ( 1 + S N ) ( b i t / s ) C=Wlog_2(1+\frac{S}{N})(bit/s) C=Wlog2(1+NS)(bit/s)
其中的 W W W就是信道的带宽,单位为Hz, S S S为信道内所传信号的平均功率, N N N为信道内部的高斯噪声功率

  1. 电路交换和分组交换有何不同?有何优缺点?

首先提一下,我觉得这几种交换方式应该是网络层的交换方式,但是我不知道为什么书上好像将它写到物理层去了

电路交换

​ 电路交换是面向连接的交换方式,在数据传输开始前需要开销一定的时间来建立连接,建立连接以后,建立好的连接路径在通信结束之前一直被占用,所有的数据都直接走建立好的连接路径进行传输。

优点
  1. 通信时延小。因为独占了信道嘛
  2. 有序传输。因为是独占唯一的信道,所以数据传输到达的顺序肯定一样的
  3. 没有冲突。因为独占了信道,所以通信双方拥有不同的信道,因此不会出现争用信道的情况
  4. 适用范围广?电路交换既可以传输数字信号,又能传输模拟信号
  5. 实时性强,一旦连接建立,那么通信双方可以随时通信
  6. 控制简单。电路交换的交换设备(如交换机)及控制均比较简单
缺点
  1. 建立连接时间比较长。
  2. 线路独占使得线路使用效率低。
  3. 灵活性差。在已经建立连接的通路中一旦任何一点出现问题,就必须重新拨号建立连接,这样对十分紧急和重要的通信十分不利
  4. 难以规格化。在电路交换时,数据是直接到达的,也就是说,它中间不存在数据的处理部分,因此也无法进行差错控制

报文交换

既然要说分组交换,不妨先说说报文交换吧。

报文交换的数据交换单位是报文,其中报文中携带有目的地址、源地址等信息。报文交换在交换结点(可以想象成路由器)采用存储转发的传输方式。

所谓存储转发,就是每个数据报文进入了交换结点以后,交换结点需要先完全把报文接收下来缓存,然后根据接收到的报文,查找自己的转发表,选择一个要转发的下一个结点,最后将报文转发给选定的结点。

这也就是为什么路由器是个网络层设备了,要存储再转发,那肯定要知道IP信息啊,那么IP本来就是网络层的东西

优点
  1. 无须建立连接,可以随时发送报文
  2. 动态分配线路,因此灵活性比较高
  3. 线路可靠性比较好,当一个结点出现故障时,可以在过程中由路由器重新选择另一个路径进行传输
  4. 线路利用率比较高。通信双方不会独占一条通信线路,所以可以保证有更多的时间再有效地传输数据。
  5. 提供多目标服务。一个报文可以同时发送给多个目的地址。
缺点
  1. 存在转发时延,时延较长
  2. 报文长度没有限制,需要网络结点的缓存空间足够大

分组交换

上面说了报文交换,其实分组交换和报文交换基本上差不多,也采用了分组存储转发的方式,但是它与报文交换不同的地方是它将一个报文的数据部分分割成了合适的小数据块,再将必要的控制信息(源地址、目的地址、编号信息【标明这是第几个分组】)加入,形成分组。

简而言之,分组交换就是将报文交换中的大报文分割成了小的分组,以更好地解决了大报文传输的问题。

优点
  1. 无需建立连接
  2. 线路利用率高
  3. 简化了存储管理。因为分组长度固定,因此网络节点中的缓冲区大小也就固定了。
  4. 加速传输。后一个分组的存储操作和前一个分组的转发操作可以并行进行,而且因为一个分组所需的缓冲区小,因此由于缓冲区不足而等待发送的概率及时间也必会少得多
  5. 减少了出错概率和重发数据量。因为分组短,所以即使一个分组出错了,但是它占整个数据的百分比会小很多,因此概率也减少了。也因此,出错以后要重发的数据量也少了很多
缺点
  1. 存在时延,其相对于电路交换还是存在存储转发时延。

  2. 需要传输额外的信息量,因为每个分组都需要包含源地址、目的地址与分组编号等信息

  3. 传输分组时,如果使用数据包服务,可能会存在失序、丢失或重复分组的问题,要对分组按照编号进行排序,比较麻烦。

    如果使用虚电路,就需要连接建立、数据传输和虚电路释放三个过程。

  1. 网络层协议数据单元(PDU)叫做IP数据报,此层有哪些设备,首部使用什么地址?数据链路层协议数据单元叫做帧,此层有哪些设备,首部使用什么地址
网络层

路由器,首部使用IP地址

数据链路层

网桥、交换机、网卡,首部使用MAC地址,也就是物理地址

  1. IPV4地址有多少位、IPV6地址有多少位数?

IPV4地址有32位,IPV6地址有128位

  1. CSMA/CD协议的原理,应用于哪些场景?以太网争用期如何计算?

想要期末考高分,不把原理摸清怎么弄呢?所以啊,在介绍CSMA/CD协议之前,我们不妨先解释一下什么是随机访问介质访问控制吧。4

随机介质访问控制

在类似于总线型网络中,当两个或以上用户同时发送数据时,就会产生帧的冲突,也就是产生碰撞。因此信道在同一时间内只允许一个主机发送数据,那么现在的问题就是决定让谁发送数据了。

这就用到了随机访问介质访问控制协议了(注意哈,这是一类协议,不是一个协议,它还能被称为争用型协议)。

这类协议都有个共同点,它们的核心思想都是胜利者通过争用获取信道,从而获得信息的发送权,也就是说,这个信道谁先抢到就给谁用,这不就很公平了吗?

它(随机介质访问控制)实质上其实就是一种将广播信道转化为点到点信道的行为


*ALOHA协议书上没有,所以基本上不会考,但是有助于理解
1.纯ALOHA协议

​ 网络中的任何一个主机可以不检测信道而直接发送消息。但是,如果在一段时间内还没有收到确认,那么主机就认为传输过程中发生了碰撞,那么发送站点需要等待一段随机的时间后再发送,直到数据发送成功(即收到确认)img

假设网络负载(也就是 T 0 T_0 T0时间内所有站点发送成功和未成功而重传的数据帧数)为 G G G,则纯ALOHA协议的网络吞吐量( T 0 T_0 T0时间内成功发送的平均帧数)为 S = G e − 2 G S=Ge^{-2G} S=Ge2G,根据公式可以很容易知道,纯ALOHA网络的吞吐量还是比较低的(大概是因为这个用户数据发送随机时间没有限制,所以还是很容易发生碰撞吧)

具体的网络吞吐量公式推导啥的可以具体看这篇博客:aloha协议


2.时隙ALOHA协议

时隙ALOHA协议把所有各站在时间上同步起来,将时间分为一段段等长的时隙,并且规定在每个时隙开始时才能发送一个帧,这样用户就不能随意发送数据,因此也减少了数据发生冲突的可能性,因此提高了信道利用率.

img

就像上面的图一样,时隙的长度 T 0 T_0 T0刚好使得每个帧正好在一个时隙里面发送完毕。

每个帧到达以后,一般要在缓存中等待一段 [ 0 , T 0 ) [0,T_0) [0,T0)的时间才能发送出去

如果两个帧在同一个时隙到达,那么它们就会在下一个时隙发送碰撞。但是发生碰撞后重传的策略与纯ALOHA协议没啥区别


CSMA协议

上面的ALOHA协议总是随心所欲地想发就发数据,不管别人是不是在发数据,所以发生碰撞概率非常大

而CSMA协议在每个站点发送前都先侦听一下共用信道,发现信道空闲以后再发送,这样会大大降低碰撞地发生概率,从而提高信道利用率。

CSMA与ALOHA协议最主要的区别时CSMA协议多了一个载波监听装置

CSMA协议主要分三种,分别为:1-坚持CSMA、非坚持CSMA、p-坚持CSMA,由于这里不是复习的重点,等以后有时间再更新


CSMA/CD协议

在CSMA/CD协议中常见的几个专业术语:多点接入4、载波监听5

CSMA/CD听名字就和CSMA协议有关系,它就是CSMA协议的改进版本,CSMA适用于==总线型网络或半双工网络环境==,比如说有线连接的局域网

它的工作原理可以概括为“先听后发,边听边发,冲突停发,随机重发”,即工作流程如下:

  1. 适配器从网络层获得一个分组,将他封装成以太网帧,放入适配器缓存,准备发送

  2. 如果适配器监听到信号空闲,就开始发送帧。如果监听到信道忙碌,那么就持续监听信道直到信道空闲,然后开始发送帧

    while(监听结果==信道不空闲){
        监听结果 = 获取监听结果();
    }
    发送帧();
    
  3. 发送分组的过程中,适配器还要持续监听信道,如果一直没有检测到碰撞就可以成功将帧发送完成。

    如果检测到碰撞,那么就中止数据的发送,并且发送一个拥塞信号,以让所有用户都知道信道正忙碌

  4. 如果发生碰撞,发送被中止以后,适配器就使用指数退避算法,等待一段随机的时间后再执行步骤2

那么为什么即使在适配器检测到信道空闲并开始发送帧时,适配器还是要持续监听信道呢?

因为由于电磁波在总线上的传播速率是有限的,因此当适配器在某个时刻检测到信道空闲时,可能其实有其他站点刚刚发送了帧,只是这个帧还没到达,因此没有被适配器检测到,实际上此时信道上还是有信号的,因此还是有可能会发生碰撞的。

为什么CSMA/CD协议适用于半双工应用场景?

因为CSMA/CD协议是用来检测碰撞的,解决的就是两个站点在同时发送数据的时候可能出现的碰撞问题,因此CSMA/CD是应用在半双工的情况下的

争用期

如下图,设 τ \tau τ为单程传播时延,在 t = 0 t=0 t=0时,A发送数据,而在 t = τ − δ t=\tau-\delta t=τδ时,B检测发现信道空闲因此发送了数据。而因此在 t = τ − δ 2 t=\tau-\frac{\delta}{2} t=τ2δ时,也就是B发送数据经过了 δ 2 \frac{\delta}{2} 2δ以后,A与B发送的数据就发送了碰撞.

t = τ t=\tau t=τ时,B获取到了碰撞后的数据,然后发现了数据的问题,因此B此时检测到了碰撞,在这个时候,B就停止发送数据了。

而在 t = 2 τ − δ t=2\tau-\delta t=2τδs时,A也检测到了碰撞,因此也停止发送数据

很显然的,A在发送帧后,最多只需要经过 2 τ 2\tau 2τ的时间就能检测到碰撞,因此把以太网中端到端的往返时间 2 τ 2\tau 2τ称为争用期(又称为冲突窗口或者碰撞窗口)

img

争用期的计算

实际上我不是很看得懂题目是什么意思,争用期的计算?

既然如此我们不妨直接把所有的计算方法都摸透吧

  1. 信道单程传播时延 τ \tau τ

    单程传播时延不就是数据从一端传递到另一端所有的时间吗,那只要知道了信道上的信号传播速度 v v v与信道的物理长度 s s s,我们就能很容易得出公式:
    τ = s v \tau = \frac{s}{v} τ=vs
    记得把单位换算一下

  2. 网络最短有效帧长

    在回答这个问题时,我们需要先知道,为什么会有网络最短有效帧长

    首先,我们在上面吧CSMA/CD协议总结为了这十六个字:“先听后发,边听边发,冲突停发,随机重发”

    那么现在我们假设我们的帧很小,小到适配器还没有检测到冲突就已经发送完了,那么根据CSMA/CD协议的原理,当我们的帧已经发送完毕后,适配器就不会继续监听信道了,那么我们的适配器就不会知道我们刚刚发送过去的帧到底有没有发生冲突了(而且说永远不会再知道了)

    那么这样问题就大了,这就会造成在CSMA/CD协议中即使发生了碰撞也不会重发

    那么解决方法也很简单粗暴,那就是让适配器能在它发送帧的期间能够检测出碰撞,那么也就是说,在极限情况下,适配器发送的帧的最前端正要到达目的站点的一瞬间发生了碰撞,于是这个被撞坏的数据又往回传回到适配器,此时适配器又刚好还在发送这个帧。

    由此可见,我们的网络最小帧长度其实就是在一个争用期内能够发送的数据长度,假设信道的信号传输速率为 u u u,那么最小帧长 l l l就是:
    l = 2 τ ∗ u l = 2\tau * u l=2τu
    记得留意一下单位嗷!!!


在此拓展一下,一般来说,以太网规定的最小帧长为64B,也就是512bit

一般的网络中争用期不会超过 51.2 μ s 51.2\mu s 51.2μs,以太网的最长端到端长度一般不会超过 5 k m 5km 5km

  1. 求178.118.135.251/22的网络ID

计算网络号ID其实很简单,首先我们观察得到,网络位占22位,那么前面的16位原封不动,IP地址第三部分的掩码其实就是 11111100 11111100 11111100(从左向右连续6个1)

我们知道网络ID其实就是IP地址与子网掩码直接进行与运算,那么我们不妨观察一下IP地址的第三段:135

从大到小来看,135里面能拆出来128吗?可以,所以网络号里面肯定也有128

那么上面的计算后剩下来其实就是 135 − 128 = 7 135-128=7 135128=7

7里面能拆除64吗?不能

能拆出32吗?不能

能拆出16吗?不能

能拆出8吗?不能

能拆出4吗?可以,那么网络号里面肯定也有4

剩下的不用看了

所有第三位其实就是 128 + 4 = 132 128+4=132 128+4=132

是不是很简单呢😸

  1. TCP协议和UDP协议的特点,TCP报文中确认信息的序号?TCP连接的建立与释放过程
TCP协议

提供==可靠的、面向连接==的运输服务,在传输数据之前必须先建立连接,数据传送结束之后要释放连接。它的主要特点如下:

  1. TCP是面向连接的运输层协议

  2. 每一条TCP连接只能有两个端点,因此每一条TCP连接只能是点对点

  3. TCP提供可靠交付的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。

  4. TCP提供全双工通信。TCP允许通信双方的应用程序在任何时候都能发生数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

    在发送时,应用程序把数据传送给TCP缓存后就可以做自己的事情,TCP在合适的时候就会把数据发送出去。

    在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据

  5. 面向字节流。虽然应用程序和TCP的交互是一次一个数据块(大小不等),但是TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流(01比特流呗)

    TCP不保证接收方应用程序收到的数据块个数和发送方发送的一致,但是接收方接收的字节流和发送方发送的必须一样(也就是我不管你吧数据分成多少块,我只管数据是对的就行了)


UDP协议

UDP协议只在IP的数据包服务上增加了很少的功能,就是复用和分用的功能以及差错检测的功能,UDP协议的特点是:

  1. UDP协议是面向无连接的,因此减少了开销和发送数据之前的时延(因此直播等应用程序使用UDP协议)

  2. UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表

  3. UDP是面向报文的。

    发送方的UDP对应用程序交下来的报文只添加首部以后就向下交付给IP层,它对报文既不合并也不拆分,而是保留这些报文的边界(也就是直接发送报文段)

    接收方的UDP对于IP层交上来的UDP用户数据报,在去除首部以后就原封不动地交付给上层地应用程序。

    也就是说UDP一次交付一个完整的报文。因此应用程序必须选择合适大小的报文,如果报文太大,UDP将报文交给IP层以后,IP层在传送时可能要进行分片,这会降低IP层的效率。|反之如果报文太短,UDP将报文交给IP层以后,IP数据报的首部相对而言就太长了,就也降低了IP层的效率

  4. UDP没有拥塞控制,因此网络出现的拥塞并不会使源主机的发送速率降低。(所以很多实时应用会使用它,因为实时应用允许数据有稍许卡顿,但是肯定不允许时延太大)

  5. UDP支持一对一、一对多、多对一、多对多的交互通信

  6. UDP首部的开销小(因为没有那么多要求嘛。。。)


TCP报文中确认信息的序号
TCP报文段首部格式
image
  1. 源端口和目的端口

  2. 序号

    序号位占4字节,也就是32位,因此序号的范围是 [ 0 , 2 32 − 1 ] [0,2^{32}-1] [0,2321],当序号增加到 2 32 − 1 2^{32}-1 2321时,下一个序号又回到0。

    由于TCP协议是面向字节流的,所以报文首部的序号是对字节进行编号的,它的含义是此报文段中第一个字节的序号

  3. 确认号

    这个是回答我们这个问题的重点,确认号和序号一样,占4个字节32位,指的是期望收到对方下一个报文段的第一个字节的序号,这个应该是接收方发给发送方的确认报文中才起作用的字段,如果确认号为 N N N,则表示 0 − ( N − 1 ) 0-(N-1) 0(N1)的所有数据都已经正确接收到了

  4. 数据偏移

  5. 保留

  6. 紧急URG

  7. 确认ACK

  8. 推送PSH

  9. 复位RST

  10. 同步SYN

  11. 中止FIN

  12. 窗口

  13. 校验和

  14. 紧急指针

  15. 选项

ARQ协议下面的确认方式顺便学一下呗

ARQ协议,就是自动重传请求协议(Automatic Repeat-reQuest),它使用确认超时两个机制,在不可靠服务的基础上实现了可靠的信息传输。

简单来说,就是如果发送方在发送一段时间之内没有收到确认帧,它就会重新发送数据帧。

如果采用发送一个分组以后就停下等待确认的策略的话,那么信道利用率会很低,可以根据以下公式得出:
U = T D T D + R T T + T A U=\frac{T_D}{T_D+RTT+T_A} U=TD+RTT+TATD
(其中 U U U是信道利用率, T D T_D TD是发送分组所需时间, R T T RTT RTT是往返传输时延, T A T_A TA是发送确认分组所需的时间)

由上述公式可以知道如果采用发送一个分组以后就停下等待确认的策略(也就是所谓的“停止等待ARQ协议”),那么信道利用率会非常低。

下面我们重点介绍一下连续ARQ协议。

  • 连续ARQ协议

    所谓连续ARQ协议,就是发送方采用流水线传输,也就是一次性连续发送多个分组,而不需要每发完一个分组就停下,就如下图一样:

    img

    连续ARQ协议通常是结合滑动窗口协议来使用的,发送方需要维护一个如下图的发送窗口:

img

图(a)是发送方维持的发送窗口,它的意义是:位于发送窗口内的所有分组(图中是5个)都可以连续发送出去,而不需要一个个发送并等待确认,这样就能提高信道利用率了。

首先先说一下接收方的确认方式吧。接收方采用的是累计确认的方式,也就是说接收方不必对接收到的分组逐个发送确认,而是对按序到达的最后一个分组进行确认.

这里感觉书上说的不是很准确,所以我来解释一下吧。

比如说,接收方收到的分组是(1、2、4),那么这里面,1,2是按序到达的分组,4则不是,那么我们的接收方只发送对2号分组的确认。那么它如果发送了对2号分组的确认,那么意思就是“嘿,我已经收到了分组2及其前面的所有分组了,你可以从第三个分组开始发了

接着我们可以说一下发送方的工作方式了,还是按照上面的例子,假设发送方已经发送了1~5号分组,但是上面接收方只返回了对于2号分组的确认,那么发送方就只知道接收方收到了1、2号分组,3号分组肯定是没有收到的,后面的分组有没有收到发送方也不知道,所以发送方就会想:“哦,接收方收到了1、2号分组了,但是不管怎么样,我可以从第3个分组开始发了”,于是不管怎样,发送方将发送窗口向后移动2位,直接开始发送3~7号分组了

那么这种连续ARQ协议的==优点==就是容易实现即使确认丢失也不必重传(意思大概就是,即使某个确认丢失了,当一个更大的确认到了,发送窗口还是会向前移动的)

它的==缺点==是不能向发送方及时反映接收方是否已经正确收到所有分组的信息

(比如我们刚刚的例子中,分组4已经被接收了,但是发送方并不知道分组4是不是已经被接收了)

以字节为单位的滑动窗口

滑动窗口协议与连续ARQ协议不同的关键在于,连续ARQ协议只维护一个发送窗口,而滑动窗口协议还会维护一个接收窗口

问了一下群里的一个大佬,解释是这样的:滑动窗口协议并不是一个协议,而是一类协议,连续ARQ协议只是基于滑动窗口协议的思想的一种协议

滑动窗口协议中,接收方也有一个接收窗口

这或许是滑动窗口和连续ARQ协议最大的区别了,在接收方,也有一个接收窗口,它表示的是接收方现在允许接收的最大的数据段的个数,一旦接收方收到了期望连续数据段,那么他会返回最大连续段的确认,并且将窗口移动,移动后窗口的第一个序号为刚刚的确认报文中期望收到的下一个序号

接收窗口中只有当按序到达的数据被上层应用读取后才会接收移动窗口,由此可见,接收窗口的主要目的是为了决定缓存数据,防止发送方发送数据太快导致无法上层应用来不及读取

在发送方的发送窗口中,在收到B的确认前可以连续地发送窗口内的数据,但是发送完以后在收到确认前必须保留,防止需要重传。

滑动窗口协议还需要考虑接收方的接收能力,因此发送窗口不能超过接收方的接收窗口数值。而当然也存在这样一种情况:当接收方返回了一个确认后同时要求发送方减小发送窗口大小,但是TCP协议并不建议这么做,因为会出现一些错误

在这里插入图片描述

其他的,滑动窗口和连续ARQ协议区别不是很大了

总结一下,发送方会使用发送窗口来缓存:

  1. 准备发送的数据
  2. 已经发送但是还没有收到确认的数据

接收方会使用接收窗口来缓存:

  1. 按序到达、但是尚未呗接收应用程序读取的数据
  2. 未按序到达的数据

TCP连接的建立与释放过程
TCP连接的建立

TCP连接需要客户端与服务端进行四次交互,但是中间的两次交互是可以被合并的,所以就变成了三次握手协议

它的具体过程如下:

  1. 服务器端进程需要先创建传输控制块TCB6,进入监听状态,等待客户机的连接请求

  2. 客户机的进程也先创建一个传输控制块TCB6,然后向服务器发送连接请求报文段,此报文首部的同步位SYN=1,同时选择一个初始序号seq=x,此时客户端进入了SYN-SENT(同步已发送)状态

    (TCP规定SYN报文段【也就是请求连接报文段】不能携带数据,但是要消耗掉一个序号。由于发送请求时,客户机作为一个发送端,所以ACK位也要置0

  3. 服务端接收到请求报文后,如果同一连接,则要向客户端发送确认报文,确认报文由于是对连接请求的确认,所以SYN要置1,而且由于确认报文,所以ACK也要置1,确认号是ack=x+1(也就是下一个期望收到的序号,但是由于2中的请求报文没有数据,但是要消耗掉一个序号,所以下一个期望收到的需要ack=x+1)。然后为自己也选择一个初始序号seq=y同样的,这个报文段也不能携带数据,但是也要消耗掉一个序号。这时候服务器就进入了SYN-RCVD(同步收到)状态

    (关于为什么这里还要给自己指定一个需要,很多人想,我这个不是确认报文吗,那说明服务器就是接收端,那要需要干啥?其实在这里,TCP连接建立以后是个全双工通信,所以服务器自己既是发送端也是接收端,所以要发送自己期望的序号一般来说,应该由服务器发送两个报文,一个报文是作为接收端发送的确认报文,一个是作为发送端的发送报文,但是我们想为什么这两个报文不能合并呢?于是中间的两次“握手”就合并成了一次)

  4. 客户端收到确认以后,向服务端发送确认,这次是完全的确认报文,所以只需要将ACK置1,然后返回确认号ack=y+1与自己的序号seq=x+1即可,此时的确认报文可以带数据,但是如果不带数据的话就不会消耗序号,那么下一个数据报文就还是seq=x+1了。

    此时,TCP连接终于建立了,客户端进入了ESTABLISHED(已建立连接)状态

  5. 当服务器收到确认报文以后,也进入ESTABLISHED(已建立连接)状态

TCP连接的释放

TCP释放连接是四次握手,而且一次也不能少,这点需要特别注意

首先,在数据传输结束后,通信双方都可以释放连接,因此我们在下面不特别标注服务端和客户端了,而使用主机A,B来区分两个主机

具体步骤如下:

  1. 首先主机A主动请求释放连接,于是主机A向TCP发送释放连接报文段,并且停止发送数据,A把连接释放报文首部的中止控制位FIN置1,序号seq=u+1,其中u是前面传送的数据的最后一个字节的序号。这时A进入FIN-WAIT-1(终止等待1)状态,等待B确认。虽然FIN报文段不携带数据,但是它也占一个序号

  2. B收到连接释放报文以后立即发送确认,确认号是ack=u+2,当前该报文的序号是v,然后B就进入CLOSE-WAIT(关闭等待状态)。此时A到B的连接已经被释放了,但是B到A的连接还在,此时处于半关闭状态。当然,这是个确认报文,所以ACK是1

    同时的,B的TCP需要通知高层应用来关闭B到A的连接。

  3. A收到B的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待B发出连接释放报文

  4. 如果B不再需要向A发送数据,那么应用程序就直接通知TCP释放连接,这是B也释放连接释放报文,令这个报文的FIN=1,并且发送B当前的序号w(为什么2和4步骤的报文序号不一样?因为在B请求关闭前,可能也发送了部分数据给A),同时,B还需要发送确认报文 a c k = u + 2 ack=u+2 ack=u+2,此时B就进入了LAST-ACK(最后确认)状态,等待A确认释放连接

  5. A收到B的请求释放报文后,发出确认,由于是确认报文,所以ACK需要置1,确认号也是ack=w+1,自己的序号是seq=u+2(因为FIN报文也要消耗掉一个序号),同时A进入了TIME-WAIT(时间等待)状态,此时TCP还未释放,需要等待时间等待器设置的时间2MSL7后才能释放连接

现在大家大概有几个问题:

  1. 为什么中间的两个报文不能合并?

    这里大概有两个理由:

    一是在A请求B释放连接以后,A肯定是确保自己的数据已经不用再传了,但是B可能还在传数据给A,肯定不能贸然停止传输吧,至少要等到B传完数据才能释放B到A的连接

    (有点像个悲情故事呢,一方决然要分手,一方尝试挽留😔)

    二是万一B不及时发出确认报文,那可能会导致触发A的超时重传,那可能就会有问题了

  2. 为什么A在确认完后要等待2MSL的时间呢?

    第一,跟上面的原因一样,A的确认报文可能会丢失,所以B可能会超时重传,此时A要确保B能收到确认报文,不能让他干等着,那不然不就是个人渣了?

    第二,经过2MSL时间后,本连接的持续时间内的所有报文段都会在网络中消失,这样可以防止下一次连接中不会出现旧的连接请求报文段

  1. 停止等待协议原理,为什么要使用计时器?

停止等待协议就是上面说过的ARQ协议

至于为什么要用计时器,主要是为了确认发送方的报文是否到达了接收方,如果说超过一定时间还是没有到达的话,就认定发送的报文丢失了,那就要重传。

  1. 计算机网络中的时延分哪几个部分?
  1. 传输时延
  2. 传播时延
  3. 处理时延
  4. 排队时延
  1. 100Base-T网络有什么介质?100Base-FX网络呢?

100Base-T网络的介质主要是双绞线

100Base-FX网络的介质主要是光纤

拓展

100BASE-T是在双绞线上传送100Mbit/s基带信号的星型拓扑以太网,使用CSMA/CD协议,又称为快速以太网

下图为100Mbit/s以太网的物理层标准:

名称媒体网段最大长度特点
100BASE-TX铜缆100m两对UTP 5类线或屏蔽双绞线STP
100BASE-T4铜缆100m4对UTP 3类或5类线
100BASE-FX光缆2000m两根光纤,发送和接收各用一根
  1. 信道复用方法?
  1. 频分复用

    使用调制的方法,将各路信号分别搬到合适的频率位置,使彼此不产生干扰

    img

  2. 时分复用

    将一段时间分成几段,每种信号占用一段时间,跟进程的时间片轮转调度算法一个道理

    在这里插入图片描述

  3. 波分复用

    波分复用就是光的频分复用,由于光的频率太高了不好区分,所以用光的波长来表示所使用的光载波

  4. 码分复用

    码分复用其实就是使用了线性代数的知识,给每个站点分配一个相互正交的码片序列,每个站点使用这些被分配的码片序列发送数据,几个站点的数据可以直接叠加然后发送出去,到接收端再直接使用分配的码片序列与叠加的向量相乘就可以得出所需的比特了

  1. 申请到一个C类IP地址,要分成6个子网,求子网掩码?

C类IP地址的子网掩码是255.255.255.0

想将此类IP地址分出6个子网,那么至少需要3位主机号的(因为 2 3 = 8 > 6 2^3=8>6 23=8>6),那么子网掩码就是255.255.255.224

  1. 网络安全、主动攻击/被动攻击?拒绝服务,恶意程序,篡改,截获?
被动攻击

被动攻击指的是攻击者从网络上窃听他人的通信内容,通常把这类攻击称为截获

所以截获是被动攻击

主动攻击
篡改

攻击者故意篡改网络上传送的报文,这里也包括彻底中断传送的报文,甚至把完全伪造的报文传送给接收方

恶意程序

包含计算机病毒、计算机蠕虫、特洛伊木马、逻辑炸弹、后门入侵、流氓软件

拒绝服务

即DOS攻击,就是向网络服务器发送大量的无用分组,使服务器无法提高正常服务,甚至瘫痪

  1. TCP协议、IP协议分别再哪层?主要功能是什么?

TCP协议在运输层,主要功能是提供面向连接的可靠传输服务

IP协议在网络层,主要功能是提供一种不可靠无连接端到端的数据包传输服务,主要实现两个功能,分别位数据传输数据分片,除此之外还需要实现寻址和路由功能

  1. CRC检验

假设一个帧为101001,多项式为 G ( X ) = 1101 G(X)=1101 G(X)=1101,则 r = 3 r=3 r=3,那么就在帧的后面加上3个0为101001000,然后将101001000与G(x)进行模2运算,即在运算过程中每次都使用异或运算
110101 1101  ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ) 101001000 ‾ 1101            ‾ 1110             1101          ‾ 0111        0000        ‾ 1110      1101      ‾ 0110    0000    ‾ 1100 1101 ‾ 001 \begin{array}{lr} & 110101 \\ 1101 \!\!\!\!\!\! & \overline{)101001000} \\ & \underline{1101\ \ \ \ \ \ \ \ \ \ } \\ & 1110\ \ \ \ \ \ \ \ \\ & \underline{\ \ 1101\ \ \ \ \ \ \ \ }\\ & 0111\ \ \ \ \ \ \\ & \underline{0000\ \ \ \ \ \ }\\ &1110\ \ \ \ \\ &\underline{1101\ \ \ \ }\\ &0110\ \ \\ &\underline{0000\ \ }\\ &1100\\ &\underline{1101}\\ &001 \end{array} 1101110101)1010010001101          1110          1101        0111      0000      1110    1101    0110  0000  11001101001
将运算得出的结果001作为冗余码,加到帧后面,所以最后发出的数据为101001001

  1. DNS协议和ARP协议各有什么用

DNS协议是域名解析协议,负责将便于人们记忆的具有特定含义的主机名(域名)转化为便于机器处理的IP地址

ARP协议用于将网络层的IP地址转化成对应的物理地址(MAC地址)

  1. 已知 IP 地址是 202.118.91.189,子网掩码是255.255.192.0。试求该IP所在的子网的网络地址?

观察子网掩码,前面部分都是255,所以第一和第二部分IP地址无需处理,直接处理第三块地址

192对应的二进制位11000000

那么我们只看IP地址里面有没有128和64即可

91里面没有128

91里面有64

所以网络号对应的第三块地址为128*0+64*1=64

综上所述,网络地址为202.118.64.0

  1. IP数据报的最大长度为65535字节

为什么不是65536B呢?

因为IP数据报的最大长度是记录在IP数据报首部的总长度部分的,所以IP数据报的总长度范围为 [ 0 , 2 16 − 1 ] [0,2^{16}-1] [0,2161],所以最大长度为65535,而不是65536

附录

网桥与交换机的区别

在这里插入图片描述

在这里插入图片描述 从上图可以看出,交换机相当于是一个高级的网桥,他们的基本功能一样,都是为了将多个以太网连接成一个网段

关于更详细的区别可以看这个网桥与交换机的区别

OSPF协议

王道计算机考研 计算机网络


  1. 中继器(Repeater)工作于OSI的第一层(物理层),中继器是最简单的网络互联设备,连接同一个网络的两个或多个网段,主要完成物理层的功能,负责在两个网络节点的物理层上按位传递信息,完成信号的复制、调整和放大功能,以此从而增加信号传输的距离,延长网络的长度和覆盖区域,支持远距离的通信。一般来说,中继器两端的网络部分是网段,而不是子网。中继器只将任何电缆段上的数据发送到另一段电缆上,并不管数据中是否有错误数据或不适于网段的数据。大家最常接触的是网络中继器 ↩︎

  2. 集线器也称HUB,工作在OSI七层结构的第一层物理层,属于共享型设备,接收数据广播发出,在局域网内一般都是星型连接拓扑结构,所有的工作站都连接到集线器上。由于集线器的带宽共享特性导致网络利用效率极低,一般在大中型的网络中不会使用到集线器。现在的集线器基本都是全双工模式,市面上常见的集线器传输速率普遍都为100Mbps。 集线器就是将网线集中到一起的机器,也就是多台主机和设备的连接器。集线器的主要功能是对接收到的信号进行同步整形放大,以扩大网络的传输距离,是中继器的一种形式,区别在于集线器能够提供多端口服务,也称为多口中继器。集线器在OSI/RM中的物理层。集线器的基本功能是信息分发,它把一个端口接收的所有信号向所有端口分发出去。一些集线器在分发之前将弱信号重新生成,一些集线器整理信号的时序以提供所有端口间的同步数据通信。集线器实际就是一种多端口的中继器。集线器一般有4、8、16、24、32等数量的RJ45接口,通过这些接口,集线器便能为相应数量的电脑完成“中继”功能(将已经衰减得不完整的信号经过整理,重新产生出完整的信号再继续传送)。由于它在网络中处于一种“中心”位置,因此集线器也叫做“HUB”。集线器的工作原理很简单,比如有一个具备8个端口的集线器,共连接了8台电脑。集线器处于网络的“中心”,通过集线器对信号进行转发,8台电脑之间可以互连互通。具体通信过程是这样的:假如计算机1要将一条信息发送给计算机8,当计算机1的网卡将信息通过双绞线送到集线器上时,集线器并不会直接将信息送给计算机8,它会将信息进行“广播”——将信息同时发送给8个端口,当8个端口上的计算机接收到这条广播信息时,会对信息进行检查,如果发现该信息是发给自己的,则接收,否则不予理睬。由于该信息是计算机1发给计算机8的,因此最终计算机8会接收该信息,而其它7台电脑看完信息后,会因为信息不是自己的而不接收该信息。 ↩︎

  3. 码元其实就是一个脉冲信号,是一个承载数据的最小单位,如果码元的离散状态有n种,那么一个码元就可以携带 l o g 2 n log_2n log2n个bit的数据 ↩︎

  4. 多点接入说明是总线型网络,意思是许多计算机以多点接入的方式连接在同一个总线上 ↩︎

  5. 载波监听就是检测信道,不管在发送前、发送中,每个站点都必须不停地检测信道。 ↩︎

  6. TCB中存储了每一个连接中的一些重要信息,比如TCP连接表、指向发送和接收缓存的指针、指向重传队列的指针、当前的发送和接收序号 ↩︎ ↩︎

  7. 最长报文段寿命,在RFC 793中建议为两分钟,但是现在的网络情况这个时间可能太长了,一般会使用更小的MSL值 ↩︎

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个老蒟蒻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值