仓库源文站点原文


title: 计算机网络复习 date: 2021-01-07 11:45:06 categories: 学习笔记 tag:


概述

计算机网络

互联网

ISP

互联网的组成

边缘部分

互联网的<font color=red>通信方式</font>:

互联网的核心部分(通信交换方式)

在互联网核心部分起特殊作用的是路由器。路由器是实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能

电路交换

使用电路交换通话之前,必须先拨号请求连接。当被叫用户听到交换机振铃音并摘机后,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路。这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用。<font color=red>在通话的全部时间内,通话的两个用户始终占用端到端的通信资源</font>。以下三个步骤称为电路交换

如果用户在拨号呼叫时电信网的资源已不足以支持此次呼叫,则主叫用户会听到忙音,表示电信网不接受用户的呼叫(例如对方正在通话中)

但使用电路交换来传送计算机数据时,其线路的的传输效率往往很低。这是因为计算机的数据是突发式地出现在传输线路上的,因此线路上真正用来传送的数据时间往往不到10%,甚至1%。浪费通信线路资源

分组交换

分组交换采用存储转发技术,我们把要发送的整块数据称为一个报文(message),在发送端,先把较长的报文划分成较短的、固定长度的数据段,每一个数据段前面添加上首部(header)构成分组(packet)。分组又称为包,分组的首部也可以称为包头。以下三个步骤

优点:

缺点:

分组交换

注:图中的报文交换即为将报文不拆分为较短的、固定长度的数据段的报文交换方式

计算机网络类别

网络性能

速率

速率的单位为 bit/s,有时写作bps,含义为:<font color=red>每秒传输的比特位个数</font>。注意,这与通常提及的网速单位不同,通常网速的单位为 B/s 而不是 b/s

{% raw %} $$1Gbps = 1000Mbps = 10^6 Kbps = 10^9 bps$$ {% endraw %}

{% raw %} $$1 B/s = 8 bps$$ {% endraw %}

带宽

通常带宽指代某个信号具有的频带宽度,单位为Hz

在计算机网络中,带宽和速率同义,单位为bit/s

吞吐量

在单位时间内,通过某个网络的实际数据量

时延

指数据从网络的一段传送到另一端所需要的时间

$$总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延$$

提高数据的发送速率只能减小数据的发送时延

时延带宽积

表示通信管道链路中总共可以容纳多少个比特

$$ 时延带宽积 = 传播时延 \times 带宽 $$

往返时间 RTT

$$有效数据率 = \frac{数据长度}{发送时间 + RTT}$$

利用率

利用率有信道利用率和网络利用率两种

其他非性能特征

计算机网络体系结构

网络协议

规定了所交换数据的格式以及有关的同步问题规则称为网络协议,主要由下面三个要素构成

网络层次

分层的好处:

五层协议结构

应用层(application layer)

通过应用进程间的交互来完成特定网络应用。对于不同的网络应用需要有不同的应用层协议。例如 DNS(域名系统),HTTP(万维网应用),SMTP(电子邮件协议)

运输层(transport layer)

负责向两台主机中进程通信提供通用的数据传输服务。主要有两种协议:

网络层(network layer)

负责为分组交换网上的不同主机提供通信服务,将运输层产生的报文段或用户数据封装成分组或包进行传送。IP 协议

数据链路层(data link layer)

将IP数据报组装成帧(framing),添加控制信息(同步信息、地址信息、差错控制)。检查所收到的帧中是否有差错。与 mac 地址有关

物理层(physical layer)

传输比特流

实体、协议、服务 和服务访问点:

物理层

物理层的主要任务是<font color=red>确定与传输媒体的接口有关的一些特性</font>

数据通信的基础知识

数据通信模型

一个数据通信系统可以划分为三大部分

通信系统中的术语

信道的极限容量

物理层下面的传输媒体

信道复用技术

数字传输系统

宽带接入技术

数据链路层

链路层使用的信道分为两种类型:

使用点对点信道的数据链路层

数据链路和帧

数据链路层协议

封装成帧

透明传输

由于数据部分也有可能出现 EOT 的字符导致数据链路层会错误的找到帧的边界。若发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”,则在前面插入一个转义字符“ESC”(其十六进制编码是 0x1B),如果出现了转义字符“ESC”,则再插入一个“ESC”。这种办法称为字节填充

差错检验

<font color=red>CRC(循环冗余检验)</font>

在发送端,先把数据划分为组,每组 $k$ 个比特,将每组的数据用二进制的模2运算进行$2^n$乘的运算,然后在每组数据后添加 $n$ 位冗余码。

