written by PeterAlbus,Copyright © 2022 - SHOU 1951123 Hong Wu

注:本文根据《2021秋计算机网络期末考试大纲》编写。 * 号部分表示不在大纲内

写在前面:计算机网络的学习按层次来,是从物理层到应用层,实际到虚拟的过程。而对于对计算机熟悉的人来说,这却是个陌生到熟悉的过程。在学习阶段对物理层往往云里雾里,而到了复习阶段,在每个阶段的学习过程中都应当想象这一部分是在整个流程的什么位置,起到什么作用,对于理解这个科目,很有帮助。

# 计算机网络

# 第一章 概述

# 1.2 互联网概述

# 1.2.1 网络的网络

计算机网络由若干个节点(node)以及连接这些节点的链路(link)组成,网络中的节点可以是计算机、集线器、交换机或路由器。

网络间还可以通过路由器再互联起来,这就构成了一个覆盖范围更大的计算机网络。这样的网络称为“互连网”(internet)。

网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起,与网络相连的计算机常被称为主机(host)。

# 1.2.2 互联网基础结构发展的三个阶段

  1. 单个网络ARPANET向互连网(internet)发展
    • 1969年ARPANET——第一个分组交换网。之后开始研究多种网络互连的技术,导致了互连网的出现,也是互联网的雏形。
    • 两个类似但意思不同的名词:internet(互连网)和Internet(互联网)。前者是一个通用名词,泛指多个计算机网络互连而成的计算机网络。后者则是专有名词,指全球最大,由众多网络连接而成的特定互连网,采用TCP/IP协议族作为通信的规则。
  2. 建成了三级结构的互联网(Internet)
    • 三级网络,分为主干网、地区网和校园网。
  3. 形成了多层次ISP结构的互联网
    • 互联网主干网逐渐走向商业化,若干个商用互联网主干网替代NSFNET,政府开始不负责互联网的运营。
    • ISP:互联网服务提供者/互联网服务提供商。(中国移动、中国电信、中国联通)
    • ISP申请大量IP地址,用户向ISP缴纳费用,即可获取IP地址使用权并通过ISP提供的通信线路接入互联网。
    • ISP也分为不同层次:主干ISP、地区ISP和本地ISP

# 1.3 互联网的组成

互联网的拓扑结构从工作方式上看可以分为两大块:

  • 边缘部分:连接在互联网上的主机组成,用户直接使用,用来进行通信和资源共享
  • 核心部分:由大量网络和连接网络的路由器组成,为边缘部分提供服务(连通性和交换)

# 1.3.1 互联网的边缘部分

边缘部分的通信方式(主机上的程序和主机上的程序之间)可分为两大类:客户端-服务器方式(C/S)和对等方式(P2P)。

  1. Client/Server

    在互联网上最常用也是最传统的方式。客户(Client)和服务器(Server)是指通信中涉及的两个应用进程。客户是服务请求方,服务器是服务提供方。

    • 客户程序:需要知道服务器程序的地址,向服务器发起请求
    • 服务器程序:专门用来提供某种服务,可同时处理多个客户端发起的请求。系统启动后不停运行,被动等待监听客户程序发来的请求。
  2. Peer-to-Peer *

    对等连接(P2P)是指两台主机通信时并不区分哪台是服务请求方,哪台是服务提供方。两台机器都运行了P2P软件,他们就可以进行平等的通信。

# 1.3.2 互联网的核心部分

网络的核心部分是互联网中最复杂的部分,它需要保证互联网的边缘部分的大量主机的连通性。

在网络部分起到核心作用的是路由器。路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组。

  1. 电路交换 *

    是电话交换机至今仍使用的交换方式。电话机通过交换机连接起来,以在控制电线数量的情况下保证电话机和每一台电话机相连。

    image-20220102132003489

    电话机经过多次更新换代,内部仍使用分组交换。交换(switching)就是按照某种方式动态地分配传输线路地资源。电路交换的方式会在端到端间建立连接,保证双方的通信资源,且在通信期间不会被占用。

    必须经过"建立连接(占用通信资源)->通话(一直占用通信资源)->释放连接(归还通信资源)"三个步骤的交换方式称为电路交换。

    但若使用电路交换在计算机网络传输数据,由于计算机数据的突发性,线路的传输效率往往会很低。

  2. 分组交换

    分组交换则使用存储转发技术。一个要发送的较长的报文会被划分为一个个分组进行发送。分组包含首部也就是"包头",包含了如目的地址和源地址等重要控制信息,保证了分组能正确的交付到传输终点。

    路由器则是负责转发分组,当路由器收到一个分组时,会先暂时储存,再根据首部以合适的接口转发出去。分组在传输时一段一段地占用通信资源。

    分组交换的优点:

    优点 所采用的手段
    高效 在分组传输的过程中动态分配传输带宽,对通信链路逐段占用
    灵活 为每一个分组灵活地选择最合适的转发路由
    迅速 以分组作为传送单位,可以不先建立连接就能向其他主机发送分组
    可靠 保证可靠性的网络协议,分布式多路由的分组交换网,使网络具有很好的生存性

    image-20220102133855544

# 1.6 计算机网络的性能

# 1.6.1 计算机网络的性能指标

  1. 速率

    比特(bit)指一个二进制数字,是信息论中使用的信息量的单位。

    网络技术中的速率是指数据的传送速率,也成为数据率或比特率,速率的单位是bit/s

  2. 带宽

    带宽(bandwidth)有两种不同的意义

    • 某个信号具有的频带宽度。单位是赫(千赫、兆赫等)。表示某信道允许通过的信号频带范围就成为该信道的带宽。
    • 计算机网络中,带宽表示网络中某通道传送数据的能力,网络带宽表示的是单位时间内网络中某信道能通过的“最高数据率”。单位是数据率的单位bit/s。

    前者为频域称谓,后者为时域称谓,其本质是相同的,一条通信链路的带宽越宽,其传输的最高数据率也越高。

  3. 吞吐量

    吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的实际的数据量。用于对现实世界网络的一种测量。

  4. 时延

    时延(delay/latency)是指数据从网路一端到另一端所需的时间。有时也称为延迟或迟延。时延有几个不同的部分组成:

    • 发送时延:主机或路由器发送数据帧所需要的时间。发送时延与发送的帧长成正比,与发送速率成反比。 $$ 发送时延=\frac{数据帧长度(bit)}{发送速率(bit/s)} $$

    • 传播时延:是电磁波在信道中传播一定的距离所需要化的时间。只与信号传送的距离有关。

    • 处理时延:收到分组时花费一定的时间进行处理

    • 排队时延:等待转发处理的时间

  5. 时延带宽积

    由上面的两个度量:传播时延和带宽相乘得到。单位是bit。表示发送的第一个比特到达终点时,若持续发送,链路中正在传输的比特数。

    时延带宽积又称为以比特位单位的链路长度。

  6. 往返时间RTT

    往返时间RTT(Round-Trip Time)也是个重要性能指标。因为在许多情况下互联网上的信息是双向交互的。

  7. 利用率

    分为信道利用率和网络利用率。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络利用率则是全网络的信道利用率的加权平均值。

    信道利用率并非越高越好,当网络通信量增大,在网络节点分组进行处理时需要排队等待,网络引起的时延就会增大。以下是网络当前时延D和网络空闲时延D0、利用率U的关系。 $$ D=\frac{D_{0}}{1-U} $$ 当网络利用率达到50%时,时延就要加倍。信道或网络利用率过高会产生非常大的时延。

    image-20220102141930754

