Contents

计算机网络考试复习(详细版)

计算机网络总复习

第一章 概述

计算机网络:结点 node(计算器、交换机、路由器)+链路 link

功能:数据通信、资源共享

Internet TCP/IP ISP 局域网与广域网

电路交换:突发式传输、适用低频

传输时间少、有序到达、但要建立连接、不灵活、利用率低、无差错控制

报文交换:无需连接、存储转发、利用率较高、差错控制、重传代价高

无需连接、有序到达、但转发时延高

分组交换:无需连接、存储转发、分组定长(拆分为多个分组)、重传代价低

更加灵活,前面两种的折中、利用率非常高、传输时间少、支持差错控制、但需要携带很多额外控制信息、且不是有序到达

网络分类

WAN、MAN(城域网)、LAN、PAN(个域网)

广播、点对点

总线型(争用问题)、环形、星型(点对点)、网状(灵活但控制复杂线路成本高)

公用网、专用网

有线网、无线网

性能指标

bps、kbps、Mbps、Gbps、Tbps (按照$$10^3$$递增)

速率(数据率、比特率、数据传输率)bps

带宽:某信道允许通过的最高数据率 bps 或者表示 信号频带范围 Hz

吞吐量:某个网络或节点、信道单位时间内的实际通过的数据量(实际的综合数据率)B

时延:数据一端传送到另一端所需的时间

发送时延/传输时延=$\frac{数据长度(bit)}{发送速率(bit/s)}$:将数据推向信道所花费的时间(准备过程)

传播时延=$\frac{信道长度(m)}{电磁波在信道中的传播速度(m/s)}$:电磁波在信道中传播一定的距离所花费的时间(传播过程)

处理时延:受网络负载、路由器性能等诸多因素影响(一般不考虑)

排队时延:数据排队进入、发出路由器所花的时间

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

时延带宽积(bit):单向传播时延 x 带宽

往返时延 RTT:从发送方发送完数据,到发送方收到来自接收方的确认数据总共经历的时间

信道利用率:某个信道有百分之多少的时间是有数据通过的。

利用率低会浪费带宽、利用率太高会导致网络拥塞

分层结构

每一个层次负责实现一个或多个功能,上一层实体通过“接口”,请求相邻下一层的“接口”,SAP(服务访问点)

实体、对等实体、协议(水平):通信规则集合、服务(垂直):下层提供给上层的功能调用;

OSI:7 层法律标准;TCP/IP 模型:事实

五层模型(教学用)

PDU:协议数据单元、SDU:服务数据单元、PCI:协议控制信息

协议三要素:语法(格式)、语义、同步(时许)

OSI 参考模型 任务 功能
应用层 实现特定网络应用
表示层 解决不同主机上信息不一致的问题 数据格式转换
会话层 管理进程间会话 会话管理
传输层 实现端到端通信 复用、分用、差错控制、流量控制、连接管理、可靠数据传输
网络层 将分组从源结点转发到目的结点 路由选择、分组转发、拥塞控制、网际互联、差错控制、流量控制、连接管理、可靠数据传输
数据链路层 确保相邻节点之间的链路逻辑上无差错 差错控制、流量控制
物理层 实现相邻节点比特之间的传输 需定义电路接口参数、信号的含义/电气特性等

区别 TCP/IP 模型,对上可以提供无连接不可靠的 IP 和 UDP 服务,而 OSI 只能提供有连接、可靠的服务

第二章 物理层

任务:实现相邻节点之间比特(0 或 1)的传输

通信原理

信源、信宿、信号、信道

信源通过信道传输信号给信宿

信号是数据的载体,数据是信息的实体

信号有数字信号(离散,如电压正负)、模拟信号(连续,波形)

每一个信号称作一个码元

一个码元可以携带的比特数据位:一个周期内可能出现 K 种信号

$$ 1码元=\log_2Kbit $$

波特 Baud(率):每秒传输几个码元(码元/秒)

比特率:每秒传输几个比特(bit/s)

通信原理中的带宽:某信道允许通过的信号频带范围 Hz(最大频率-最小频率)

噪声:对信道产生干扰,影响信号的数据传输效率。

电磁波、电压会受到环境电场、磁场的干扰

奈氏准则

没有噪声(理想低通信道)的信道来说,它的极限波特率是 2W 波特,其中 W 是信道的频率带宽 Hz。

$$ 极限比特率=2W\log_2Kb/s $$

K 为一个信号周期内可能出现的信号种类

香农定律

有噪声、带宽有限的信道,则

$$ 极限比特率=W\log_2(1+\frac{S}{N})(bit/s) $$

W:信道的频率带宽(Hz)

$\frac{S}{N}:信噪比$

$$ 信噪比=\frac{S}{N}=\frac{信号的功率(w)}{噪声的功率(w)} $$

用单位记录:db(分贝)分贝转比值,假设分贝为 mdb:

$$ m分贝=10\log_{10} \frac{S}{N} $$

编码&解码、调制&解调

编码:二进制数据转换为数字信号

解码:数字信号转换为二进制数据

调制:二进制数据转换为模拟信号

解调:模拟信号转换为二进制数据

有线网络适配器:编码-解码器

光猫:调制-解调器

编码技术

不归零编码(NRZ):低 0 高 1,中不变

归零编码(RZ):低 0 高 1,中归 0