假定本组数据为 $M = 101001$,$n = 3$。假定除数$P = 1101(n + 1位)$ 首先在 $M$ 后添加 $n$ 位 $0$,得到 $2^nM = 101001000$ 将新得到的值与 $P$ 进行模2除法(进行异或运算,直到最后一位)

        110101 (商)
    +---------
1101|101001000 (被除数)
     1101
    ----------
      1110     (每次运算使用的是异或运算,而不是减法)
      1101
    ----------
       0111    (每次运算时,如果首位是0,则商为0,如果首位是1,则商为1)
       0000
    ----------
        1110
        1101
    ----------
         0110
         0000
    ----------
          1100
          1101
    ----------
           001 (余数R)

将余数$R = 001$添加至 $M$ 后,得到CPC后的结果为 $101001001$

CPC校验只能判断这个帧是否有差错,不能判断哪一位或者哪几位除了差错

仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)。

“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制

在数据后面添加上的冗余码称为帧检验序列 FCS

点对点协议PPP

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

局域网的数据链路层

共享信道技术:

<font color=red>CSMA/CD 协议(Carrier Sense Multiple Access with Collision Detection 载波侦听多路访问/碰撞检测)</font>

<font color=red>截断二进制指数退避</font>

当发送的数据包发生碰撞冲突时,以太网使用截断二进制指数退避法

例如,在第1次重传时,k=1,随机数 $r$ 从整数 $${0,1}$$ 中选一个数。因此重传推迟的时间是0或争用期,在这两个时间中随机选择一个。整数范围的选择为2的k次方个数 若再发生碰撞,则重传时,k=2,随机数 $r$ 就从整数 $${0,1,2,3}$$ 中选一个数。因此重传推迟的时间是在$0, 1, 2, 3$倍的争用期这4个时间中随机抽取一个 同样,若在发生碰撞,则重传时k=3,随机数 $r$ 就从整数 $${0,1,2,3,4,5,6,7}$$ 中选一个数。以此类推

同时,以太网规定了最短的帧长为 64 字节,如果要发送的数据小于此数值,则必须要填入一些字节使得帧长不小于 64 字节。同样,如果发送方发送的帧数据在争用期(64比特)内没有发送碰撞,则后续发送的数据一定不会发生碰撞

对于接收方,如果接收到的帧小于 64 字节,则可以认为这是由于冲突而异常中止的无效帧

同时为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备,以太网还规定了帧间最小间隔 $9.6 \mu s$

CSMA/CD 协议要点归纳

以太网每发送一帧,一定要把已发送是帧保留一下,如果在争用期内检测到了碰撞,则此帧需要重传

使用集线器的星形拓扑

以太网的信道利用率

$$S_{max} = \frac{T_0}{T_0 + \tau} = \frac{1}{1+\frac{\tau}{T_0}}$$ $$T_0 = \frac{帧长(bit)}{发送速率(bit/s)}$$

mac地址

mac地址是计算机中固化在适配器ROM中的地址,简单来说mac地址由电脑硬件直接决定,<font color=red>长度为 48 位(6 个字节)</font>。制作适配器的厂商通常需要向 IEEE 的 RA 购买 OUI(组织唯一标识符,也可以理解为是mac地址段)

适配器过滤

适配器在接收到 mac 帧后,先用硬件检查 mac 帧中的目的地址,如果是发往本站的帧则收下,否则丢弃掉。 这里“发往本机的帧”包括以下三种:

一些适配器可以设置为混杂模式,工作在混杂方式的适配器会将以太网上传输的所有帧都接受下来。这样实际上是窃听其他站点的通信

mac帧格式

mac帧格式

无效的 mac 帧

扩展的以太网

网络层

网络层提供的两种服务

方面 虚电路服务 数据报服务(采用的)
思路 可靠的通信应当由网络来保证 可靠的通信应当由用户主机来保证
连接的建立 必须有 不需要
终点的地址 仅在建立连接阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出现故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按照顺序到达终点 到达终点的顺序不一定按照发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

网络协议 IP

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

虚拟互连网络

网络上使用的中间设备

分类的 IP 地址

IP地址有两个固定长度的字段组成,第一个字段为网络号,第二个为主机号。一个 IP 地址在整个互联网范围内是唯一的,

IP地址分类

IP 地址的指派范围

网络类别 最大可以指派的网络数 第一个可以指派的网络号 最后可以指派的网络号 每个网络中的最大主机数
A 126($2^{7} - 2$) 1 126 16777214($2^{24} - 2$)
B 16383($2^{14} - 1$) 128.1 191.255 65534($2^{14} - 1$)
C 2097151($2^{21} - 1$) 192.0.1 223.255.255 254