# 1.7 计算机网络体系结构

# 1.7.1 计算机网络体系

计算机网络中两台计算机进行通信,要进行协调相当复杂。通过“分层”的方法,将庞大的问题转为若干的小问题来解决。

OSI标准是法律上的国际标准,将计算机分为七层协议的体系架构。而事实上的国际标准则是TCP/IP协议。

两种协议的详细架构将在本笔记的1.7.3章节展示。

# 1.7.2 协议与划分层次

为进行网络中的数据交换而建立的规则、标准或约定称为网络协议。

# 1.7.3 五层协议的体系结构

TCP/IP的四层协议在目前得到了较为广泛的应用。但由于其网络接口层基本没有什么内容,在学习计算机网络时往往将其与OSI协议结合,形成五层协议的网络体系结构。

image-20220102143439652

  • 应用层:应用进程间交互和通信的规则
  • 运输层:两台主机中进程间的通信提供通用的数据传输服务。主要使用传输控制协议TCP和用户数据报协议UDP。
  • 网络层:负责为分组交换网上的不同主机提供通信服务。网络层把运输层产生的报文段封装成分组或包进行发送。TCP/IP协议中主要使用IP协议,分组也叫IP数据报。同时网络层还有选择路由的任务。
  • 数据链路层:数据链路层将网络层交下来的IP数据报封装成帧(frame)。在两个相邻节点的链路上传送帧,每一帧包括数据和必要控制信息。
  • 物理层:关注如何表示1和0,以及接收方如何识别发来的1和0。

image-20220102144255025

# 1.7.4 实体、协议、服务和服务访问点

协议是控制两个对等实体进行通信的规则的集合。

通过协议的控制,两个对等实体的通信使得本层向上层提供服务,而实现本层协议也会用到下一层提供的服务。

协议是水平的,而服务是垂直的。

# 1.7.5 TCP/IP的体系结构

image-20220102144755214

技术的使用是灵活的,互联网使用的协议有时也会发生演变,分层次画出沙漏状的TCP/IP协议族如下图所示。TCP/IP协议可以为各式各样的应用提供服务,也允许IP协议在格式各样的网络构成的互联网上运行。

image-20220102145239179

# 第二章 物理层

# 2.1 物理层的基本概念

物理层考虑如何在连接计算机的各式传输媒体上传输数据。

# 2.2 数据通信的基础知识

# 2.2.1 数据通信系统的模型

当进行通信时,目的是传递消息(message),而数据(data)则是运输消息的实体。信号(signal)则是数据的电气或电磁的表现。

信号可分为两大类:

  • 模拟信号:消息的参数的取值是连续的
  • 数字信号:消息的参数的取值是离散的

# 2.2.2 有关信道的几个基本概念

信道一般用来表示向某一个方向传送信息的媒体。

通信的双方信息交互的方式可以有以下三种:

  • 单向通信:单工通信,一个方向的通信,电视广播等
  • 双向交替通信:半双工通信,通信双方都可以发送和接收,但不能同时发送
  • 双向同时通信:双工通信,双方可以同时发送和接收消息

常用编码方式:

image-20220102151255099

  • 不归零制
  • 归零制
  • 曼彻斯特编码:位周期中心向上跳变表示0,向下跳变表示1
  • 差分曼彻斯特编码:位中心始终跳变,每一位开始时有跳变代表0,无跳变代表1。

曼彻斯特编码具有自同步能力,不需要时钟信号。

带通调制方法:

  • 调幅AM:载波的振幅变化
  • 调频FM:载波的频率变化
  • 调相PM:初始相位变化

# 2.2.3 信道的极限容量

码元传输的速率越高,或信号传输的距离越远,或噪声干扰越大,或传输媒体质量越差,在接收端波形的失真就越严重。

限制码元在信道上传输速率的因素有两个:

  1. 信道能通过的频率范围

    信道的频带越宽,能通过的信号高频分量多,就可以用更高的速率传送码元而不出现码间干扰。

  2. 信噪比

    信噪比就是信号的平均功率和噪声的平均功率之比。常记为S/N,用分贝(dB)作为度量单位。(S:信道内信号平均功率,N:高斯噪声功率) $$ 信噪比(dB)=10 \log_{10}(S/N) $$ 香农公式,信道的极限传输速率C为(W:信道带宽,单位hz): $$ C=W \log_2(1 + S/N)(bit/s) $$

# 2.3 物理层下面的传输媒体

传输媒体可分为两大类

  • 导引型传输媒体
    • 双绞线
    • 同轴电缆
    • 光缆
  • 非导引型传输媒体
    • 短波通信
    • 无线电微波通信
    • 卫星通信
    • 红外通信、激光通信(近距离)

# 2.4 信道复用技术

# 2.4.1 频分复用、时分复用和统计时分复用

  • 频分复用FDM:最基本的复用之一。用户在分配到一定的频带后,自始至终都占用这个频带。频分复用的所有用户在同样的时间内占用不同的带宽资源。
  • 时分复用TDM:也是最基本的复用之一。将时间分为一段段等长的时分复用帧。每一个时分复用的用户占用固定序号的时间间隙。

image-20220102153631507

  • 统计时分复用STDM:解决互联网的突发性问题,改进时分复用,能明显提高信道的利用率。通过集中器集中用户的数据发往高速线路。每个时隙由于不固定分配,需要有用户的地址信息。

# 2.4.2 波分复用

波分复用WDM就是光的频分复用。使用一根光纤传输多个光载波信号。现在能复用的路数越来越多,又使用了密集波分复用DWDM这一名词。

# 2.4.3 码分复用

码分复用CDM是另一种共享信道的方法,各用户使用不同码型,最初用于军事通信,有很强的抗干扰能力。

每个比特时间划分为m个短的间隔,被称为码片。每个站会被指派一个m bit的码片序列。发送时该序列代表1,反码代表0。