反向非归零编码(NRZI):跳 0 不跳 1 看起点,中不变

曼彻斯特编码:跳 0 反跳 1 看中间,中必变

差分曼彻斯特编码;跳 0 不跳 1 看起点,中必变

调制方法

基带信号:来自信源的数字信号(需要调制后才能在某些信道上传输,例如空气)

  1. 调幅 AM

有信号就调成正弦波,信号为 0 就无幅度

  1. 调频 FM

调制正弦波频率

  1. 调相 PM

调制正弦波相位

QAM(正交幅度调制):AM+FM,即$1码元=\log_2mnbit$

QAM-16:16 种码元

传输介质

导向型(有限):双绞线、同轴电缆、光纤

非导向型:无限传输介质

单模光纤适合远距离传输(只传输一条光线)、多摸光纤适合近距离传输

以太网对有限传输介质的命名规则

速度(Mbps)+Base+介质信息

介质信息:数字则为同轴电缆,5 代表最远传输距离 500m,F 代表光纤,T 代表双绞线

电磁波:无线电波、微波(保密性差)

波长越短、频率越高、带宽越高

短波通信需要指向性强、长波不需要

物理层接口特性

机械特性:接线器形状尺寸、引脚数目、排列、固定和锁定装置

电气特性:接口电缆各条线上出现电压范围、传输速率、距离限制

功能特性:某条线上出现某一电平的电压的含义

过程特性(规程特性);对于不同功能的各种可能事件的出现顺序

物理层设备

传输距离越远,越有可能信号失真

因此根据以太网规范限制传输距离长度

可以通过中继器(半双工通信)延续信号,将电压整形为标准的电压

集线器 Hub:多端口中继器。将一个端口收到的信号整形再生后,转发到其他所有端口

不可同时发送数据,会导致冲突

Hub 的 N 个端口对应 N 个网段,各网段属于同一个“冲突域

合并 Hub,组成更大的冲突域(碰撞域 💥)

集线器组成的网络拓扑结构是总线型的(逻辑上),物理上是星形

  • 连接的带宽共享

第三章 数据链路层

功能:封装成帧、透明传输、差错控制((位错(检错编码、纠错编码)、帧错)、流量控制、可靠传输(通过滑动窗口))

两种链路(信道):点对点(广域网)、广播(局域网)

结点:主机、路由器

链路:两个结点之间物理通道

数据链路:两个结点之间逻辑通道(链路+协议)

帧:链路层协议数据单元

加强物理层传输原始比特流的功能,将物理连接改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路

提供无确认无连接服务、有确认无连接服务、有确认面向连接服务

封装成帧

为 IP 数据报添加首部和尾部:帧定界

帧同步:接收方应该能区分帧的起始和终止

数据部分<=MTU

透明传输:对高层不可见。

数据链路层的透明性在于能够无视传输的数据内容,但由于帧定界符会与内容混淆,所以需要实现某些规则

实现透明传输

字符填充法(传输的帧):SOH,EOT 的 8bit 数据

在内容部分的控制信息前加入 ESC 转译义字符,在接收端去除所有转义字符

零比特填充法:一连串比特连续发送,只要连续 5 个 1,就立刻填入一个 0,接收端发现 5 个 1 就把后面的 0 删除

差错控制

有差错就要检错,实现了检错的编码

差错的发生是由于噪声引起的:线路的电气特性导致全局性的随机噪声(热噪声)->提高信噪比、外界短暂的特点原因的局部的冲击噪声(产生差错的主要原因)->利用编码技术解决

差错

  • 位错 0 变 1,1 变 0
  • 帧错 丢失、重复、失序

不是所有链路都要差错检测!对于提供无确认无连接服务(通信质量好的链路)不需要

有确认:就是有重传机制,有差错检测

检错编码:奇偶校验码、循环冗余码 CRC

纠错编码:海明码

物理层与数据链路层编码不一样:一个是对于单个比特的传输同步、一个是一组比特的传输过程有无差错

奇偶校验码

n-1 位信息元+1 位校验元

奇校验码:“1”个数为奇数

偶校验码:“1”个数为偶数

CRC 循环冗余码

代传数据除以生成多项式(2 进制编码),余数为 FCS 帧检验序列/冗余码,帧加上冗余码发送

接收方接受数据除以生成多项式,余数为 0 则接受,余数不为 0 则 1 丢弃

无差错接受:

“凡是接收端数据链路层接受的帧,都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”

并不是无比特差错的传输,因此不是可靠传输

海明码

海明距离:码距,差错的个数

码距为 n,可以检测 n-1 比特错

  1. 确认冗余码/校验码位数 r,假设源信息有 m 位

$$ 海明不等式:2^r>=m+r+1 $$

  1. 确认校验码和数据的位置,校验码放在序号为$2^n$的位置(n 从 1 开始,在低位)(eg.1,2,4…)

1 号校验码 xx1(最低位 1,负责 1,3,5,7 校验)

2 号校验码 x1x(第二位 1,负责 2,3,6,7 校验)

4 号校验码 1xx(第三位 1,负责 4,5,6,7)

  1. 采用偶校验,确保每个校验码负责的对应位“1”个数为偶数,从而计算出海明码

  2. 检错并纠错,收到的数据对每个校验码对应的负责位数校验检查“1”个数,查看哪一位出错(每一位异或,再结合起来)