特殊的 IP 地址

网络号 主机号 源地址使用 目的地址使用 代表的含义
0 0 可以 不可以 本网络上的本主机
0 非全0且非全1 可以 不可以 在本网络上的某台主机
全1 全1 不可以 可以 在本网络上进行广播
非全0且非全1 全1 不可以 可以 对某个网络上的所有主机进行广播
127 非全0且非全1 可以 可以 本机

IP 地址的一些特点

IP 地址与硬件地址(mac地址)

ARP(地址解析协议)

将网络层得到的 IP 地址转为下一跳的 mac 地址的过程(将 IP 地址映射到 mac 地址)

为什么<font color=red>**不直接使用 mac 地址进行通信**</font>

全世界存在各种各样的异构网络,它们使用不同的硬件地址(网络的异构性体现),要使这些异构网络能够进行通信,就需要非常复杂的硬件地址转换工作,因此由用户主机来完成这件事几乎是不可能的,使用统一的IP地址,就使得所有的主机都在同一个IP网络内进行通信。

mac地址不具备归属地特征,不能作为地址

为什么<font color=red>**不直接使用 IP 地址进行通信**</font>

  1. 因为并非每个主机都一个公网IP,很多主机都是使用的内网IP,依据NAT对外访问
  2. IP地址是动态变化的

IP 数据报的格式

IP 数据报格式

常见的协议 ICMP IGMP IP(一种特殊的数据报) TCP UDP IPv6
协议字段值 1 2 4 6 17 41

IP 层的转发分组的流程

划分子网

由于两级 IP 地址不够灵活,于是 IP 地址从原来的两级结构改为了通过子网掩码划分网络的 CIDR (无分类域间路由选择)模式,即 IP + 子网掩码的方式,不再有 A类、B类、C类的划分

$$IP = 网络前缀 + 主机号$$

$$网络前缀 = IP \space \& 子网掩码$$

通常可以使用“斜线记法”来表示 IP,即在 IP 地址后加上斜线,并写上网络前缀所占的位数

例如 IP = 128.14.35.7/20 表示 128.14.35.7 的前 20 位作为网络前缀,剩下的作为主机号。即网络前缀为:128.14.32.0

最长前缀匹配

由于使用了变长的子网掩码,导致路由表中会出现多个匹配的结果,此时应当选择匹配结果中具有最长网络前缀的路由

子网的划分方法

例如,一个自治系统内有 5 个局域网,该自治系统分配到的 IP 地址块为 218.75.230.0/24 将此网络划分为 5 个子网,每个子网的设备数如下:9、28、15、13、4 首先将所有的子网的设备数加2后,向上取整至2的幂次倍数,然后再将所有值分割为最小值的 $k$ 次倍,假定最小值为 $2^n$,这里取 $n = 3$

ID 设备数 加2后 取整后 分割后
1 9 11 16 2个8
2 28 30 32 4个8
3 15 17 32 4个8
4 13 15 16 2个8
5 4 6 8 1个8

总计需要 13 个 长度为 8 的子网 由于 IP 地址块为 218.75.230.0/24,即可以分配的位数为 $t = 32 - 24 = 8$ 位的字符,相当于可以划分出 $2^{t - n} = 32$ 个子网,每个子网可以容纳 $6$ 台设备,此时掩码为 255.255.255.248 $$248 = \begin{matrix}\underbrace{11111} \ t个1 \end{matrix} \space \begin{matrix}\underbrace{000} \ n个0 \end{matrix} = 11111000 = 248$$ 可以分割整个 IP 地址块得到

ID 网络号 掩码
1 218.75.230.0 255.255.255.248
2 218.75.230.8 255.255.255.248
3 218.75.230.16 255.255.255.248
4 218.75.230.24 255.255.255.248
5 218.75.230.32 255.255.255.248
6 218.75.230.40 255.255.255.248
7 218.75.230.48 255.255.255.248
8 218.75.230.56 255.255.255.248
9 218.75.230.64 255.255.255.248
10 218.75.230.72 255.255.255.248
11 218.75.230.80 255.255.255.248
12 218.75.230.88 255.255.255.248
13 218.75.230.96 255.255.255.248

由于只需要 13 个子网,这里只罗列出前 13 个,实际上可以罗列出 32 个 按照设备数排序后划分子网得到(注意,合并后,掩码也要合并)