每个站被分配的码片序列都必须正交,即规格化内积为0。

码片向量和本身规格化内积为1,和反码规格化内积为1

当接收站接收该站信号时,就用该站码片序列和收到的信号计算规格化内积,结果为1表示1,-1表示0,0表示为其他站发送的信号。

# 2.6 宽带接入技术

连接到某个ISP以接入互联网的方式。

# 2.6.1 ADSL技术

非对称数字用户线ADSL(Asymmetric Digital Subscriber Line)技术是对现有的模拟电话用户需进行改造,把没有被利用的高频部分给用户上网使用。在用户线两端各安装一个调制解调器,采用自适应调制技术选择尽可能高的数据率,不能保证固定的数据率。

# 2.6.2 光纤同轴混合网(HFC网)

有线电视基础上开发的居民宽带网。

# 2.6.3 FTTx

x表示不同的光纤接入地点,整个词语表示光纤到xxx

FTTH即为光纤到户,为理想中的宽带接入方式。(Fiber To The Home)

# 第三章 数据链路层

属于计算机网络的低层,数据链路层使用的信道主要有两种类型:点对点信道和广播信道。

主要解决相邻节点的数据传输问题。

# 3.1 点对点信道

# 3.1.1 数据链路和帧

链路是一条无源的点到点的物理线路段,中间没有任何其他交换节点

而数据链路(data link)是另一个概念,除了物理线路,还必须有一些必要的通信协议来控制这些数据的传输。数据链路是链路加上了实现这些协议的软件和硬件。

点对点信道数据链路层的协议数据单元为帧。

image-20220102162037404

# 3.1.2 三个基本问题

  1. 封装成帧

    在数据前后分别添加首部和尾部(帧定界)

    image-20220102162200402

  2. 透明传输

    当要传输的数据中出现某些特定的二进制组合时,例如表示帧结束EOT的一串二进制数字,传输会出现错误。为了让这种数据不出现问题,“看不见”有什么会妨碍数据传输,通过字节填充/字符填充(加入转义字符ESC)来解决这种问题。

  3. 差错检测

    通过一些方式解决传输时出现差错的问题。

    数据链路层目前广泛使用了循环冗余检验(CRC)的检错技术。在发送的数据后添加n位冗余码。

    • 发送数据后添加n个0,用其除以一个规定好的除数(除数位数n+1)
    • 将余数加到发送数据后
    • 收到每个数据后除以该规定好的除数,其余数为0表示无差错

MTU:最大传输尺寸,用来限制每个mac帧的长度

# 3.2 点对点协议PPP

点对点协议PPP(Point-to-Point Protocol)是目前使用的最广泛的数据链路层协议。

# 3.2.1 PPP协议的特点

PPP就是用户计算机和ISP通信时使用的数据链路层协议。

# 3.2.2 PPP协议的帧格式

image-20220102164216215

零比特填充:当使用同步传输时,PPP使用0比特填充实现透明传输。当出现5个连续1的时候,立即填入一个0。接收时相反,发现5个连续1的时候,就把这5个连续1后的0删除。

# 3.3 使用广播信道的数据链路层

广播信道用于进行一对多的通信

# 3.3.1 局域网的数据链路层

当下的以太网在局域网中占据了绝对的优势。以太网几乎成为了局域网的同义词。

  1. 以太网的两个标准

    • DIX Ethernet V2
    • IEEE 802.3
  2. 适配器的作用

    计算机与外界局域网的连接是通过通信适配器(adapter)进行的。适配器的重要作用就是串行传输和并行传输的转换。

# 3.3.2 CSMA/CD协议

在数据帧的首部写明接收站的地址来在广播特性的总线上实现一对一的通信。

以太网采用较为灵活的无连接的工作方式,以太网不对发送的数据编号也不要求发回确认,提供不可靠的交付。而这些工作以及重传等是否进行就交给上层协议,例如tcp协议会完成这些工作。

总线上同一时间只能允许一台计算机发送数据,为了进行协调和监控,使用的协议是CSMA/CD,意为载波监听多点接入/碰撞检测。

CSMA/CD协议要点:

  • 多点接入
  • 载波监听:不管在发送前,还是发送中,每个站都不停地监听信道
  • 碰撞检测:边发送边监听

一旦检测到了碰撞,就要立即停止发送。在碰撞后,最迟经过2倍的端到端传播时延才能被检测到。

image-20220102181925472

因此以太网的端到端往返时间2r称为争用期,经过争用期还没有检测到碰撞,才能肯定这次发送不会产生碰撞。

长度小于争用期发送的字节数(争用期时间*网速)的帧都被认为是无效帧。

# 3.3.3 使用集线器的星形拓扑

传统以太网最终发展为使用更便宜和灵活的双绞线。以太网采用星形拓扑,在中心增加了一种名为集线器的设备。双绞线以太网总是和集线器配合使用。

  • 集线器使用电子器件来模拟实际电缆线的工作,使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议。同一时刻至多只允许一个站发送数据。
  • 一个集线器有很多接口。一个集线器很像一个多接口的转发器。
  • 集线器工作在物理层,它的每个接口仅仅简单地转发比特,不进行碰撞检测,若两个接口同时有信号输入即发生碰撞,所有的接口都收不到正常的帧。

# 3.3.4 以太网的信道利用率

以太网信道被占用的情况包括争用期发生碰撞的情况,如下图所示:

image-20220102183433665

因此要提升以太网的信道利用率,就必须减小r与T0之比。这个比值越打,表名争用期所占的比例越大,每一次碰撞都浪费了不少信道资源。

# 3.3.5 以太网的MAC层

在局域网中,硬件地址又被称为物理地址或MAC地址。

IEEE802标准为局域网规定了一种48位的全球地址,是指局域网上的每一台机器固化在适配器的ROM中的地址。

如果连接在局域网上的主机或路由器有多个适配器,那么就有多个地址。准确的说,这48位“地址”是某个接口的标识符。

网络上收到一个MAC帧首先检查MAC帧中的目的地址,只收下发往本站的帧。“发往本站的帧”包括三种:

  • 单播帧:一对一,地址与本站硬件地址相同
  • 广播帧:一对全体,全1地址
  • 多播帧:一对多,发送给一部分站点

所有的适配器都至少应当能识别前两种帧。

# 3.4 扩展的以太网

许多情况下希望扩展以太网的覆盖范围,可以在物理层扩展,也可以在数据链路层扩展。扩展后的以太网在网络层仍被视为一个网络。

# 3.4.1 物理层扩展以太网

  • 光纤和一对光纤调制解调器
  • 使用多个集线器连接成覆盖更大范围的多级星形结构的以太网