可靠传输与流量控制

流量控制:原因较高的发送速度与较低接受能力的不匹配

(二层流量控制是点对点的,四层流量控制是端到端)

手段:接收端发送给发送端一个窗口公告,控制发送速率,使接收方有足够的缓冲空间来接受每一个帧

  1. 停止等待协议

发送帧-确认帧-发送帧-确认帧 低效

发送窗口大小=1,接受窗口大小=1

  1. 滑动窗口协议

发送窗口(发送的数据)、接受窗口确认发送帧、发送窗口前进

后退 N 帧协议(GBN)

发送窗口大小>1,接受窗口大小=1

选择重传协议(SR)

发送窗口大小>1,接受窗口大小>1

可靠传输:发送什么、收到什么

滑动传输解决的就是可靠传输与流量控制(收不下就不给确认+发送方自动重传 ARQ)

停止-等待协议

除了镇内比特差错,还会出现丢包问题(帧、包、段)

不考虑全双工,仅考虑半双工

发送一个帧接受一个帧,计时器到期重传,⏰>平均 RTT,帧必须编号,重传则丢弃确认帧

RTT(往返时延包括发送时延)吗?一般不包括,包括传播时延+排队时延+处理时延(接收方处理返回确认消息时间)

上文是单向 RTT,双向 RTT 是双向传播时延

$$ 信道利用率=\frac{L}{CT} $$

T:发送周期,从开始发送数据,到收到第一个确认帧为止(计算 T:发送时延+双向 RTT)

L:T 内发送 L 比特数据

C:发送方数据传输率

$$ 信道吞吐率=信道利用率*发送方的发送速率 $$

停止等待的信道利用率低,大部分时间发送方空闲

后退 N 帧协议(GBN)