ID 设备数 加2后 取整后 分割后 子网号 子网掩码
2 28 30 32 4个8 218.75.230.0 255.255.255.224
3 15 17 32 4个8 218.75.230.32 255.255.255.224
4 13 15 16 2个8 218.75.230.64 255.255.255.240
1 9 11 16 2个8 218.75.230.80 255.255.255.240
5 4 6 8 1个8 218.75.230.96 255.255.255.248

ICMP(网际控制报文协议/互联网控制消息协议)

它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决

ICMP报文格式

ICMP报文类型

报文类型 类型值 种类
终点不可达 3 差错报告报文
时间超过 11 差错报告报文
参数问题 12 差错报告报文
改变路由 5 差错报告报文
回送请求和回答 8或0 询问报文
时间戳请求和回答 13或14 询问报文

不应发送 ICMP 差错报文的类型

ICMP 的应用

互联网的路由选择协议

路由表中的路由是如何动态更新获取的

理想的路由算法

分层次的路由选择协议

RIP

一个基于距离向量的路由选择协议

距离指的是跳数,每经过一次路由器则跳数加一,相邻的路由器的跳数为1,跳数最多为 15,超过 15 表示不可达。

RIP 协议会按照固定的时间间隔和相邻的路由器交换自己的路由表,经过若干次交换后,所有路由器都会得到当前网络中任意一个网络的最优的下一跳路由器地址

算法逻辑:

RIP报文格式

RIP的报文由首部和路由部分组成

RIP 协议的优点:实现简单,开销小,使用 UDP RIP 协议的问题:但是 RIP 能使用的最大距离为 15,限制了网络的规模。当网络出现故障时,要经过比较长的时间才能将此信息传递到所有的路由器(好消息传播得快,坏消息传播的慢)

OSPF

开放最短路径优先协议

使用分布式的链路状态协议,所有路由器都拥有整个网络的拓扑结构图

特点

有时为了能够解决大型网络拓扑图太大的问题,OSPF 可以将网络划分为多个不同的区域,每个路由器仅知道本区域内的拓扑情况,区域之间通过区域边界路由器进行交互

OSPF 不使用 UDP 而是直接用 IP 数据报传送,减少信息的通信量

OSPF报文结构

OSPF的特点

BGP

边界网关协议(BGP)采用路径向量(path vector)路由选择协议。协议交换路由信息节点数量级是自治系统个数的数量级。刚开始运行时,BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分。

ISP

路由器

路由选择和分组转发

IPv6

<font color=red>IPv6 的长度为 128 位,而 IPv4 仅 32 位</font>

IPv4至IPv6的变化:

IP 多播

实现一对多通信,主机只需要发送一个数据报,路由器负责复制数据报

IGMP

虚拟专用网络(VPN)和网络地址转换(NAT)

IP 地址中有一部分被指定为专有地址。当使用的是专有地址时,说明此地址并非是互联网上的地址,而是本地局域网(专用网)内的地址

VPN

由于这些地址是专有地址,无法直接在互联网上访问到,所以可以使用 VPN 技术来实现内网的访问。VPN的数据在互联网段是加密数据,所以效果上和真正的专用网一样。

NAT

每个专用网拥有至少一个互联网的 IP 地址,当专用网内的主机需要和互联网通信时,通过此专用网的 IP 地址和不同端口来临时当作主机的 IP,实现对互联网的访问

多协议标志交换(MPLS)

运输层

运输层的协议概述

进程之间的通信

运输层使得两台主机之间的交互细化到应用程序的进程

运输层的一个很重要的功能:复用和分用

两个主要协议

应用 应用层协议 运输层协议
名字转换 DNS(域名服务器) UDP
文件传送 TFTP(简单文件传送协议) UDP
路由选择协议 RIP(路由信息协议) UDP
IP 地址配置 DHCP(动态主机配置协议) UDP
网络管理 SNMP(简单网络管理协议) UDP
远程文件服务器 NFS(网络文件系统) UDP
IP 电话 专用协议 UDP
流式多媒体通话 专用协议 UDP
多播 IGMP(网际组管理协议) UDP
电子邮件 SMTP(简单邮件传送协议) TCP
远程终端接入 TELNET(远程终端协议) TCP
万维网 HTTP(超文本传送协议) TCP
文件传送 FTP(文件传送协议) TCP

运输层的端口

将不同的应用程序绑定至不同的端口,通过端口来区别不同的应用程序。系统同时拥有 65535 个不同的端口

应用程序 端口号
FTP 21
TELNET 23
SMTP 25
DNS 53
TFTP 69
HTTP 80
SNMP 161
SNMP(trap) 162
HTTPS 443