会扩大以太网的碰撞域。

# 3.4.2 数据链路层扩展以太网

最初使用网桥

1990年,交换式集线器(switching hub)问世,常称为以太网交换机(switch)或第二层交换机,工作在数据链路层

  1. 以太网交换机的特点

    实质上就是一个多接口的网桥。以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,一般都工作在全双工方式。相互通信的主机都是独占传输媒体,无碰撞地传输数据。

    交换机能在输出接口繁忙时缓存要发送的帧,以后再发送出去。

    交换机是一种即插即用设备,内部的帧交换表是通过自学习算法自动地逐渐建立起来。

    以太网交换机的性能远远超过普通的集线器。

  2. 从总线以太网到星形以太网

    集线器代替了总线后,可使用全双工方式工作,也不再需要CSMA/CD协议,但仍称作以太网,因为它的帧结构仍未改变。

# 3.5 高速以太网

# 3.5.1 100BASE-T高速以太网

100BASE-T是在双绞线上传送100Mbit/s基带信号的星形拓扑以太网。仍使用IEEE的802.3的CSMA/CD协议。

# 第四章 网络层

# 4.1 网络层提供的服务

问题:在计算机通信中,可靠交付是否应当由网络层提供?

面向连接:两台计算机进行通信时,应当先建立连接,保证发送的分组不丢失,不重复地到达终点。

无连接:互联网采用的设计思路,网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。

# 4.2 网际协议IP

网际协议IP是TCP/IP体系中两个最主要的协议之一。使用的版本有IPv4和IPv6。

与IP配套使用的还有三个协议:

  • 地址解析协议ARP(Address Resolution Protocol)
  • 网际控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管理协议IGMP(Internet Group Management Protocol)

image-20220102191757773

# 4.2.1 虚拟互连网络

不同的网络想要连接起来非常复杂,会遇到许多问题。将网络连接起来需要使用一些中间设备,根据中间设备所在二点层次,可以有以下四种不同的中间设备。

  • 物理层使用的中间设备叫转发器(repeater)
  • 数据链路层使用的中间设备叫网桥或桥接器(bridge)
  • 网络层使用的中间设备叫路由器(router)
  • 在网络层以上使用的中间设备叫网关(gateway)

转发器和网桥仅仅是扩大一个网络,从网络层看,这仍是一个网络。网关则比较复杂。

网络互连时,都是用路由器进行。

路由器其实是一台专用计算机,用来在互联网中进行路由选择。

直接交付指目的主机就在本网络中,而间接交付则指通过查找路由表,先把数据包间接交付给路由器,路由器再继续寻址。

image-20220102192708579

# 4.2.2 分类的IP地址

在TCP/IP协议中,IP地址是一个最基本的概念。

  1. IP地址及其表示方法

    整个互联网就是一个单一的,抽象的网络,IP地址就是给互联网上的每一台主机或路由器的每一个接口分配一个在全世界范围内唯一的32位标识符。IP地址现在由ICANN进行分配。

    IP地址的编址经历了3个阶段:分类的IP地址,子网的划分和构成超网。

    所谓分类的IP地址就是将IP地址划分位若干个固定类,每一类地址都由固定长度的网络号和主机号组成。

    网络号在互联网范围内应当是唯一的,主机号在网络号指明的网络范围内是唯一的,因此整个IP地址在互联网范围内应当是唯一的。

    image-20220102193517957

    ABC3类地址较为常用:

    image-20220102193628173

# 4.2.3 IP地址与硬件地址

物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址。

image-20220102194805436

# 4.2.4 地址解析协议ARP

解决问题:主机或者路由器如何知道应当在MAC帧的首部填入什么样的硬件地址?

ARP的作用:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址。

要点

  • 地址解析ARP在主机的ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。

  • 当主机A向B发送数据报时,如果ARP缓存内有B的IP地址,就查出对应硬件地址。如果没有,就会广播一个ARP请求分组,原理如下图。

    image-20220102195450227

  • ARP缓存的内容都有一个生存时间,以避免硬件的更改。

# 4.2.5 IP数据报的格式

image-20220102195641806

IP数据报的各个字段:

  • 版本:通信双方使用的版本必须一致(ipv4,ipv6)
  • 首部长度
  • 区分服务,一般情况下都不使用
  • 总长度:理论最大长度为65535字节,实际中不可超过数据链路层规定的MTU值
  • 标识:超过MTU而分片时使用
  • 标志:占3位但仅仅有两位有意义,最低位MF=1表示后面还有分片,中间为DF=0表示允许分片
  • 片偏移:以8个字节为偏移单位
  • 生存时间(TTL):Time to Live,表明数据包在网络中寿命,路由器每跳转一次,TTL减一,防止无法到达的数据包在网络中兜圈子。最大数值255。设置TTL为1,表名该数据报仅在局域网中传输。
  • 首部检验和
  • 源地址
  • 目的地址

IP数据报首部还有段可变部分,用于增加功能,但很少使用。

# 4.2.6 转发分组流程

image-20220102200546016

默认路由:减少路由表所占空间和搜索路由表的时间。在一个网络只有很少的对外连接时很好用。

# 4.3 划分子网和构造超网

# 4.3.1 划分子网

  1. 从两级IP地址到三级IP地址

    在IP地址中增加了一个子网号字段,这种做法叫划分子网(subnetting)

    • 一个拥有很多物理网络的单位,可将所属的物理网络划分为若干个子网,这个单位对外仍表现为一个网络。
    • 划分子网的方法是从主机号借用若干位作为子网号,主机号减少相应位数。
  2. 子网掩码

    通过子网掩码与IP地址按位与得到划分的子网的地址。

    使用对应类地址的默认子网掩码与IP地址按位与,应当得出该IP的网络地址

    子网掩码是一个网络或一个子网的重要属性

# 4.3.2 分组转发

image-20220102201328744

# 4.3.3 无分类编址CIDR(构造超网)

无分类域间路由选择CIDR(Classless Inter-Domain Routing)

  • CIDR消除了ABC类地址和划分子网的概念,IP地址回到两级编址,分为网络前缀和主机号
  • CIDR记法/斜线记法,标记网络前缀所占的位数
  • CIDR的32位地址掩码,一串1就是网络前缀位数,剩余部分为一串0
  • 一个单位划分到一个CIDR地址块,仍可以分出子网,网络前缀位数增加

CIDR在路由匹配时,使用最长前缀匹配。

# 4.4 网际控制报文协议ICMP

ICMP(Internet Control Message Protocol)允许主机或路由器报告差错情况。ICMP报文作为IP数据包的数据发送。

# 4.4.1 ICMP报文的种类

