计算机网络

1、计算机网络体系结构

1.1 计算机网络概述

计算机网络的概念:

  • 广义观点:只要能实现远程信息处理,资源共享能力弱。
  • 资源共享观点:目的是资源共享,由分布在不同位置的多台计算机组成,遵循网络协议。
  • 用户透明性观点:用户使用网络就像使用一台计算机,未来的目标。

计算机网络的组成:

  • 从组成部分:硬件、软件、协议
  • 从工作方式:边缘部分(用户使用的主机)、核心部分(由路由器组成的网络)
  • 从功能组成
    • 通信子网:OSI低三层。实现计算机之间的通信,包括传输介质、通信设备、网络协议。如网桥、交换机、路由器
    • 资源子网:OSI高三层。实现资源共享的设备和软件。如计算机系统、终端、各种软件资源

计算机网络的功能:数据通信、资源共享、分布式处理、提高可靠性、负载均衡

计算机网络的分类:

  • 按分布范围:广域网(WAN)、城域网(MAN)、局域网(LAN)、个人区域网(PAN)。(若中央处理器距离非常近,则称为多处理器系统。)
  • 按传输技术:广播式网络(局域网、卫星通信)、点对点网络(如果没有直连就要分组存储转发,路由选择)
  • 按拓扑结构:总线形、星形、环形、网状
  • 按使用者:公用网、专用网
  • 按交换技术:电路交换网络、报文交换网络、分组交换网络
  • 按传输介质:有线、无线

计算机网络的性能指标:

  • 带宽最高数据传输速率。单位比特/秒(b/s)。

  • 速率(数据传输速率、数据发送速率、比特率):单位比特/秒(b/s),还有kb/s(\(10^3\)b/s)等。注意提高数据发送速率并不是提高链路上的传播速率(电磁波传播速率),而是提高向链路注入比特的数量。

  • 时延

    • 发送时延(传输时延):将分组推向链路的时间。等于分组长度/数据传输速率
    • 传播时延:电磁波在信道的传播时间。等于信道长度/电磁波传播速度
    • 处理时延:存储转发的时间
    • 排队时延:路由器输入输出时排队的时间
  • 时延带宽积:等于时延×带宽。代表一段链路容纳的比特数量。

  • 往返时延(RTT):从发出到收到确认的时延。等于传播时延+处理时延、排队时延(不包括发送时延

  • 信道利用率:有数据通过的时间/总时间

1968年6月,世界上最早出现的计算机网络是ARPAnet。

1.2 计算机网络体系结构与参考模型

1.2.1 计算机网络分层结构

分层:定义的是各层的协议、之间的接口等。不定义具体功能执行的方法。

第n层元素称为第n层实体,不同机器的同一层为对等层,同一层实体为对等实体

报文的组成:

  • 数据部分:服务数据单元(SDU

  • 控制信息部分:协议控制信息(PCI

  • 共同组成:协议数据单元(PDU

    n-SDU + n-PCI = n-PDU = (n-1)-SDU

1.2.2 协议、接口、服务

协议:对等实体进行通信的规则集合。是水平的。不对等实体之间没有协议。由以下三部分组成:

  • 语法:传输数据的格式
  • 语义:功能(发出控制信息、完成动作、应答)
  • 同步:条件、时序

接口:同一结点内相邻两层间交换信息的连接点。相邻两层实体通过服务访问点SAP)进行交互。

服务:下层为上层提供的功能调用。是垂直的。下层的功能中上层看得见的才叫服务。

  • 服务原语:上层使用下层的命令。包括以下四种:

    • 请求:用户→服务提供者
    • 指示:服务提供者→用户
    • 响应:用户→服务提供者
    • 证实:服务提供者→用户

    有应答服务都包含,无应答服务只有前两种。

  • 服务的分类

    • 面向连接服务、无连接服务
    • 可靠服务、不可靠服务:是否有纠错、检错、应答
    • 有应答服务、无应答服务

1.2.3 ISO/OSI参考模型

中文:开放系统互连参考模型。

低三层叫通信子网,高三层叫资源子网,传输层承上启下。

  • 物理层:定义电路接口、链路上的信号(物理媒体如双绞线不属于物理层)。物理层没有数据封装。接口标准(物理层规程)有EIA-232C、EIA/TIA RS-449、CCITT等。
  • 数据链路层:成帧、差错控制、流量控制、传输管理(没有拥塞控制)。传输单位是。协议有:SDLC、HDLC、PPP、STP、帧中继等。
  • 网络层:路由选择、差错控制、流量控制、拥塞控制、网际互连。传输单位是数据报/分组。支持无连接和面向连接的通信。协议有:IP、ICMP、IGMP、ARP、OSPF等。
  • 传输层:差错控制、流量控制、拥塞控制、服务质量、数据传输管理。传输单位是报文段(TCP)或用户数据报(UDP)。仅有面向连接(此处是OSI的定义,要和TCP/IP模型区分)。端到端通信。协议有:TCP、UDP。
  • 会话层:各进程(建立、管理、终止)会话,也叫建立同步。通信失效时可以从校验点恢复通信,实现同步。
  • 表示层:交换信息的表示方式。如数据格式转换、数据压缩、加密解密。
  • 应用层:协议有:FTP、SMTP、HTTP。

1.2.4 TCP/IP模型

  • 网络接口层:类似OSI的物理层和数据链路层。
  • 网际层:无连接。注意和OSI参考模型的不同。
  • 传输层:面向连接(TCP)、无连接(UDP)。注意和OSI参考模型的不同。
  • 应用层

2、物理层

2.1 通信基础

2.1.1 基本概念

数据就是传送的信息,信号是数据的电气表现。

模拟数据(模拟信号)连续变化的数据。

数字数据(数字信号)离散数值的数据。

码元:固定时长(码元宽度)的信号波形表示的一位k进制数(k进制码元)。如二进制码元就是比特。

信源:发送数据的源头。信宿:接收数据的终点。信道:逻辑的,如一条物理线路上可以有发送信道和接收信道。可以分为数字信道和模拟信道。

基带信号基带传输):在数字信道上传输,01信号用不同的电压表示(方波)。

频带传输:将基带信号调制成模拟信号,在模拟信道上传输。

宽带信号(宽带传输):借助频带传输,将链路容量分解成两个或更多的信道(如频分复用),每个信道携带不同的信号。

单向通信半双工通信(两个方向不能同时有数据)、全双工通信

速率

  • 码元传输速率波特率):单位时间传输码元的个数。单位:Baud。

  • 信息传输速率比特率):单位时间传输二进制码元(比特)的个数。单位:b/s。

    两者的换算:若一个码元含n比特的信息,则比特率=波特率×n。如:信息传输速率为64kb/s,一个载波的码元有4个离散值(2比特),则波特率为32kBaud。一定注意要转换为比特数,不是信号的个数。