UDP

UDP 概述

UDP 的首部格式

UDP首部格式

TCP(传输控制协议)

TCP特点

可靠传输的工作原理

以上的逻辑称为自动重传请求(ARQ)

TCP 报文段的首部格式

TCP首部格式

TCP报文段首部的前20个字节是固定的

TCP 可靠传输的实现

以字节为单位的滑动窗口

TCP窗口

TCP 的滑动窗口是以字节为单位的,滑动窗口内的所有数据包会一次性发送出去,窗口内的数据表示已经发送但是未被确认。假定主机 A 收到的来自主机 B 的确认包的 ACK 为 36,那么滑动窗口将会前移至 36

超时重传时间的选择

基于 RTT,定义一个值 $$RTT_S$$,此值基于新的 RTT 不断更新,更新公式如下:

$$RTT_S = (1 - \alpha) \times (RTT_S) + \alpha \times RTT$$

通常 $\alpha = 0.125$

所以定义超时重传时间

$$RTO = RTT_S + 4 \times RTT_D$$

其中 $RTT_D$ 为 $RTT$ 的偏差的加权平均值,其公式如下

$$ \begin{cases} RTT_D = RTT / 2,第一次 \ RTT_D = (1 - \beta) \times RTT_D + \beta \times |RTT_S - RTT|, 后续的情况 \end{cases} $$

通常 $\beta = 0.25$

选择确认 SACK

TCP 流量控制

TCP 流量控制让发送方发送速率不要太快,要让接收方有足够的缓存来接受数据

TCP流量控制

如图中所示,通过 TCP 数据结构中的窗口,实现双方的流量的控制。接收方(R)在发送确认包的同时,将当前的缓存空间发送给发送方(T),使得双方能够控制传输的速度。而当程序将收到的数据读出后,再将新的空间剩余发送给发送方

TCP 零窗口死锁:当图片中第五个数据包因为意外丢失时,发送方(T) 一直在等待接收方(R) 发送的新的窗口信息,而接收方(R)也一直在等待发送方(T)发送新的数据,导致了死锁 解决办法:为每个连接设有一个持续计时器。当连接的一方收到对方的零窗口通知时,就启动计时器,在计时器到达一定的时间内,就发送一个零窗口探测报文段,而对方如果再次回复零窗口,则重置计时器,如果回复的不是零窗口,则死锁解开

TCP 的传输效率

TCP 拥塞控制

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

主要是两类控制:

实现拥塞控制的四个方法

慢开始

拥塞避免

快重传

快恢复

TCP拥塞控制1

TCP拥塞控制2

图中,0-1的过程为慢开始,1-2的过程即为拥塞避免,2-3的过程中出现了数据包确认超时,4-5的过程中发生了快重传和快恢复

TCP 的运输连接管理

连接的三个阶段

三个问题

TCP 的连接建立

TCP三次握手

TCP 的连接释放

应用层

DNS(域名服务器)

递归是用户只向本地DNS服务器发出请求,然后等待肯定或否定答案。而迭代是本地服务器向根DNS服务器发出请求,而根DNS服务器只是给出下一级DNS服务器的地址,然后本地DNS服务器再向下一级DNS发送查询请求直至得到最终答案

FTP(文件传送协议)

提供文件的交互式访问

TFTP(简单文件传送协议)

TELNET(远程终端协议)

明文的远程终端协议,<font color=red>目前通常使用 ssh(Secure Shell 加密的网络传输协议) 来代替 TELNET</font>

WWW(万维网)

HTTP

明文传输的超文本传输协议,由于是明文传输,很容易受到中间人攻击,植入广告

HTTPS

加密传输的超文本传输协议,不会被中间人攻击

电子邮件

SMTP(简单邮件传送协议)

IMAP和POP3(邮件接受协议)

操作位置 操作内容 IMAP POP3
收件箱 阅读、标记、移动、删除等操作 客户端与邮件更新同步 仅在客户端内
发件箱 保存到已发送 客户端与邮件更新同步 仅在客户端内
创建文件夹 新建自定义文件夹 客户端与邮件更新同步 仅在客户端内
草稿 保存草稿 客户端与邮件更新同步 仅在客户端内
垃圾文件夹 接受并移入垃圾文件夹的邮件 客户端与邮件更新同步 仅在客户端内
广告邮件 接受并移入广告邮件夹的邮件 客户端与邮件更新同步 仅在客户端内

DHCP(动态主机配置协议)

计算机网络实验复习

重点总结