ICMP分为ICMP差错报告报文和ICMP询问报文

image-20220102202328039

# 4.4.2 ICMP的应用举例

重要应用:分组网间探测PING(Packet InterNet Groper),用来测试两台机器之间的连通性。

PING是应用层直接使用网络层的一个例子,没有经过TCP或UDP。

另一个应用:traceroute(linux)/tracert(windows),得到目的主机的路由信息

# 4.5 互联网的路由选择协议

# 4.5.1 基本概念

  1. 理想算法

    正确、完整、计算简单、能适应网络拓扑变化、稳定、公平、最佳。

    静态选择:人工配置,小规模。

    动态选择:自适应

  2. 分层次的路由选择

    把互联网分为许多较小的自治系统(autonomous system)。一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。

    一个大的ISP就是一个自治系统,路由选择协议划分为两大类:

    • 内部网关协议IGP(Interior Gateway Protocol) 自治系统内部使用,RIP、OSPF
    • 外部网关协议EGP(External Gateway Protocol) 自治系统之间使用

# 4.5.2 内部网关协议RIP

  1. 工作原理

    分布式的基于距离向量的路由选择协议。

    每一个路由器都维护它到其他每一个目的网络的距离(跳数)的记录。RIP协议中跳数为16时表示不可达,只适用于小型互联网。

    三个要点:

    • 仅和相邻路由器交换信息
    • 交换的信息是当前本路由器所知道的全部信息,即现在的路由表
    • 按固定时间间隔交换路由信息
  2. 距离向量算法

    image-20220102203651355

实现简单、开销较小

# 4.5.3 内部网关协议OSPF

  1. 基本特点

    OSPF(Open Short Path First)开放最短路径优先,是为克服RIP的缺点(坏消息传的慢)开发出来的。实现较为复杂。使用了Dijkstra提出的最短路径算法。

    三个要点:

    • 向本自治系统所有路由器发送信息(洪泛法 flooding)
    • 发送的信息是与本路由器相邻的所有路由器的链路状态
    • 链路状态发生变化时才发送此信息

    互联网规模大时,比RIP好的多。

# 4.5.4 外部网关协议BGP

RIP和OSPF在自治系统之间由于规模大、性能不定等原因不合适。

因此,BGP力求寻找一条能够到达目的网络且比较好的路由,而不需要找最佳路由。

采用了路径向量(path vector)路由选择协议。

# 4.6 IPv6

IPv6使用了更大的地址空间,从32位扩充到128位,在可预见的将来不会用完

# 4.6.2 IPv6的地址

分为单播、多播和任播。任播的终点是一组计算机,但只交付其中一个。

每个IPv6地址站128位,使用冒号十六进制记法使地址简洁些。

零压缩:一串连续的0可以用两个连续的冒号替代,但一串地址仅能使用一个零压缩。

# 4.8 虚拟专用网VPN和网络地址转换NAT

# 4.8.1 虚拟专用网VPN

三个专用地址,互联网中的路由器不会转发:

image-20220102205307827

利用公用的互联网作为本机构各个专用网间的通信载体,这样的专用网称之为虚拟专用网。

# 4.8.2 网络地址转换NAT

专用网连接到互联网的路由器上装上NAT软件,NAT路由器有一个全球IP地址,会在通过互联网时进行转换。通过NAT路由器轮流使用有限数量的全球IP地址。

现在常用的NAT转换表会把端口号也用上,使得多个主机共用一个NAT路由器上的全球IP地址。

# 第五章 运输层

# 5.1 运输层协议概述

# 5.1.1 进程之间的通信

运输层向上面的应用层提供服务,属于面向通信的最高层,也是用户功能中的最低层。

# 5.1.2 运输层的两个主要协议

运输层的两个协议都是互联网的主要标准:

  1. 用户数据报协议UDP(User Datagram Protocol):不需要事先建立连接
  2. 传输控制协议TCP(Transmission Control Protocol):提供面向连接的服务

# 5.1.3 运输层的端口

在运输层使用协议端口号(protocol port number)来解决报文要传输给哪个进程的问题。

通常简称端口,把传送的报文交到目的主机的合适的端口,剩下的工作由TCP或UDP来完成。

16位的端口号允许有65535个不同的端口号。

运输层端口号分为以下两类:

  1. 服务器端使用的端口号

    1. 熟知端口号(0-1023),这些端口号指派给了一些最重要的应用程序,让所有的用户都知道。

      image-20220102215601577

    2. 登记端口号(1024-49151),为没有熟知端口号的应用程序使用

  2. 客户端使用的端口号,49152-65535,客户进程运行时才短暂选择

# 5.2 用户数据报协议UDP

# 5.2.1 UDP概述

主要特点:

  • 无连接的
  • 尽最大努力交付
  • 面向报文,发送方的UDP对应用程序交下的报文,既不合并,也不拆分,保留这些报文的边界。
  • 没有拥塞控制,利于某些实时应用
  • UDP支持一对一,一对多,多对一和多对多的交互通信
  • UDP首部开销小,只有8个字节

# 5.3 传输控制协议TCP概述

# 5.3.1 TCP主要特点

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

  • 每一条TCP连接只有两个端点

  • TCP提供可靠交付的服务

  • TCP提供全双工通信

  • 面向字节流,TCP把应用程序交下来的数据仅仅堪称一串无意义的字节流

    image-20220102220250155

    注:图中的连接是一条虚连接,TCP报文传输到IP层进行处理,而IP是无连接协议,TCP如何实现可靠传输,稍后讨论。

# 5.3.2 TCP的连接

TCP连接的端点叫做**套接字(socket)**或插口,端口号拼接到IP地址就构成了套接字。

每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。

一个IP地址可以有很多个不同的TCP连接,同一个端口号也可以出现在很多不同的TCP连接中。

# 5.4 可靠传输的工作原理

TCP采取适当的措施使得两个运输层之间的通信变得可靠。

# 5.4.1 停止等待协议

  1. 无差错情况

    发送报文,收到确认后发送下一条报文

  2. 出现差错

    检测出了差错便丢弃,或者传输错误B未收到,A在超过一段时间没有收到确认,便会自动重传

    image-20220102221229455

  3. 确认丢失和确认迟到

    若发送的确认信息丢失或是迟到,A将重新发送该分组,此时B将丢弃重复分组,并仍然向A发送确认。

    上述这种可靠传输协议称为自动重传请求ARQ(Automatic Repeat reQuest)

  4. 信道利用率

    停止等待协议很简单,但信道利用率很低。当往返时间RTT远大于分组发送时间时,信道利用率会非常低。出现重传还将进一步下降。

    为了解决该问题使用流水线传输提高传输效率,会使用滑动窗口协议连续ARQ协议