2.1.2 奈奎斯特定理与香农定理

奈奎斯特定理:在理想低通信道中(无噪声),为避免码间串扰,极限码元传输速率2W波特,W是信道的带宽(频带宽度,最高频率与最低频率之差,Hz)。(用数据传输速率来表示就是\(2Wlog_2V\),V是一个码元的离散电平数)。

香农定理:信道的极限数据传输速率=\(Wlog_2(1+S/N)\),S是信号功率,N是噪声功率,S/N是信噪比(用分贝表示\(S/N=10log(S/N)\),单位dB。如30dB即S/N=1000)。

香农定理从侧面表明一个码元对应的二进制位数是有限的。如果两个公式都能用,按算出来的取最小速率。

2.1.3 编码与调制

调制:数据→模拟信号。编码:数据→数字信号。

  • 数字数据编码为数字信号:即01用高低电平表示。用于基带传输。
    • 归零编码(RZ):每个周期都会跳变到低电平。同步。
    • 非归零编码(NRZ):最正常的表示。
    • 反向非归零编码(NRZI):翻转代表0,不变表示1。
    • 曼彻斯特编码:一个码元两个间隔。前高后低为1,前低后高为0,也可以相反。同步。以太网采用。每位数据需要两个电平表示,即两个码元表示一位,波特率是比特率的两倍。
    • 差分曼彻斯特编码:一个码元两个间隔。前半个电平和上一个码元后半个电平相同为1,反之为0。同步。
    • 4B/5B编码:用5个码元表示4位。波特率是比特率的1.25倍。
  • 数字数据调制为模拟信号
    • 幅移键控(ASK):振幅表示01。抗干扰差。
    • 频移键控(FSK):频率表示01。抗干扰强,广泛使用。
    • 相移键控(PSK):相位表示01。
    • 正交振幅调制(QAM):结合ASK与PSK。
  • 模拟数据编码为数字信号:如处理音频的脉冲编码调制(PCM)
    • 采样:要不失真,采样频率必须大于等于模拟信号最大频率的两倍(采样定理)。
    • 量化:将电平幅值转化为数字值。
    • 编码:量化结果转为二进制。
  • 模拟数据调制为模拟信号:如提高频率、将模拟数据加到载波上。可以使用频分复用(FDM)。

2.1.4 电路、报文、分组交换

电路交换:连接建立、数据传输、连接释放

  • 优:时延小、有序
  • 劣:建立连接时间长、独占、不能差错控制

报文交换:以报文为单位,存储转发

  • 优:无须建立连接、线路动态分配、可靠、提高利用率
  • 劣:存储转发时延、报文大小没有限制要求结点缓存空间足够

分组交换

  • 优:无须建立连接、利用率高、简化存储、传输更快(流水线)、减少出错率和重发数据量
  • 劣:存储转发时延、额外信息量、分组失序丢失重复

2.1.5 数据报和虚电路

它们是分组交换的两种方式。

数据报:没什么说的,就像路由器转发一样。

虚电路

  • 虚电路建立:建立一条逻辑上的虚电路,一旦建立,就确定了物理路径。分配虚电路号。建立时发送呼叫请求分组和呼叫应答分组。
  • 数据传输:携带虚电路号
  • 虚电路释放:发送释放请求分组和释放应答分组

两个结点之间的物理链路可能有多个虚电路通过,两个端系统之间可以有多条虚电路。

出错率高的传输系统中应采用数据报方式,因为如果虚电路中节点故障则需要重新建立连接。

虚电路包括:永久性虚电路(提前定义好)和交换型虚电路(临时连接)。

数据报 虚电路
携带 源地址、目的地址 虚电路号
路由 每个分组独立转发 物理路径确定
顺序性
可靠性(顺序、丢失) 不可靠,只能由上层保证 可靠
差错处理和流量控制 无,只能由上层保证

2.2 传输介质

也称传输媒体,可以分为导向和非导向。不属于物理层,在物理层下面。

  • 双绞线
    • 屏蔽双绞线(STP)、非屏蔽双绞线(UTP)
    • 通信距离:几千米~数十千米
    • 远距离传输:模拟传输用放大器,数字传输用中继器
  • 同轴线缆
    • 50Ω同轴线缆(基带同轴电缆):传送基带信号,局域网
    • 75Ω同轴线缆(宽带同轴线缆):传送宽带信号,有线电视系统
    • 因为屏蔽性高、抗噪声性好,所以与双绞线比,传输速率高,传输距离远,贵
  • 光纤
    • 多模光纤:利用全反射,不同角度入射的光线在一根光纤传输。光源:发光二极管。近距离传输。
    • 单模光纤:光纤的直径减小到只有一个光的波长,直线传播,无反射。光源:半导体激光器。衰减小,远距离传输。
  • 无线传输介质
    • 无线电波:向所有方向散播。
    • 微波、红外线、激光:带宽高,方向性,视线介质。
      • 卫星通信利用地球同步卫星中继微波信号,时延长,受气候影响大,保密差,误码率高。