解决停止-等待协议的信道利用率低问题,连续发送多个帧(流水线技术

  1. 必须增加序号范围(防止出错)
  2. 发送方需要缓存多个分组

滑动窗口:01234567…发送的数据必须在窗口内

接受窗口只有 1 格,收到 n 号帧就返回对 n 帧的确认帧(也可以累计确认,发送对前 n 帧的确认帧)

已经发完的帧(不在窗口)、正在发送的帧,还能发送的帧(在窗口)、不能发送的帧(不在窗口)

窗口已满则不能发送,但可以放在缓存

GBN 累积确认:对前 n 号帧的全部接受

超时计时器:后退 N 帧,若 N 帧的发送帧/确认帧没有收到,重传 N 帧以及后续未确认的帧,ACK 一直发送 ACK N-1

GBN 总结:累积确认、接收方按序接受、ACK 最大按序到达的帧,提高信道利用率,但是重传的效率偏低

选择重传协议(SR)

解决 GBN 累积确认导致的批量重传带来的效率降低问题

解决方法:设置单个确认、加大接受窗口、设置接受缓存、缓存乱序到达的帧

发送,接受窗口:N

发送窗口:发送完被确认的帧、已经发送但等待确认的、还能发送的

接受窗口:希望收到但没收到的、收到且返回确认的(在缓存中)、等待接受的

发送方:上层调用后 SR 发送帧或加入发送缓存、收到 ACK 移动窗口、超时时间后只重传一个帧

接收方:对于接受窗口内的帧来者不拒,失序的帧将被缓存并返回给发送方该帧的确认帧(收到谁确认谁),直到所有帧均被收到为止,这时可以将一批帧按需交付给上层,然后向前移动窗口

如果接收到窗口左边的帧,返回 ACK;

超时重传;

帧的标识位是有限的,会出现 n 号帧是新帧还是旧帧的无法确认,因此窗口不能过大

$$ W_Tmax=W_Rmax=2^{(n-1)} $$

n:帧编码个数

W:窗口大小

SR 总结:数据帧逐一确认、只重传出错帧、接收方有缓存

信道划分&介质访问控制

点对点链路(PPP,广域网)、广播式链路(总线以太网、局域网:星型(逻辑总线型))

介质访问控制:采取一定措施,使得两对节点之间的通信不会发生相互干扰:

  1. 静态划分信道

频分多路复用 FDM、时分多路复用 TDM、波分开多路复用 WDM、码分多路复用 CDM

  1. 动态分配信道

轮询访问:令牌传递协议

随机访问介质:ALOHA,CSMA,CSMA/CD,CSMA/CA

多路复用技术:多个信号组合在一条物理通道

实质:广播信道组合为点对点信道

  1. FDM

每个用户同时分带宽的各个频段

  1. TDM

带宽一致,每个用户交替使用信道(轮流、周期性)

  1. STDM(统计时分复用)

发送到集中器的缓存,按需动态分配

  1. WDM

本质:光波的频分复用

  1. CDM

每个比特指定固定的 m 位芯片序列

发送 1 时候发送对应芯片序列、发送 0 时候发送芯片序列反码

  1. 发送的时候两个芯片序列互相正交,规格化内积为 0

$$ S·T=\frac{1}{m}\sum_{i=1}^{m}S_iT_i=0 $$

  1. 两个向量到了公共信道上,线性相加,S-T
  2. 数据分离:合并的数据和原站点规格化内积,得到发送的数据,1 代表 1,-1 代表 0

$$ S·(S-T)=1 $$

$$ T·(S-T)=-1 $$

以下为动态划分信道

特点:信道并非在用户通信时固定分配给用户

随机访问:所有用户可随机发送信息,发送信息时占据全部带宽。(不协调)

ALOHA

每个站点不监听信道,随机重发 成功率低

时隙 ALOHA

时间片同步接入信道。发生冲突则等待到下一个时间片再重发

CSMA(载波监听多路访问协议)

先听再说!

CS:发送数据前检测总线电压摆动值(检测碰撞)

MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上

坚持 CSMA:监听信道忙,则监听直到有空闲直接传输

如果有冲突等待一个时间再监听

非坚持 CSMA:忙则不继续监听,等待一个随机时间再监听

p-坚持 CSMA:对于信道空闲的时候,以 p 概率进行直接传输;1-p 概率等到下一个时间槽再传输

忙则持续监听直到信道空闲,再以 p 概率发送

若冲突则等待下一个时间槽再监听并重复以上过程

CSMA/CD

先听再说,边听边说

CS:载波监听

MA:多点接入 总线型

CD:碰撞检测

监测到数据错误(碰撞 💥),立刻停发数据

单程端到端传播时延:$\tau$

B 监测到碰撞时间(A 发送的数据到达):$t=\tau$

假设 B 发送的时间为$t=\tau-\delta$

则 A 检测到碰撞时间$t=2\tau-\delta$

因此,最迟需要$t=2\tau$时间才能监测到自己发送的数据有没有和其他数据产生碰撞(两倍总线端到端时延,一个争用期)

重传时间:截断二进制指数规避算法

  1. 退避时间=基本争用期$2\tau$
  2. 定义 k 为重传次数(小于 10),再大就一直保持 10
  3. 从$[0,1,2^k-1]$中随机取出一个数 r

$$ 重传退避时间=r倍的基本退避时间=2r\tau $$

  1. 重传 16 次还未成功,则抛弃此帧并向网络层报告(网络拥挤)

帧太短会再发送完毕之前检测不到碰撞,因此需要规定最小帧长:帧的传输时延至少要两倍于信号在总线上的传播时延

$$ \frac{帧长(bit)}{数据传输速率}\geq2\tau $$

因此

$$ 最小帧长=总线传播时延\times数据传输速率\times2=2\tau\times数据传输速率 $$

以太网规定最小帧长 64Bytes

CSMA/CA

应用:无线局域网

空闲发送 RTS(request to send),收到接收端的 CTS(clear to send),开始预约信道

接收端收到帧后用 CRC 检验,正确响应 ACK 帧,收到则继续发送,否则进行二进制指数退避算法重传

局域网基本概念和体系结构

多采用分布式控制和广播式通信

星形拓扑、总线型拓扑 ✅(以太网:逻辑总线)、环形拓扑、树形拓扑

IEEE 802 标准

IEEE 802.3 以太网介质访问控制协议(CSMA/CD)及物理层技术规范

IEEE 802.5 令牌环网(单点故障)

IEEE 802.8 光纤技术环网

IEEE 802.11 无线局域网(WLAN)

LLC 子层、MAC 子层

以太网

Ethernet 使用 CSMA\CD

满足速率要求:10Mb/s~10Gb/s

DIX Ethernet v2 或 IEEE 802.3

无连接、不可靠的服务

10BASE-T 无屏蔽双绞线 10Mb/s 100m 曼彻斯特编码

局域网通信:适配器(网卡)

MAC 地址 48bit 前 24bit 代表厂家(IEEE 规定)后 24 位厂家自定

物理层:前导码+MAC 帧

MAC 层:6B 目的地址(全 F 为广播)、6B 源地址、类型(上层协议)、数据(IP 数据报)46(最小帧长 64B-6-6-2-4)-1500B(MTU)、FCS(帧检验序列)

高速以太网

100BASE-T 双绞线 100Mb/s 星形 可以全双工无冲突

吉比特以太网 光纤或双绞线 1Gb/s 可以全双工无冲突

10 吉比特 光纤 10Gb/s 只支持全双工 无冲突

IEEE 802.11 无线局域网
2B 2B 6B 6B 6B 2B 6B
帧控制 生存周期 ID RA 接收端 TA 发送端 DA 目的地址 序列控制 SA 源地址

AP 无线接入点:基站

发送端和接收端:两个基站的 MAC 地址

BSS:基本服务集,由一个 AP(Access Point 接入点)和多个无线客户端

ESS:扩展服务集,多个 BSS 互联

基站之间有限通信

漫游:自动选择最近的 AP

VLAN
  • 流量隔离(广播帧的泛洪
  • 用户管理
  • 降低路由成本

将局域网内的设备划分成与物理位置无关的逻辑组,每个 VLAN 是单独的广播域

交换机转发表 MAC 地址:端口 映射

  • VLAN 表 VLAN id:端口 or MAC 地址

贴标签:在类型前加入 4B VLAN 标记(后 12 位 VID,0-4095)

WAN

广域网:分组交换技术,强调资源共享

PPP:全双工链路,无流量控制和纠错,帧定界符,透明传输,多种网络层协议、多种类型链路、差错检测、检测连接状态、最大传输单元、网络层地址协商、数据压缩协商

LCP(链路控制)身份验证、NCP(网络控制)

定界符 7E,转义字符 7D,地址字段 A FF

F、A、C、协议、信息部分、FCS、F

扩展以太网

集线器:具有冲突域

网桥:转发与过滤 MAC 帧,能够区分网段

交换机:多端口网桥

网桥转发表自学习:地址和端口,没有就写入广播,有就转发,每隔一段时间清空

交换机自学习算法,与网桥一样

冲突域:每个结点都能收到所有被发送的帧

广播域:网络中能接收到一个结点发出广播帧的所有设备的集合

(物理层)中继器、集线器:不能隔离冲突域和广播域

(链路层)网桥、交换机:能隔离冲突域、不能隔离广播域

(网络层)路由器:都能

第四章 网络层

sdn:控制平面

IP 数据报:版本、首部长度 5-4B、区分服务、总长度1B、标识、标志、片偏移、TTL、协议(数据部分)、首部检验和、源地址和目标地址:32 位、可选字段 0 ~ 40B、填充:全 0,把首部补成 4B 整数倍

IP 数据报分片

从 0 开始

不能超过以太网的 MTU 1500Bytes,超过则 ip 分片

标识:标志同一数据报的分片

标志:最低两位有意义,DF(不许分片)1 禁止,0 允许,MF(更多分片),1 还有分片,0 代表没有分片

片偏移8B:某片在原分组中的相对位置(字节序除以 8Bytes

IPv4

  1. 在哪个网络?

  2. 在网络下的哪个主机?

IP 编址:

  1. 分类 IP 地址:<网络号><主机号>32 位/4B 每 1B 点分十进制

A 类 1 ~ 126 网络号 1B 主机号 3B 0

最大网络数 $2^7-2$ 1 126 最大主机数 $2^{24}-2$

B 类 128 ~ 191 网络号 2B 主机号 2B 10 最大网络数 $2^14-1$ 128 191 最大主机数 $2^{16}-2$

C 类 192 ~ 223 网络号 3B 主机号 1B 110 最大网络数 $2^8-2$ 192 223 最大主机数 $2^8-2$

D 类 224 ~ 239 多播地址 1110

E 类 240 ~ 255 保留 1111

0.0.0.0 只可以作为源地址,本网络范围内表示主机,路由表表示默认路由

网络号全 0,主机号特定值 只能源地址,表示本网范围内某个主机

255.255.255.255(全 1)只能作为目的地址,广播地址,路由器不转发

网络号特定值,主机号全 0 不可作为地址,表示一个网络

网络号 127,主机号任何数(不全为 0 或者 1),可以作为目的地址和源地址 环回地址 本地软件环回测试 (软件测试)

私有(内部)IP 地址

A 类

10.0.0.0~10.255.255.255 网段个数 1

B 类

172.16.0.0 ~ 172.31.255.255 网段个数 16

C 类

192.168.0.0 ~ 192.168.255.255 网段个数 256

网络地址转换 NAT

目的:私有 ip 转换为公有 ip

NAT 路由器:NAT 转换表 WAN 端对应 LAN 端的 ip 和端口号

子网划分和子网掩码

将主机号划分为:子网号、主机号

主机号不能全 0(网络号)和全 1(广播)

子网掩码与 IP 地址逐位相与,得到子网网络地址

直接交付(子网掩码相与查看网络号是否匹配)、间接交付(特定主机路由、路由表路径检测、默认路由、丢弃报告出错)

CIDR 无分类编址

IP 地址后加上/,写上网络前缀的位数

CIDR 子网掩码:网络前缀多少就前多少个 1

超网

多个子网聚合成一个较大的子网,叫做构成超网

取网络号前 n 位的交集,合并成一个更大的网络

最长前缀匹配

使用 CIDR,查找路由表可能得到多个匹配结果,应选择具有最长网络前缀的路由

ARP 协议

知道源 ip 地址的 MAC 地址(封装的时候填入),如何知道目的 ip 地址的 MAC 地址?

查询本地 ARP 高速缓存(ip:MAC),没有则使用 ARP 协议

主机发送 ARP 广播帧,目的 MAC 地址全 F(1)

有对应 MAC 地址的主机响应单播 ARP 响应地址

“下一跳”:到下一个具有 ip 地址(MAC 地址)的设备

10-20min 更新一次 ARP 缓存

主机要找本网内:ARP 找到本网主机 MAC;找外网:ARP 找到本网路由器 MAC

路由器要找本网内:ARP 找到本网主机 MAC;找外网:ARP 找到另一个路由器 MAC

DHCP

静态配置:ip+子网掩码+默认网关

动态 ip 地址分配:DHCP 服务器(应用层,基于 udp),地址重用

租用期:限时

主机广播 DHCP 发现报文(找服务器)、服务器广播 DHCP 提供报文(预分配 ip)、主机发送 DHCP 请求报文(请求分配)、服务器广播 DHCP 确认报文(正式分配 ip)

ICMP

支持主机或路由器的差错(异常)报告

网络探询

五种差错报告报文:终点不可达、拥塞丢弃、超时、首部出错、重定向(改变路由:不是最好的路由)

ICMP 前 8Bytes+IP 首部+数据字段前 8Bytes=ICMP 差错报告报文

装入 IP 字段(加 IP 首部)

组播、特殊地址、第二个及以后分片不发送 ICMP 差错报告

ICMP 询问报文

  • 回送请求和回答报文 收到询问主机必须给源主机或路由器发送 ICMP 回送回答报文 ping
  • 时间戳请求和回答报文 回答当前时间日期,进行时钟同步和时间测量

应用:PING、Traceroute(跟踪源点到达终点的路径)

IPV6

IPv4 已经耗尽,CIDR NAT 治标不治本…

基本首部、有效载荷

基本首部:版本、优先级、流标签(从一个源到一个目的)、有效载荷长度、下一个首部、跳数限制、源地址(128bit)、目的地址(128bit)

  • 删除校验和字段
  • 删除可选字段,加入扩展首部
  • 即插即用(自动配置),不需 DHCP
  • 首部长度是 8B 整数倍,IPv4 是 4B 整数倍
  • IPv6 只能在主机出处分片,IPv4 可以在路由器和主机分片
  • ICMPv6:附加报文分组过大
  • 支持资源预分配
  • 取消协议字段,改成下一个首部字段
  • 取消总长度字段,该用有效载荷长度字段
  • 取消服务类型字段

表示:冒号十六进制记法

单薄、多播、任播

兼容性:双栈协议、隧道技术

回顾:路由选择协议

  • 内部网关协议 RIP、OSPF
  • 外部网关协议 BGP

RIP

分布式、基于距离向量的路由选择 简单

每个路由器都维护从它自己到其他每一个目的网络唯一最佳距离记录(最短跳数)

目的网络 距离 下一跳路由器
Net2 1 直接交付
Net1 2 R1
Net4 2 R3

距离=跳数=从源到目的经过路由器个数

RIP 仅允许一条路由包含 15 个路由器,距离为 16 代表网络不可达

  1. 只能和相邻的路由器交换信息
  2. 路由器交换的信息是自己的路由表
  3. 30 秒交换一次路由表

路由器初始只知道距离为 1 的下一跳,接着和相邻路由器交换并更新路由信息

经过若干次更新,达到收敛

  1. 修改相邻路由器 x 发来 RIP 报文所有表项,下一跳改为 x,距离+1
  2. 对修改后 RIP 报文每一项:
  • 路由表没有 Net,则把该项目填入表

  • 有 Net,则查看下一跳:

  • 下一跳是 x,则用收到的项目更新路由表

  • 不是 x,则原来距离比 x 远则更新,否则不处理

  1. 180s 内没收到 x 的更新路由表,则把 x 标记为不可达,即距离设置为 16
  2. 返回

RIP 报文在 UDP 数据报中,也就是说 RIP 是应用层协议

一个 RIP 最多 20 个路由信息

缺点:会造成传输错误信息的循环,好消息快收敛,坏消息慢收敛

OSPF

开放最短路径优先 Dijkstra 最短路径算法 SPF

分布式链路状态协议

  1. 使用泛洪法向自治系统内所有路由器发送信息,而每一个相邻路由器又将此信息发送给所有相邻路由器 广播
  2. 发送信息是相邻路由器的路由状态
  3. 只有当链路状态发生变化时,路由器才向所有路由器泛洪

链路状态路由算法

使用 Dijkstra 算法算出最优选择

OSPF 将自治系统划分为区域,适合大规模系统

在 IP 数据报内发送,是网络层协议

30min 更新一次,收敛速度很快,坏消息也很快

BGP

AS 自治系统间交换信息,通过 BGP 发言人(边界路由器)

发生变化才更新

BGP 交换的信息是到达某个网络所要经过的一系列 AS

交换路径向量,沿某一路径$(AS_1,AS_2)$可以到达网络$N5,N6,N7$

BGP 报文放入 TCP 报文的数据段,是应用层协议

BGP 支持 CIDR,开始运行交换整个路由表,后续之交换变化的信息

BGP-4 连接

  1. OPEN 报文
  2. UPDATE 报文
  3. KEEPALIVE 报文:周期性确认连通性
  4. NOTIFACTION 报文:可以关闭连接

总结:RIP 内部网关,使用广播 UDP,跳数最少,距离-向量;

OSPF 是内部网关,使用 IP,代价最低,泛洪,链路状态;

BGP 是外部网关,使用 TCP,较好,路径-向量;

IP 组播

单播:点对点,源-目的

广播:点对多点,全部端口

组播(多播):只给相同需求的主机发送,点对多点,最后一步路由器才会复制

IP 组播地址:部分D 类地址:224.0.0.0~239.255.255.255,一个 D 类地址表示一个组播组。只能用作分组的目标地址,最大努力交付 UDP,不产生 ICMP

组播 MAC 地址 01-00-5E 开头,后面将 IP 地址后 23 位映射到以太网地址

IGMP

让局域网上的组播路由器知道网内是否有主机参加或退出了某个组播组

使用 IP 数据包

  1. 发送 IGMP 报文给某个路由器,声明想要加入某个组播组
  2. 利用协议把关系发给其他组播路由器
  3. 周期性探询本地路由器是否是组播组的成员,经过几次探寻未响应就不再把成员关系发给其他的组播路由器
组播路由选择协议

组播转发树

移动 IP

到达不同物理地点,保持 ip 地址不变

网络层设备

路由器:多输入/输出端口的专用计算器,任务是转发分组

根据路由选择协议构造路由表、更新维护路由表、根据转发表对分组进行转发

输入端口:接受分组、直到网络层分组排队:查表和转发(产生时延

输出端口: 设置缓冲队列,排队输出

分组丢失原因:输入队列或输出队列缓冲区因为排队溢出

根据路由表(默认路由全 0)来得出转发表

第五章 传输层

概述

端系统层次:主机独有

为应用层提供通信服务

  1. 提供进程与进程间的逻辑通信
  2. 复用和分用
  3. 报文进行差错检测

TCP、UDP

面向连接、可靠和无连接、不可靠

复用:应用层所有的应用进程都可以通过传输层再传输到网络层

分用:传输层从网络层收到数据后交付给对应应用进程

端口:传输层 SAP(服务访问点),本地意义

端口号

  • 服务端:熟知端口号 0 ~ 1023,登记端口号 1024 ~ 49151
  • 客户端:49152 ~ 65536 动态选择

FTP:21

TELNET:23

SMTP:25

DNS:53

TFTP:69

HTTP:80

SNMP:161

套接字 Socket=(ip,port)

UDP

复用分用、差错检测

无连接、最大努力交付

面向报文,长度不改变,适合一次性少量数据

首部 8B,数据字段可以为 0

首部:源端口号 2B,目的端口号 2B,UDP 长度 2B,UDP 检验和 2B

找不到目的端口号丢弃报文,发送 ICMP“端口不可达”差错报告报文

UDP 校验

伪首部:模仿 ip 首部,只有计算校验和时出现

TCP

虚连接,点对点连接(进程对进程)

可靠有序,不丢不重

全双工通信:发送缓存(准备发送的数据&已发送但未收到的数据);接受缓存(按序到达但尚未被应用程序读取的数据&不按序到达的数据)

面向字节流:传输层将应用层报文视作连续字节流

首部格式

20B 首部,源端口目的端口各 2B,总共 4B,

序号:字节流的第一个字节的顺序编号

确认号:期望收到对方下一个报文段的第一个数据字节的序号,若确认号位 N,则证明到 N-1 点所有数据已正确收到

数据偏移(首部长度):TCP 报文段的数据起始处距离 TCP 报文段段起始处有多远,4B 一个单位

紧急位 URG:为 1 时在缓存区优先发送

确认位 ACK:为 1 时确认位有效

推送位 PSH:为 1 时接收方尽快交付接受应用进程

复位 RST:为 1 时需要释放 TCP 连接

同步位 SYN:表明是连接请求/连接接受报文

终止位 FIN:为 1 时表明发送方数据已发完,要求释放连接

窗口:自己的接收窗口,可以容纳的字节流,对方应根据窗口设置发送窗口(流量控制

检验和:检验首部+数据,检验时加上伪首部 12B,第四个字段为 6

紧急指针:URG=1 时有意义,指出紧急数据的字节数

选项:可选,最大报文段长度 MSS、窗口扩大、时间戳、选择确认…

TCP 连接管理

客户-服务器方式(C/S)

三次握手-四次挥手**

C:连接请求报文段,无数据

  • SYN=1,seq=x(随机)序号

S:为 TCP 连接分配缓存和变量,返回确认报文段,无数据

  • SYN=1,ACK=1,ack=x+1(想要收到的下一个序号),seq=y(随机)

C:确认的确认,可以携带报文数据,分配 TCP 连接缓存和变量

  • SYN=0(同步已经完成了),ACK=1,seq=x+1,ack=y+1(想要收到下一个序号)

SYNFLOOD 泛洪攻击

  • 攻击者发送大量第一个握手数据包 SYN,服务器返回 ACK 确认后,攻击者不进行确认。TCP 连接处于挂起状态,浪费服务器资源导致崩溃

连接释放

C:发送连接释放报文段,停止发送数据

  • FIN=1,seq=u

S:服务器送回确认报文段–半关闭状态

  • ACK=1,seq=v,ack=u+1

S:服务器发送完毕所有数据,发出连接释放报文段

  • FIN=1,ACK=1,seq=w,ack=u+1

C:客户端送回一个确认报文段,在等待时间等待计时器设置的 2MSL(最长报文段寿命)后,连接彻底关闭

  • ACK=1,seq=u+1,ack=w+1
可靠传输

可靠:保证接收方进程从缓冲区读出的字节流与接收方一致

确认机制

直到接收方完整接收到报文段,才把缓存区中的发送报文段删除(确认报文段)

累积确认:只确认第一个丢失字节开始的报文段

重传:超时重传

RTTs(加权平均往返时间):自适应算法计算的时间

冗余 ACK(确认):快速重传,每当比期望序号大的失序报文段到达时、发送一个冗余 ACK,指明下一个期待字节的序号

可靠传输在数据链路层已经讲过

流量控制

发送方的速率放慢

TCP 利用滑动窗口机制实现流量控制

接收方根据接受缓存大小,动态调整发送方发送窗口大小、即接受窗口 rwnd(接收方设置确认报文段的窗口字段来将 rwnd 通知给发送方),发送方的发送窗口取接受窗口 rwnd 和拥塞窗口 cwnd 的最小值

e.g. ACK=1,ack=201(期望收到下一个是 201 开头的报文段),rwnd=300(允许发送 201-500B 的窗口)

然后发送窗口往前移动,发两次 100B 的报文段(最大报文段),然后发送窗口满了,进入等待状态,直到接收方传来新的确认以及 rwnd 的大小,改变窗口大小并前进,重复以上过程

如果窗口为 0,启动一个持续计时器,到期后发送0 窗口探测报文段,接收方给出现在的窗口值,若为 0 则继续等待开启计时器

拥塞控制

条件:对资源需求的$总和\ge可用资源$

网络吞吐量随输入负荷增大而下降,因此要协调防止过多的数据注入到网络中

与流量控制区别:流量控制是点对点一对一对,拥塞控制是多对一的,有很多主机占据一条带宽

四种算法

慢开始、拥塞避免、快重传、快恢复

假设:

  1. 数据单方向传送,另一个方向只传送确认
  2. 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度

$$ 发送窗口=Min(接受窗口rwnd,拥塞窗口cwnd) $$

接受窗口:接收方根据接受缓存设置的值,并告诉发送方,反映接收方容量

拥塞窗口:发送方根据自己估算的网络拥塞程度设置的窗口值,反映网络当前容量

  1. 慢开始和拥塞避免

开始 cwnd=1,“指数增长”,直到 ssthresh 门限初始值 16,然后开始拥塞避免,”加法增大“,直到网络拥塞,记录下当前的 cwnd 拥塞窗口,设置新的 ssthresh=$\frac{cwnd}{2}$,设置 cwnd=1,重复慢开始流程。

  1. 快重传和快恢复

慢开始、拥塞避免“加法增大”、收到 3 个重复的 ACK(说明冗余了),立刻执行快重传算法(比超时计时器快,节省时间),快恢复“乘法减小”,降到新的门限制为$\frac{cwnd}{2}$,然后继续加法增大…

第六章 应用层

为应用程序的通信提供服务

定义:

  • 应用进程交换的报文类型,请求还是响应?
  • 各种报文类型的语法,如报文中的各个字段机器详细描述
  • 字段的语义、即包含在字段中的信息的含义
  • 进程何时、如何发送报文,以及对报文进行的响应的规则

文件传输、访问和管理、电子邮件、虚拟终端、查询服务和远程作业登陆

FTP、SMTP、POP3、HTTP、DNS

C/S 模型、P2P 模型

DNS

域名解析为 ip 地址

根域名 .

顶级域名

  • 国家 cn,us,uk
  • 通用顶级域名 com,net,org,gov,int,aero,museum,travel
  • 基础结构域名/反向域名 arpa(ip 反 DNS 到域名)

二级域名

  • 类别域名 ac,com,edu,gov,mil,net,org
  • 行政区域名 bj,js
  • 自定义域名

三级域名

四级域名

**域名树 🌲**表示

DNS 服务器:层次划分

特殊:本地域名服务器,优先发给本地 DNS Server

如果本地 DNS 服务器没有,查询根域名服务器 13 个 但有更多分服务器

两种方式:递归查询和迭代查询

递归查询:根域名服务器知道下一级顶级域名服务器的位置,然后是权限域名服务器(只能负责一个区:每一个区是某个域名及其子域名的管理,自定义),如果还不能完成请求,那就再给出其他的权限域名服务器地址进行查询,直到查询成功逐层返回,直到给本地域名服务器

迭代查询:由本地域名服务器一个个询问(多用)

FTP

文件上传、下载

C/S 协议,TCP 实现可靠传输

1 个主进程,多个从属进程

20 端口

文本模式:ASCII

二进制模式:Binary

电子邮件

SMTP 客户、邮件服务器

邮件服务器间 POP3,IMAP

端口 25

C/S

WWW 和 HTTP

World Wide Web,大规模联机的信息储藏空间

使用统一资源定位符 URL 标识唯一资源 HTML(超文本标记语言 HyperText Markdown Language)

URL 格式:<协议名>://<主机>:<端口>/<路径>

通过超链接获取资源,这些资源通过超文本传输协议 HTTP(HyperText Transfer Protocol)

C(Browser 浏览器)/S(Server)

一个服务器监听 TCP 端口 80

浏览器分析 URL,向 DNS 请求解析为 IP 地址,浏览器与服务器建立 TCP 连接,发送 HTTP 请求报文,获得 HTTP 响应报文,获取资源,浏览器解析并展示,释放 TCP 连接

HTTP 无状态、无连接(虽然有 TCP 连接) Cookie 本地存储历史记录

连接方式:

  • 非持久连接 TCP 连接三次握手 接下来发送和接受 HTTP 报文,关闭 TCP 连接
  • 持久连接 多次请求报文的时候不关闭 TCP 连接,分为流水线式(等待两个 RTT)和流水线式(一个 RTT)
HTTP 报文结构

面向文本,每一个字段都是ASCII 码

请求报文:方法 URL 版本 回车行 CRLF

首部字段名 值 CRLF

…CRLF

主体

响应报文:版本(HTTP/1.1 HTTP/2 HTTP/3) 状态码 短语 CRLF (状态行)

首部字段名 值 CRLF

…CRLF

主体

响应状态码

  • 1xx 表示通知信息,请求收到或正在处理
  • 2xx 表示成功,接受
  • 3xx 表示重定向,如需完成请求需要进一步行动
  • 4xx 表示客户出错,如请求中语法错误或不能完成
  • 5xx 表示服务器出错,如服务器失效或无法完成请求