# 5.4.2 连续ARQ协议

最基本的概念:发送方将维持一个发送窗口,发送窗口内的n个分组都可连续发送出去。

发送方每收到一个确认,就把发送窗口向前滑动一个位置。

接收方则一般使用累计确认,对按序到达的最后一个分组发送确认,

而如果发送5个分组,第三个分组丢失了,接收方只会对第二个分组发出确认,后面的三个分组都会进行重传,这个情况就叫做Go-back-N(回退N)。

# 5.5 TCP首部

image-20220102222137034

字段:

  1. 源端口和目的端口

  2. 序号:字节流中每一个字节都按顺序编号

  3. 确认号:期望收到对方下一个报文段的第一个数据字节的序号

  4. 数据偏移

  5. 保留

  6. 紧急URG,通知报文段有紧急数据,优先传送

  7. 确认ACK,仅当ACK=1时确认号才有效。建立连接后所有报文段都必须把ACK置1

  8. 推送PSH,尽快交付,很少使用

  9. 复位RST,RST=1时,连接出现错误,需要释放连接

  10. 同步SYN,连接建立时用于同步序号

  11. 终止FIN,释放连接用

  12. 窗口:发送本报文段一方的接收窗口大小,是发送方设置发送窗口大小的依据

  13. 检验和

  14. 紧急指针

  15. 选项:长度可变,最长40字节

    最初规定了一种选项:MSS最大报文段长度(Maximum Segment Size),是数据字段的最大长度

    MSS应尽可能大,保证IP层不需再分片即可

# 5.6 TCP可靠传输的实现

# 5.6.1 以字节为单位的滑动窗口

  • TCP 的滑动窗口是以字节为单位的。
  • 发送方 A 和接收方 B 分别维持一个发送窗口和一个接收窗口。
  • 发送窗口表示:在没有收到确认的情况下,可以连续把窗口内的数据全部发送出去。
  • 接收窗口表示:只允许接收落入窗口内的数据。

image-20220103084028901

A收到B的确认号落在发送窗口内,A就可以使发送窗口向前滑动。

发送窗口通常只是发送缓存的一部分,发送缓存和发送窗口的前沿应当是重合的。

对于不按序到达的数据TCP未明确规定如何处理,丢弃的处理方式价位方便。

# 5.6.2 超时重传时间的选择

TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间差就是报文段的往返时间RTT。TCP会保留一个加权平均RTT,每次收到新的RTT,计算如下: $$ 新的RTT_S=(1-\alpha) \times (旧的RTT_S)+ \alpha \times (新的RTT样本) $$ 当$\alpha$接近0时,RTT更新较慢,反之更新较快。

超时重传时间RTO(RetransmissionTime-Out)应略大于加权平均往返时间。RFC 6298建议使用下式计算: $$ RTO=RTT_S+4 \times RTT_D(RTT偏差的加权平均值) $$ 在计算RTT时往往会遇到很多困难,例如如何判断响应是对于刚开始发送的报文还是超时重传的报文。

解决方案:报文段重传了就不采用样本/每重传一次,就把RTO增大一些。

# 5.7 TCP的流量控制

# 5.7.1 利用滑动窗口实现流量控制

流量控制(flow control):控制发送方的发送速率,让接收方来得及接收。

保证发送方的发送窗口不能超过接收方给出的接收窗口的数值。

当rwnd=0时,发送方不会再发送数据,直到接收方重新发送一个新的窗口数值。

如果持续不收到新的窗口数值,就会发送一个零窗口探测报文段,对方会确诊这个报文段时给出窗口数值。

# 5.8 TCP的拥塞控制

# 5.8.1 拥塞控制的一般原理

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞(congestion)。

拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。

image-20220103091439425

# 5.8.2 TCP的拥塞控制方法

TCP有四种拥塞控制算法:慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)、快恢复(fast recovery)。

发送方控制一个拥塞窗口(CWND),发送方让自己的发送窗口等于拥塞窗口

  1. 慢开始和拥塞避免

    慢开始:从小到大增加拥塞窗口数值

    每收到一个报文的确认,拥塞窗口可以增加最多SMSS(最大报文段)的数值

    每经过一个传输轮次,拥塞窗口就加倍。

    image-20220103092211946

    为了防止cwnd增长过快,设置一个慢开始门限ssthresh,当cwnd>ssthresh时,停止使用慢开始算法,转而使用拥塞避免算法。

    拥塞避免算法使得cwnd缓慢增大,每经过一个cwnd+1,在这个阶段有加法增大的特点。

    image-20220103092723289

    当cwnd=24时出现超时,拥塞避免算法会把ssthresh置为当前cwnd的一半12,同时设置cwnd=1,重新进入慢开始阶段。

  2. 快重传

    快重传要求接收方收到数据立即发送确认,收到失序报文段也发送已收到报文段的重复确认。发送方一旦收到三个重复确认,就会立即重传丢失的报文段。这样就不会出现超时。

  3. 快恢复

    当发送方执行了快重传,知道只是丢失了个别报文段,执行快恢复算法,调整门限值和拥塞窗口都为当前拥塞窗口的一半(ssthresh=cwnd/2,cwnd=ssthresh)

发送窗口的上限值为接收窗口和拥塞窗口中较小的一个。(Min[rwnd,cwnd])

在上述的拥塞避免阶段,拥塞窗口按线性规律增大(AI,Additive Increase),乘法减小(MD,Multiplicative Decrease),两者合在一起叫做AIMD算法。

# 5.8.3 主动队列管理AQM *

在队列长度到达警惕数值时就主动丢弃到达分组。

# 5.9 TCP的运输连接管理

# 5.9.1 TCP的连接建立

TCP建立连接的过程叫做握手,握手需要在客户和服务器之间交换3个TCP报文段。

image-20220103093935713

三握手:防止已失效的连接请求报文突然又传到B

# 5.9.2 TCP的连接释放

image-20220103094236005

A发送关闭报文后,B发送确认,但此时连接仅处于半关闭状态,B仍可向A发送数据。

B再向A发送释放报文段,确认号和上次确认关闭的确认号相同,等待A确认后关闭,A经过2MSL(最长报文段寿命)关闭。

# 第六章 应用层

# 6.1 域名系统DNS

# 6.1.1 域名系统概述

域名系统DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

域名到IP地址的解析是由分布在互联网上的许多域名服务器程序共同完成的。应用程序需要解析主机名时,就调用解析程序,解析程序把待解析的域名放在DNS请求报文中,以UDP用户数据报的方式发送给本地域名服务器。本地域名服务器把查找到的对应的IP地址返回。