物理层接口的特性

  • 机械特性:接线器的形状尺寸、引脚数目排列……
  • 电气特性:电压范围、传输距离……
  • 功能特性:电压表示的意义
  • 过程特性:各种事件的出现顺序

常用标准:EIA RS-232-C、ADSL、SONET/SDH

2.3 物理层设备

中继器

信号再生(不是简单放大)

5-4-3规则:串联的中继器不能超过4个,4个中继器串联5段通信介质只有3段可以接计算机。

中继器没有存储转发功能。在物理层连接两个网段,必须要物理层的协议相同(如数据传输速率相同),而数据链路层的协议对其没有影响(可以连接不同数据链路层协议的网段)。

集线器(Hub)

多端口中继器。拓扑结构是星形,逻辑上是总线网。半双工。

3、数据链路层

3.1 数据链路层的功能

  • 为网络层提供服务

    • 无确认的无连接服务
    • 有确认的无连接服务
    • 有确认的面向连接服务(面向连接就一定有确认)
  • 链路管理:建立、维持、释放连接(用于面向连接)。

  • 帧界定(确定帧的界限)、帧同步(接收方区分出帧的起始与终止)、透明传输(不管什么比特组合都能传输,数据中不包含帧界定符)

  • 流量控制:控制发送速率,使其不超过接收速率。

  • 差错控制

    • 位错:CRC+ARQ
    • 帧错:丢失(引入定时器)、重复/失序(引入编号)

3.2 组帧

  • 字符计数法:第一个字节代表该帧的总字节数。如51234(每个数表示一个字节的值)。
  • 字符填充法:帧的开始为控制字符SOH,结束为控制字符EOH,转义字符ESC。数据中出现这三个字符前面都加ESC。
  • 零比特填充法:01111110表示帧的开始和结束,每连续的5个1后添一个0。
  • 违规编码:不采用填充技术,利用冗余编码(如曼彻斯特编码的4种电平对只用了两种,其余的就可以用来定界)。

3.3 差错控制

此处仅讨论比特差错

  • 奇偶校验码(检错编码)

    • 添加一位校验元,使得码字中1的个数为奇数(奇校验码)/偶数(偶校验码)
    • 只能检测出奇数个比特出错的情况
  • 循环冗余码(CRC)(检错编码)

    • 事先商定一个多项式G(x),它的阶数为k-1,对应的串有k位。如\(G(x)=x^3+x^2+1\)阶数为3,对应的串是1101。
    • 帧检验序列(FCS),位数k-1。原始帧加上FCS如果能被G(x)整除,则无差错。
    • 计算FCS步骤:
      • 在帧的低位加k-1个0。
      • 用的是模2除法,即减法就是异或运算。

    • CRC有纠错功能,但数据链路层只用了检错功能。
    • 带r个校验位的多项式编码可以检测到所有长度小于等于r的突发性错误。
  • 海明码(纠错编码)

    • n为有效信息位数,k为校验位位数,要满足\(n+k\le2^k-1\)
    • 海明距离:两个相同长度的比特串对应位不同的个数,如1010和1101海明距为3。
    • 纠错d位,需要海明距2d+1;检错d位,只需d+1。

3.4 流量控制与可靠传输机制

流量控制:停止等待,滑动窗口(细节就不展开了)。

可靠传输机制:通过确认超时重传来完成。

数据链路层的流量控制和可靠传输机制是交织在一起的。

自动重传请求(ARQ)分为:

  • 停止-等待协议(停止等待ARQ协议)
    • 单帧滑动窗口。相当于发送窗口为1,接收窗口为1的滑动窗口协议。
    • 差错情况:
      • 数据帧错误,接收方检出错误丢弃,发送方超时重传。
      • 确认帧错误,发送方超时重发,接收方丢弃该重发的帧,再次发送确认帧。
  • 后退N帧协议(后退N帧ARQ协议)(GBN,Go-Back-N)
    • 多帧滑动窗口。相当于发送窗口大于1,接收窗口等于1的滑动窗口协议。
    • 发送方可以连续发送,接收方按顺序接收,一旦收到一个错误的帧,发送方要重发从这个帧开始的所有帧。
    • 累积确认
    • 若采用n比特编号,则窗口尺寸\(W_T\le2^n-1\)。假如3比特编号,\(W_T=8\),发送方发完0~7帧,接收方发送确认帧,以下两种情况无法分辨:
      • 确认帧都送达,则应当发送新的0~7帧
      • 确认帧全部丢失,则重传0~7帧
  • 选择重传协议(选择重传ARQ协议)(SR,Selective Repeat)
    • 发送窗口和接收窗口一般相同(发送窗口长则溢出,接收窗口长则浪费)。
    • 若采用n比特编号,则发送窗口和接收窗口尺寸\(W_T=W_R\le2^{n-1}\)。假如3比特编号,\(W_T=W_R=5\),发送方发送01234,以下两种情况无法分辨01是新帧还是旧帧:
      • 接收方成功接收,接收窗口右移5位变为56701,收到新帧01
      • 01的确认丢失了,重传01
    • \(\text{发送窗口大小}W_T+\text{接收窗口大小}W_R\le2^n\)

信道利用率:有多少占比的时间在发送数据。

信道吞吐率:单位时间平均发送的数据。信道利用率×发送速率。

3.5 介质访问控制

介质访问控制(MAC)子层:决定广播信道中信道分配。

3.5.1 信道划分介质访问控制

  • 频分多路复用(FDM):适合传输模拟信号
  • 时分多路复用(TDM):适合传输数字信号
    • 统计时分多路复用(STDM):动态地分配时隙。
  • 波分多路复用(WDM):即光的频分多路复用。
  • 码分多路复用(CDM)码分多址(CDMA):每个比特时间分成m个短的码片,每个站点有唯一的m位码片序列,各站点的码片序列相互正交(规格化内积为0)。发送1时,发送它的码片序列,发送0时,发送码片序列的反码。
    • 规格化内积:两个码片内积的值/m
    • 发送时,码片叠加;分离时,用该站点的码片与数据作规格化内积,结果为1则数据为1,结果为-1则数据为0。