# 6.1.2 互联网的域名结构

每一个域名都由一个标号(label)序列组成。而各标号之间用点隔开。

image-20220103095512725

2012年5月的顶级域名已经有326个。

顶级域名分为三大类:

  • 国家顶级域名(cn/us)
  • 通用顶级域名(com/net/org/...)
  • 基础结构域名:只有一个,arpa,用于反向域名解析

我国的二级域名分为类别域名和行政区域名。

image-20220103095805811

# 6.1.3 域名服务器

权限域名服务器保存所管辖的范围内所有主机的域名到ip地址的映射

  • 根域名服务器:所有顶级域名的IP地址,全世界已经有588个地点安装了根域名服务器
  • 顶级域名服务器(TLD服务器):管理该顶级域名服务器下的所有二级域名
  • 权限域名服务器:可以有很多层,当权限域名服务器还不能给出最后的回答,会告知下一级权限域名服务器的地址
  • 本地域名服务器:DNS请求最先查看的服务器,如果缓存内有目的地址,就不会再查询根域名服务器

主机向本地域名服务器的查询一般是递归查询

本地域名服务器向根域名服务器的查询一般是迭代查询。

# 6.4 万维网WWW

# 6.4.1 万维网概述

万维网是一个大规模的联机式的信息储藏所。万维网通过链接的方式从一个站点访问到另一个站点

image-20220103100631887

万维网使用统一资源定位符URL(Uniform Resource Locator)来标识万维网上的各种文档,交互遵循超文本传输协议HTTP(HyperText Transfer Protocol),它是应用层协议,使用TCP连接进行可靠传送。同时,万维网文档使用超文本标记语言HTML(HyperText Markup Language)。

# 6.4.2 统一资源定位符URL

URL的一般形式:<协议>://<主机>:<端口>/<路径>

若您通过html方式访问本笔记,由于本笔记未部署在默认的80或443端口,地址栏应当就是一个完整的url。

  • 使用http的html:http://<主机>:<端口>/<路径>,默认端口号为80时,可省略,若再省略路径,URL就会指向设定的主页。对于本笔记在互联网上部署的站点,省略路径后应当能看到默认的tomcat页面。

# 6.4.3 超文本传输协议HTTP

面向事务的应用层协议。是无状态的。而如果要包含状态,可使用Cookie。

# 6.4.4 万维网的文档

  1. 超文本标记语言HTML

    HTML是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍。

    不是协议,只是一种使用的语言。

  2. 动态文档

    普通的html文档是最基本的一种,即静态文档,静态文档存储在万维网服务器中,用户浏览的过程中不会改变。本笔记在网页上的部署就是静态文档。

    动态文档则是指用户访问时由应用程序动态创建(例如jsp)。动态文档有报告最新消息的能力。

  3. 活动万维网文档

    活动文档是一种提供屏幕连续更新的技术。对于服务器来说,这是一个静态文档。但在浏览器中活动文档可以在浏览器端运行,典型案例是JavaScript。本笔记的目录就是使用JavaScript在客户端动态生成的。

# 6.5 电子邮件

电子邮件(e-mail)是互联网上使用的最多和最受用户欢迎的一种应用。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中。收件人可在自己方便时上网到自己使用的邮件服务器进行读取。

image-20220103102520392

邮件地址的格式:

用户名@邮件服务器的域名

用户名在邮件服务器中应当是唯一的。

# 6.5.2 SMTP简单邮件传送协议

  1. 连接建立

    发送方服务器有邮件要发送时,使用SMTP熟知端口25与接收方建立TCP连接。

  2. 邮件传送

  3. 连接释放

# 6.5.4 邮件读取协议POP3和IMAP

邮局协议POP:简单、功能能优先。用户代理运行POP客户端程序,服务器运行服务器程序。用户从服务器读取了邮件,服务器就会将其删除。

网际报文存取协议IMAP:建立TCP连接,首先能看到邮件首部,需要打开时才传送到计算机上。且用户若未发出删除邮件的命令,IMAP服务器邮箱的邮件将一直保留。

# 6.6 动态主机配置协议DHCP

为了省去给计算机配置IP地址的麻烦,使用动态主机配置协议(Dynamic Host Configuration Protocol),提供了即插即用联网的机制。

计算机连入网络时向DHCP服务器发送发现报文(DHCPDISCOVER),DHCP服务器从数据库查找或分配新的IP地址给机器。

每个网络至少会有一个DHCP中继代理(通常是一台路由器),配置了DHCP服务器的IP地址信息,收到请求时向DHCP转发。DHCP分配的IP地址是临时的。

# 第七章 网络安全

# 7.1 网络安全问题概述

# 7.1.1 计算机网络面临的安全性威胁

两大类威胁:

  • 主动攻击

    • 篡改

    • 恶意程序:计算机病毒、计算机蠕虫、特洛伊木马、逻辑炸弹、后门入侵、流氓软件

    • 拒绝服务DoS(Denial of Service)

      攻击者向互联网上的某个服务器不停地发送大量分组,使服务器无法提供正常服务。

      若成百上千的网站集中攻击,就称为分布式拒绝服务DDoS(Distributed Denial of Service)

  • 被动攻击:从网络上窃听内容

# 附录 练习题解析

本练习解析为笔者本人根据自己学习理解撰写,不保证正确性

# 4.10

试辨认以下IP地址的网络类别

最容易记的辨认方法:IP地址转换为二进制,第一位为0-A类网络,前两位为10-B类网络,前三位为110-C类网络

直接判断十进制需要花费一点时间记忆,但辨认速度大幅提升:

第一位为0,代表前八位的二进制范围是0000,0000-0111,1111,转换为点分十进制的第一个数字就是0~127。由于127作为本地软件环回测试的地址,0则表示本网络,因此A类地址点分十进制第一个数字为1~126。

前两位为10,代表二进制范围是1000,0000-1011,1111,因此第一个数字范围为128~191

前三位为110,代表二进制范围是1100,0000-1101,1111,因此第一个数字范围为192~223

  1. 128-B类地址
  2. 21-A类地址
  3. 183-B类地址
  4. 192-C类地址
  5. 89-A类地址
  6. 200-C类地址

# 4.20

设路由器建立了以下路由表,下列五个分组的目的地址分别为:

image-20220109084247494

  1. 128.96.39.10,经过与子网掩码255.255.255.128与运算,网络号为192.96.39.0,下一跳接口m0
  2. 128.96.40.12,经过与子网掩码255.255.255.128与运算,网络号为192.96.40.0,下一跳R~2~
  3. 128.96.40.151,经过与子网掩码255.255.255.128与运算,网络号为192.96.40.128,下一跳默认路由R~4~
  4. 192.4.153.17,经过与子网掩码255.255.255.192与运算,网络号为192.4.153.0,下一跳R~3~
  5. 192.4.153.90,经过与子网掩码255.255.255.192与运算,网络号为192.4.153.0,下一跳R~3~