正交频分复用:WLAN的信道复用技术。

3.5.2 随机访问介质访问控制

  • ALOHA协议
    • 纯ALOHA协议
      • 不检查就发送,如果未收到确认,等待随机时间后再发送。
      • 网络负载G:单位时间\(T_0\)内发送的总帧数。
      • 吞吐量(或者理解为利用率):\(S=Ge^{-2G}\),当\(G=0.5\)时,\(S=0.184\)取最大。
    • 时隙ALOHA协议
      • 各站时间同步,将时间划分为等长的时隙(Slot),只能在时隙开始时发送帧。
      • 吞吐量:\(S=Ge^{-G}\)
  • CSMA协议(载波监听多路访问)
    • 1-坚持CSMA:先监听信道,空闲则立刻发送;信道忙,继续监听,监听到信道空闲后,发送帧的概率为1
    • 非坚持CSMA:先监听信道,空闲则立刻发送;信道忙则放弃监听,等待随机时间后重复。
    • p-坚持CSMA:监听信道,忙则继续监听,如果信道空闲,以概率p发送数据,以概率p-1推迟到下一个时隙,直到发送成功或信道忙。
  • CSMA/CD协议(载波监听多路访问/碰撞检测)
    • 用于总线型、半双工;全双工不需要。通过电压来检测。
    • 先听后发,边听边发,冲突停发,随机重发
    • 争用期\(2\tau\)(冲突窗口、碰撞窗口):端到端时延的两倍。至多经过\(2\tau\)的时间就知道发送碰撞。
    • 最短帧长:争用期可发送数据的长度。凡长度小于这个的帧无效。发送长度小的帧要填充。如10Mb/s以太网,争用期\(51.2\mu s\),最短帧长为512bit。
    • 截断二进制指数退避算法
      • 确定基本退避时间,一般为\(2\tau\)
      • \(k=min\{\text{重传次数},10\}\),注意k不能大于10!!!
      • 从集合\(\{0,1,2,3,\cdots,2^k-1\}\)中随机取一个数r(最大从0~1023随机取数),退避时间为\(r\times \text{基本退避时间(}2\tau\text{)}\)
      • 如果重传16次不成功,则抛弃并向高层报错!!!
  • CSMA/CA协议(载波监听多路访问/碰撞避免)
    • 用于无线局域网。发送的同时不能检测信道。通过能量或载波来检测。
    • 使用链路层确认重传方案,有确认帧
    • 所有站发送完成后,必须等待一段很短的时间(帧间间隔IFS
      • 有三种IFS,从短到长依次为:SIFS、PIFS、DIFS
      • 控制帧、确认帧用SIFS作为发送前等待时延
      • 数据帧发送前等待DIFS,然后发送RTS
    • 隐蔽站问题
      • 请求发送控制帧(RTS):发送数据前预约信道
      • 允许发送控制帧(CTS):给源站发送许可,让其他站点不要发送

3.5.3 轮询访问:令牌传递协议

发送完一帧后就释放令牌。物理拓扑不必是环,逻辑上是环。

过程:

  • 空闲时只有令牌帧传递。
  • 当有数据发送,将数据加到令牌中发送
  • 数据帧沿环路传输,各站点转发数据,并查看自己的地址和目的地址是否相同,相同则复制数据。
  • 数据帧一直沿环路传输直到源点,源点检验是否出错。
  • 源点重新产生令牌,交出控制权。

3.6 局域网

3.6.1 局域网基本概念

拓扑结构:星形、环形、总线形、复合型

传输介质:双绞线、光纤……

三种局域网:

  • 以太网:逻辑上是总线形
  • 令牌环:逻辑是环形
  • FDDI(光纤分布数字接口):逻辑环形,物理双环。

数据链路层的两个子层:

  • 逻辑链路控制子层(LLC):建立释放链路层的逻辑连接、提供与高层的接口、差错控制、给帧加序号
  • 介质访问控制子层(MAC):组帧拆帧、比特差错检验、寻址、竞争处理

3.6.2 以太网

以太网标准上指符合DIX Ethernet V2协议,和IEEE 802.3协议差不多,后者通常也叫以太网。

以太网参考模型一般只包括物理层和数据链路层。

半双工的以太网才需要CSMA/CD,全双工不需要。

无连接,不对数据帧编号;使用曼彻斯特编码。

广播域内所有主机都会收到其中一台主机发送的数据,包括它自己。

传输介质

BASE表示基带传输

10BASE-5 10BASE-2 10BASE-T 10BASE-FL
传输媒体 同轴电缆(粗) 同轴电缆(细) 非屏蔽双绞线(UTP) 光纤对
拓扑 总线形 总线形 星形 点对点
最大段长(m) 500 185 100 2000
最多节点数 100 30 2 2

网卡(网络适配器、网络接口卡):工作在物理层、数据链路层

MAC帧

MAC地址(物理地址):高24位厂商代码,低24位厂商分配

  • 前导码
    • 前同步码:7字节,1010……
    • 帧开始定界符:10101011
  • MAC帧
    • 目的地址:6字节
    • 源地址:6字节
    • 类型/长度:2字节,DIX标准为类型(1501~65535),802.3标准为数据长度(1500以内)
    • 数据:46~1500字节(最短帧长64,64-6-6-4-2=46,1500是规定)。不够的话要填充。
    • 校验码(FCS):4字节,CRC,校验从目的地址到数据段

高速以太网

  • 100BASE-T以太网:全/半双工。最大电缆长度100m(10M以太网是1000m)
  • 吉比特以太网:全/半双工
  • 10吉比特以太网:只能全双工。光纤。

3.6.3 无线局域网

IEEE 802.11:包括802.11a/b/g/n。星形拓扑。使用CSMA/CA。又称WiFi。

中心接入点(AP):有服务集标识符SSID(名字)。

无线局域网的最小构件:基本服务集(BSS)。BSS通过AP连接到分配系统(DS),再连接到另一个BSS,就构成了扩展服务集(ESS)。ESS可以通过Portal(门户)提供有线接入。

比较:

  • 移动IP技术:使用多种方法接入因特网,使用那些路由选择协议。

  • 自组网络:无线领域,有自己特定的路由选择协议,可以不连因特网。

MAC帧

首部30字节,前两个字节帧控制字段中有“去往AP”和“来自AP”,最重要的是3个MAC地址字段。

去往AP 来自AP 地址1(接收端) 地址2(发送端) 地址3(目的/源)
1 0 AP地址 源地址 目的地址
0 1 目的地址 AP地址 源地址

3.6.4 VLAN

较小的广播域。

在以太网帧中插入4字节VLAN标签(插在源地址和类型之间)

  • 前两字节:0x8100表示802.1Q帧
  • 后两字节:只有后面12位有效,表示VLAN标识符(VID)

划分VLAN的方法:

  • 基于端口
  • 基于MAC地址
  • 基于IP地址:可以跨越路由器扩展VLAN

3.7 广域网

由节点交换机(和路由器类似,但只在单个网络中转发)及连接这些交换机的链路组成。

节点交换机:存储并转发分组。

3.7.1 PPP协议

组成部分:

  • 链路控制协议(LCP):建立、配置、管理数据链路
  • 网络控制协议(NCP):为多种网络层协议建立和配置逻辑连接
  • 成帧方法:信息段长度为0~1500(点对点连接没有最短帧长)

特点:

  • 提供差错检测但不纠错
  • 无序号无流量控制
  • 只支持点对点,只支持全双工
  • 两端可以运行不同的网络层协议
  • 面向字节,异步链路中采用字节填充(默认),同步链路采用比特填充

3.7.2 HDLC协议

  • 面向比特,零比特填充
  • PPP帧比HDLC帧多一个2字节的协议字段
  • PPP协议不使用序号和确认机制;HDLC使用了,可靠传输

3.8 数据链路层设备

3.8.1 网桥

连接不同网段。存储转发。

可以互连不同的物理层、不同的MAC子层、不同速率的以太网。

3.8.2 交换机

称局域网交换机或以太网交换机。多端口网桥。多个主机可以同时通信。

  • 每个端口与主机或交换机相连(网桥的端口一般连一个网段)
  • 一般是全双工:24个端口,每个端口10Mb/s(发送速率),则每个用户带宽都是10Mb/s,总容量240Mb/s
    • 如果是半双工:24个端口,每个端口10Mb/s,则每个用户带宽都是10Mb/s,总容量是120Mb/s(半双工,只有一半的用户能发送,另一半只能接收)
  • 独占媒体带宽

交换模式:

  • 直通式交换机:只检测帧的目的地址(6字节)就传输,不存储
  • 存储转发式交换机:检错,可以有多种速率的端口

自学习功能:没有目的地址表项时,向除源端口外的所有端口广播(即使其他的端口对应有MAC地址也要广播)

3.9 总结不同层的设备

如果某一设备实现了某一层的功能且具有存储转发功能,那么它就可以互连在该层使用不同协议的网络,而它上层的协议要相同(因为它处理不了)。

设备 实现的层 连接的协议/层
中继器/集线器 物理层 没有存储转发功能,两边的物理层协议必须相同;(物理层协议相同则可以在物理层互连,)但并不保证能互连数据链路层,数据链路层协议也相同才行
网桥/交换机 物理层、数据链路层 互连不同的物理层、数据链路层(不同的MAC子层、不同速率的以太网);上层的协议要相同
路由器 物理层、数据链路层、网络层 互连不同的物理层、数据链路层、网络层(如ipv4和ipv6互连);上层的协议要相同

4、网络层

4.1 网络层的功能

软件定义网络(SDN):集中式控制平面、分布式数据平面

  • 北向接口:提供的编程接口
  • 南向接口:控制器和转发设备的会话接口
  • 东西向接口:控制器之间的通信

拥塞控制:网络吞吐量小于正常吞吐量,轻度拥塞;吞吐量随负载增加而降低,拥塞;吞吐量为0,死锁。

  • 流量控制:点对点的,抑制发送端的速率
  • 拥塞控制:全局性的,主机、路由器等都参与

4.2 IPv4

4.2.1 IPv4分组

首部:固定20B

  • 版本(4位)
  • 首部长度(4位):以4B为单位,最大15×4B=60B
  • 区分服务(8位)
  • 总长度(16位):以1B为单位,最长65535B
  • 标识(16位):分片时所有片的标识相同
  • 标志(3位)
    • 中间位DF(Don't Fragment):为0表示允许分片
    • 最低位MF(More Fragment):为1表示后面还有分片,为0表示最后一个分片
  • 片偏移(13位):以8B为单位,常见(1500-20)/8=185
  • 生存时间TTL(8位):每过一个路由器减一
  • 协议(8位):6表示TCP,17表示UDP
  • 首部校验和(16位)
  • 源地址(32位)
  • 目的地址(32位)

4.2.2 IP地址与NAT

  • A类(1~126):0xxx xxxx

  • B类(128~191):10xx xxxx

  • C类(192~223):110x xxxx

  • D类(224~239):1110 xxxx。多播

  • E类(240~255):1111 xxxx。保留今后使用

  • 全0:本主机

  • 全1:整个网络的广播地址,受限广播地址(由于路由器隔开广播域了,其实就相当于本网络的广播地址)

  • 127.x.x.x:环回自检地址

  • 主机号全0:本网络

  • 主机号全1:广播

  • 私有地址

    • 10.0.0.0~10.255.255.255
    • 172.16.0.0~172.31.255.255
    • 192.168.0.0~192.168.255.255

NAT不多写了。普通路由器工作在网络层,NAT路由器需要用到传输层的端口号。

4.2.3 子网划分

无分类域间路由选择(CIDR

路由聚合构成超网

最长前缀匹配

主机路由:a.b.c.d/32

默认路由:0.0.0.0/0

4.2.4 ARP、DHCP、ICMP

地址解析协议(ARP)

主机和路由器中有ARP表。

  • ARP请求分组:广播(目的地址全F)
  • ARP响应分组:单播

动态主机配置协议(DHCP)

应用层协议,基于UDP。客户/服务器模式。

  • DHCP发现报文:客户端试图寻址服务器。源:0.0.0.0,目的:255.255.255.255
  • DHCP提供报文:服务器提供IP。源:服务器IP,目的:255.255.255.255
  • DHCP请求报文:客户端请求提供IP。源:0.0.0.0,目的:255.255.255.255
  • DHCP确认报文:服务器确认分配。源:服务器IP,目的:255.255.255.255

网际控制报文协议(ICMP)

  • ICMP差错报告报文

    • 终点不可达
    • 源点抑制:由于拥塞,要求源点减慢发送速率
    • 时间超过:TTL为0
    • 参数问题
    • 改变路由(重定向):下次给更好的路由发送

    对差错报告报文不发送差错报告报文;只对第一个分片发送;组播不发送;特殊地址(环回、全0)不发送。

  • ICMP询问报文

    • 回送请求和回答报文
    • 时间戳请求和回答报文
    • 地址掩码请求和回答报文
    • 路由器询问和通告报文

ping工作在应用层,但直接使用的是ICMP。tracert工作在网络层。

4.2.5 易错点

一台主机有多个IP地址,每一个IP地址都应属于不同的网络。

NAT的表项需要由管理员添加,不会自动添加。

同一子网的IP可以局域网内直接通信,不同子网的需要通过路由器。

片偏移是8B的倍数!如果MTU=800,则最大数据部分不是780(除不尽8),而是776。

默认网关是离当前主机最近的路由器端口地址。

注意路由器的端口也要占IP,问还能给多少主机分配时记得看路由器是否占了IP。

4.3 IPv6

  • 128位(16B)地址。
  • 不允许分片(源节点才能分片,路由器不能分片)
  • (基本)首部长度固定(40B),扩展首部在数据部分
  • 首部长度是8B的整数倍(IPv4是4B的整数倍)
  • 没有校验和字段,加快处理速度
  • 目的地址:单播、多播(一对多)、任播(交付一组计算机中的一个)
  • 缩写:冒号之间开头的0可以省略(:000A:→:A:),双冒号只能出现一次
  • IPv4向IPv6过渡
    • 双协议栈:一台设备同时装有IPv4和IPv6协议栈
    • 隧道技术:IPv6报文作为IPv4报文的数据部分

4.4 路由协议

名词:自治系统(AS)、域内路由选择、域间路由选择

  • 内部网关协议(IGP):RIP、OSPF
  • 外部网关协议(EGP):BGP(或BGP-4)

4.4.1 路由信息协议(RIP)

每个路由器维护到每个网络的距离向量。最多只能有15跳,16表示不可达。

字段:目的网络、距离、下一跳

算法:

  • 收到从相邻路由器X发来的报文,将所有项下一跳修改为X、距离+1
  • 对每一项
    • 原路由表没有目的网络N,添加
    • 原路由表有N且下一跳为X,更新
    • 原路由表有N且下一跳不为X,距离小则更新
  • 180s没收到相邻路由器的报文,记为不可达(距离16)

4.4.2 开放最短路径优先协议(OSPF)

所有路由器最终都能建立相同的链路状态数据库

可以设置代价,可以多路径负载平衡。

区域(Area):各区域都与主干区域连接,只在区域内用洪泛法交换链路状态信息。

几类路由器:区域内路由器、区域边界路由器(ABR)、主干路由器(主干区域的路由器)、自治系统边界路由器(ASBR)

分组:

  • 问候分组(Hello):发现和维持可达性,通常每10s问候一次
  • 数据库描述分组(DD):邻站之间发送链路状态数据库的摘要信息(就知道了自己比相邻节点缺少哪些)
  • 链路状态请求分组(LSR):(知道自己少了哪些,就)请求对方发送某些链路状态的详细信息
  • 链路状态更新分组(LSU):向对端发送其所需要的LSA,或泛洪自己更新的LSA
  • 链路状态确认分组(LSAck):对LSU的确认

建立过程:

  • 确定可达性:互相发Hello
  • 达到数据库同步:互相发DD
  • 新情况下同步:LSR、LSU、LSAck

4.4.3 边界网关协议(BGP)

每个AS至少一个BGP发言人,不同AS的BGP发言人之间交换路由信息,通过TCP连接。

交换的信息:到达某个网络所经过的AS路径。

报文:

  • 打开报文(Open):与BGP发言人建立连接
  • 更新报文(Update):发送路由信息以及撤销路由
  • 保活报文(Keepalive)
  • 通知报文(Notification):差错

4.4.4 路由协议比较

RIP OSPF BGP
路由算法 距离向量 链路状态 路径向量
所属层和传输协议 应用层UDP 网络层IP 应用层TCP
路径选择 跳数最少 代价最低 相对较好
交换节点 相邻节点 所有节点 BGP发言人之间
交换内容 自己的路由表 与本路由器相邻的所有路由器的链路状态 首次交换整个路由表,之后交换有变化的部分
是否支持CIDR RIP2才支持 支持 支持
交换时间 每30s 有变化才交换 有变化才交换

4.5 IP组播

4.5.1 组播概念

一定是UDP。需要组播路由器的支持。

组播组:使用一个D类地址作为组的地址,一台主机可属于多个组。

IP数据报中协议字段值为2,表示使用IGMP(因特网组管理协议)

4.5.2 组播地址

使用D类地址,开头是1110,范围224.0.0.0~239.255.255.255。并非所有D类地址都可以作为组播地址,有些保留给路由协议等使用了。

以太网组播地址范围:01-00-5E-00-00-00到01-00-5E-7F-FF-FF。

D类地址28位可供分配,以太网只有23位。因此28位中的前5位不作映射,32个IP组播地址映射成一个MAC地址。由于映射关系不唯一(多个IP地址对应同一个MAC组播地址),因此主机还要在IP层利用软件过滤。

4.5.3 IGMP

  • 主机加入新的组播组时,主机向组播地址发送IGMP报文,本地组播路由器收到后,将组成员关系转发给其他组播路由器。
  • 本地组播路由器周期性探询主机是否还属于某个组,如果没有响应则不再转发成员关系。
  • 组播路由选择:找出以源主机为根结点的组播转发树。

4.6 移动IP

  • 移动节点:具有永久地址(归属地址)
  • 本地代理(归属代理):原始网络上的路由器
  • 外地代理:新网络上的路由器

移动到外地网络时,外地代理向归属代理登记转交地址(新的地址),归属代理构建一条通往转交地址的隧道。发送数据时直接通过外地代理发送,接收数据时由本地代理通过隧道转发。

4.7 路由器

路由器组成:

  • 路由选择部分(控制部分)
  • 分组转发部分
    • 交换结构
    • 输入端口
    • 输出端口

虽然一般不区别路由表和转发表,但是:

表项 目的 实现
路由表 目的IP、子网掩码、下一跳IP、接口…… 使对网络拓扑变化的计算最优 软件
转发表 目的IP、下一跳MAC、接口…… 使查找过程最优 软件/硬件

5、传输层

5.1 传输层提供的服务

  • 进程间的逻辑通信,端到端

  • 复用(不同进程使用同一个传输层协议)和分用(接收方剥去首部后能正确交付给不同进程)

    网络层的复用(不同协议都可以封装成IP数据报)和分用(接收方剥去首部后把数据交给相应的协议)

  • 差错检测:对首部和数据

  • 提供两种不同协议

服务访问点(SAP)

  • 数据链路层SAP:MAC地址
  • 网络层SAP:IP地址
  • 传输层服务访问点(TSAP):端口

端口号

  • 服务器端使用的端口

    • 熟知端口号(0~1023)

      应用程序 协议 端口
      FTP 数据连接20,控制连接21
      TELNET(远程登录) 23
      SMTP 25
      DNS UDP 53
      TFTP(简单文件传输协议) UDP 69
      HTTP 80
      POP3 110
      SNMP(简单网络管理协议) UDP 161
      HTTPS 443
    • 登记端口号(1024~49151)

  • 客户端使用的端口(49152~65535)(短暂端口,临时端口)

套接字(Socket):IP地址:端口号

如果一个协议使用确认机制对传输的数据进行确认,那么认为它是可靠的协议

5.2 UDP协议

UDP支持一对一一对多(广播、组播)、多对一(多个进程和一个进程通信,如中控)、多对多通信(多个进程互相通信,如聊天)。

UDP首部格式共8B

  • 源端口:2B
  • 目的端口:2B
  • 长度:2B,首部和数据的长度,以1字节为单位,最小值为8
  • 校验和:2B,首部和数据的校验和。可选,如果不用就置0

UDP校验

  • 添加伪首部,伪首部只用于计算校验和,不发送,共12B。包括:源IP(4B)、目的IP(4B)、0(1B)、17(1B)、UDP长度(2B,和首部中的长度一样)。

  • 如果UDP的数据部分不是偶数个字节,则末尾填充全0字节,仅用于计算而不发送。

  • 二进制反码求和:从伪首部到首部到数据部分,每2B为一组,依次反码求和。依次两两相加,当前位有进位加到前一位,最高位有进位加到最低位。得到的结果取反就是校验和

  • 校验:方法一样,如果求出来结果全1则正确

5.3 TCP协议

无差错、不丢失、不重复、有序;全双工。

5.3.1 TCP报文段

首部20B固定部分,后面有可选部分,长度为4B的倍数。

  • 源端口目的端口(各16位)
  • 序号(32位):该报文发送的数据的第一个字节的序号
  • 确认号(32位):期望收到对方下一个报文的第一个数据字节的序号
  • 数据偏移(首部长度)(4位):和IP一样,以4B为单位,最大15,表示首部最长60B
  • 保留(6位):今后使用,目前置0
  • 几个标志位(6位)
    • 紧急位URG
    • 确认位ACK:ACK=1确认号才有效,TCP建立连接后所有传送的报文段都必须ACK置1
    • 推送位PSH:尽快交付给接收进程
    • 复位位RST:严重错误,必须释放连接重新建立
    • 同步位SYN
    • 终止位FIN
  • 窗口(16位):即接收窗口
  • 校验和(16位):校验伪首部(和UDP一样,只是协议字段改为6)、首部数据
  • 紧急指针:URG=1时有意义,指出本报文段紧急数据的字节数(紧急数据在数据的最前面)
  • 选项:如MSS(最大报文段长度)数据字段的最大长度,默认536B,因此所有主机都能接收的报文段长度是536+20=556B

5.3.2 TCP连接管理

FIN报文即使不携带数据也消耗一个序号(言外之意就是FIN报文可以携带数据)

等待2MSL(最长报文寿命)原因:

  • 防止最后一个报文丢失,可以重传
  • 经过2MSL可以保证本连接的所有报文从网络中消失

两个进程都能提出释放连接的请求

(源IP,源端口,目的IP,目的端口),任何一个不同就是不同的连接。如果已经有了一个连接,那么再建立四元组同样的连接会失败。

为什么不两次握手?为了防止已失效的连接请求报文段突然又传送到服务器。(比如第一个连接请求迟迟没有收到回复,又发了一个连接请求,结果一会第一个连接请求又到了)

5.3.3 TCP可靠传输

  • 校验
  • 序号
  • 确认
  • 重传
    • 超时:加权平均往返时间RTTs,超时重传时间略大于RTTs
    • 冗余ACK:收到同一个报文段的3个冗余ACK时立刻重传(快重传

5.3.4 TCP流量控制

发送窗口=min{接收窗口rwnd拥塞窗口cwnd}

5.3.5 TCP拥塞控制

与流量控制的区别:

  • 拥塞控制是全局性的过程,涉及所有主机、路由器、与降低网络传输性能有关的所有因素
  • 流量控制是端到端的问题,抑制发送端的速率

相同点是:都通过控制发送端的发送频率

  • 当cwnd=sshresh时,既可以使用慢开始算法,又可以使用拥塞避免算法(通常)。
  • 慢开始阶段cwnd不能超过sshresh(如第二个图)

TCP面向字节,采用对报文段确认的机制

6、应用层

6.1 网络应用模型

  • 客户/服务器模型(C/S)
  • P2P模型:任意一对计算机称为对等方。每个结点都有下载、上传功能。多个客户机可以直接共享文档。

6.2 域名系统

UDP,端口53。包含以下三部分:

  • 层次域名空间
    • 顶级域
      • 国家顶级域名:.cn
      • 通用顶级域名:.com
      • 基础结构域名(反向域名):只有一个.arpa,用于反向域名解析
    • 二级域
    • 三级域
  • 域名服务器:广泛使用高速缓存
    • 根域名服务器:所有根域名服务器知道所有顶级域名服务器的IP
    • 顶级域名服务器
    • 授权域名服务器/权限域名服务器
    • 本地域名服务器
  • 域名解析(正向解析:域名→IP;反向解析:IP→域名)
    • 递归查询:从主机到本地域名服务器都是递归查询
    • 迭代查询

域名查询次数和域名级数有关:如查询www.abc.xyz.com,需要查询根域名服务器、顶级域名服务器.com、权限域名服务器.xyz、权限域名服务器.abc,本地域名服务器共需要4次查询

多台主机可以映射到同一域名(如负载均衡);一台主机可以映射多个域名(如虚拟主机)

如果主机有域名缓存,就不同查本地域名服务器了

6.3 文件传输协议

C/S模式,TCP。允许客户指明文件类型与格式,允许文件具有存取权限。

  • 控制连接(端口21):传输控制信息(连接请求、传送请求、中止传送……),保持打开
  • 数据连接(端口20)
    • 主动模式(PORT):客户端开放一个端口,服务器20号端口主动与客户端的端口连接
    • 被动模式(PASV):客户端连接到服务器的随机端口(注意不是20号)

FTP修改文件时需要先下载下来,修改之后再上传;网络文件系统(NFS),可以直接远程修改。

匿名FTP访问通常使用anonymous作为用户名。

6.4 电子邮件

组成结构

  • 用户代理:电子邮件客户端
  • 邮件服务器:C/S模式,同时充当客户端和服务器。
  • 邮件发送协议和读取协议
    • 邮件发送协议:用户代理→邮件服务器,邮件服务器之间。
      • STMP(简单邮件传输协议):TCP,端口25。以下是客户端的命令:
        • HELLO:附发送方主机名
        • MAIL:附发送方地址
        • RCPT:一个或多个,收件人地址
        • DATA:传输数据
        • QUIT:发送完毕
    • 邮件读取协议:用户代理从邮件服务器读取
      • POP3:TCP,端口110。客户端可以选择两种工作方式:下载并保留、下载并删除。POP3也是基于ASCII码,如果要传输非ASCII码,得用MIME。明文传输密码。
      • IMAP(因特网报文存取协议):复杂得多

电子邮件格式:

  • To:必填,后加一个或多个电子邮件地址(收件人邮箱名@邮箱所在主机的域名
  • Subject:可选,主题
  • From:必填,一般系统自动填入
  • 首部和主体之间用空行分隔

多用途网际邮件扩充(MIME):STMP只能传送7比特ASCII码。MIME扩展了STMP,可以传送多种内容。

基于万维网的电子邮件,如Gmail等,从浏览器到邮件服务器之间发送接收使用的是HTTP,邮件服务器之间才是STMP

6.5 万维网

三个标准

  • 统一资源定位符(URL):<协议>://<主机>:<端口>/<路径>

  • 超文本传输协议(HTTP):TCP,端口80。但HTTP本身是无连接的(无需建立HTTP连接),无状态(常使用Cookie跟踪用户)

    • 持久连接和非持久连接

      • 非持久连接:每个元素对象(网页、图片……)单独建立一个TCP连接
      • 持久连接:HTTP/1.1支持,HTTP/1.1默认持久连接。保持一条连接,传输所有元素都用这个
        • 非流水线:客户收到一个响应才能发送下一个请求
        • 流水线

      Connection表示连接方式:Close非持续连接,keep-alive持续连接

    • 报文结构

      • 开始行

        • 请求报文的开始行叫请求行,包括:方法、URL、版本。空格分隔,结尾回车换行
        • 响应报文的开始行叫状态行,包括:版本、状态码、短语。空格分隔,结尾回车换行
        方法 意义
        GET 请求读取URL标识的信息
        HEAD 请求读取由URL标识的信息的首部。服务器会响应,但不会返回请求对象(常用于调试)
        POST 给服务器添加信息
      • 首部行:说明一些信息。每行都是首部字段名:值的形式

      • 实体主体:请求报文一般无,响应报文也可能无

  • 超文本标记语言(HTML)


计算机网络
https://shuusui.site/blog/2023/08/30/cn/
作者
Shuusui
发布于
2023年8月30日
更新于
2023年11月30日
许可协议