# 4.24

试找出可能产生以下数目的A类子网的子网掩码(采用连续掩码)

主要注意点为该种划分子网方式时:子网号不能为全0或全1,以及是A类子网

  1. 2 个

    子网数目为2,即代表存在2个网络,从主机号内划分n位给子网,2^n^-2=2,n=2

    因此子网掩码为1111,1111,1100,0000,0000,0000,0000,0000

    即255.192.0.0,产生两个子网,子网号分别为64和128

  2. 6个

    2^n^-2=6,2^n^=8,n=3

    子网掩码为1111,1111,1110,0000,0000,0000,0000,0000

    即255.224.0.0

  3. 30个

    2^n^-2=30,n=5

    子网掩码255.248.0.0

  4. 62个

    n=6

    子网掩码255.252.0.0

  5. 122个,该题没有2^n^-2=122的解,只能往大了算,即2^n^=128,n=7

    子网掩码255.254.0.0

  6. 同上

    子网掩码255.255.0.0

# 4.32

以下的地址前缀哪一个地址与2.52.90.140匹配?

1.0/4 2.32/4 3.4/6 4.80/4

由于所有的网络前缀都不超过6位<8,因此只要将2转换成二进制0000,0010对比即可,可以看出前6位全为0

  1. 0000,0000:前四位0000,匹配

  2. 0010,0000:前四位0010,不匹配

  3. 0000,0100:前六位0000,01,不匹配

  4. 0101,0000:前四位0101,不匹配

# 4.33

下面的前缀中的哪个和地址152.7.77.159和152.31.47.252都匹配?

  1. 152.40/13
  2. 153.40/9
  3. 152.64/12
  4. 152.0/11

首先排除第二个,前八位就不同。其余三个只需对比第二个十进制数字即可

7转换为二进制:0000,0111

31转换为二进制:0001,1111

只有前(8)+3位相同,要同时匹配,子网掩码不能超过8+3=11位,直接得出答案为第四个

# 4.34

与下列掩码相对应的网络前缀各有多少位?

没什么技巧,二进制有几个1就有几位

  • 192.0.0.0:两位
  • 240.0.0.0:四位
  • 255.224.0.0:8+3=十一位
  • 255.255.255.252:3*8+6=三十位

# 4.41

image-20220109101629041

首先把下一条路由器都置为C,距离+1

N~2~ 5 C

N~3~ 9 C

N~6~ 5 C

N~8~ 4 C

N~9~ 6 C

遍历该路由表

N~2~ 5 C——已有,下一跳同样为C,替换原路由

N~3~ 9 C——没有,加入原路由表

N~6~ 5 C——已有,下一跳不为C,路径更短,替换原路由

N~8~ 4 C——已有,下一跳不为C,路径不变,无操作

N~9~ 6 C——已有,下一跳不为C,路径更长,无操作

替换后路由:

image-20220109102525581

# 4.42

image-20220109102331764

image-20220109102341776

每一条下一跳置为C,距离+1

N~1~ 3 C

N~2~ 2 C

N~3~ 4 C

N~4~ 8 C

遍历

更短,替换原路由

同样为C,替换原路由(但距离没有变换)

更长,无操作

更长,无操作

image-20220109102702466

# 4.54

某单位分配到一个起始地址为14.24.74.0/24的地址块,该单位需要用到三个子网,它们三个子地址块的要求是:子网N~1~需要120个地址,子网N~2~需要60个地址,子网N~3~需要10个地址

需要120个地址,因此主机号需要7位,使用子网14.24.74.0/25

第一个子网网段为14.24.74.0-14.24.74.127,任取其中14.24.74.1-14.24.74.126中的120个地址即可

需要60个地址,主机号需要6位,使用子网14.24.74.128/26

第二个子网网段为14.24.74.128-12.24.74.191,任取14.24.74.129-14.24.74.190中的60个地址分配即可

最后一个需要10个地址,主机号需要4位,使用子网14.24.74.224/28

第三个子网网段为14.24.74.224-14.24.74.239,任取14.24.74.224-14.24.74.238中的10个地址分配即可

# 4.64

把以下IPv6地址用零压缩方法写成简洁形式

没什么技巧,就是概念,只写答案了:

  1. ::0F53:6382:AB00:67DB:BB27:7332
  2. ::004D:ABCD
  3. ::AF36:7328:0:87AA:0398
  4. 2819:00AF::0035:0CB2:B271

# 5.23

主机A向主机B连续发送了两个TCP报文段,其序号分别是70和100,试问:

  • 第一个报文段携带了多少个字节的数据

    70-99,按字节编址,30个字节

  • 主机B收到第一个报文段后发回的确认号应当是多少?

    期望收到的第一个字节序号:100

  • 如果B收到第二个报文段后发回的确认中确认号是180,试问A发送的第二个报文中数据有多少字节

    100-179,80个字节

  • 如果A发送的第一个报文段丢失,第二个报文段到达了B,B收到第二个报文段后确认号应该是?

    70,仍期望收到第一个报文

# 5.38

设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免,试分别求出第一轮次到第十五轮次传输的各拥塞窗口大小。说明每次拥塞窗口变化的原因。

  1. cwnd=1,ssthresh=8//慢开始

  2. cwnd=2,ssthresh=8

  3. cwnd=4,ssthresh=8

  4. cwnd=8,ssthresh=8

  5. cwnd=9,ssthresh=8//拥塞避免

  6. cwnd=10,ssthresh=8

  7. cwnd=11,ssthresh=8

  8. cwnd=12,ssthresh=8

  9. cwnd=1,ssthresh=6//超时,门限设为一半,cwnd=1,慢开始

  10. cwnd=2,ssthresh=6

  11. cwnd=4,ssthresh=6

  12. cwnd=8,ssthresh=6//拥塞避免

  13. cwnd=9,ssthresh=6

  14. cwnd=10,ssthresh=6

  15. cwnd=11,ssthresh=6

# 5.39

image-20220109145434518

  1. image-20220109145638570
  2. 1-6慢开始,23-26慢开始
  3. 6-16和17-22皆为拥塞避免
  4. 16为3ACK,因为cwnd仅减半,没有从1开始
  5. 22为超时,cwnd=1
  6. 第一轮次32,18时已经减半设置为21(16-17时设置),24轮已经设为13(22-23时设置)
  7. 第7轮,累加计算即可
  8. cwnd=sstresh=4,设为当前一半