计算机网络

概述

从互联网的工作方式上看,可以划分为两大块:边缘部分和核心部分

电路交换分为三个阶段:建立连接、通信、释放连接

分组交换的主要特点:

  • 采用存储转发技术
  • 在发送端,先把较长的报文划分成较短的、固定长度的数据段
  • 一个数据段前面添加上首部构成分组

报文交换:基于存储转发原理

三种交换的比较

计算机网络的性能指标:

  • 速率
  • 带宽
  • 吞吐量
  • 时延
  • 时延带宽积
  • 往返时间 RTT
  • 利用率

网络协议三要素:

  • 语法
  • 语义
  • 同步

计算机网络体系结构

  • 应用层:交互的数据单元为报文,任务是通过应用进程间的交互来完成特定网络应用(包含会话层、表示层,应用层)
  • 运输层:负责向两台主机进程之间的通信提供通用的数据传输服务,主要使用 TCP 和 UDP 协议
  • 网络层:负责为分组交换网上的不同主机提供通信服务,使用 IP 协议,IP 数据报
  • 数据链路层:将网络层交下的 IP 数据报封装成帧,在两个相邻结点间的链路上传送帧
  • 物理层:连接各种计算机的传输媒体上传输数据比特流

计算机网络要采用分层结构:

  1. 各层之间相互独立:高层是不需要知道底层的功能是采取何种硬件技术实现的,它只需要知道通过与底层的接口就可以获得所需要的服务;
  2. 灵活性好:各层都可以采用最适当的技术来实现,例如某一层的实现技术发生了变化,只要这一层的功能与接口保持不变,实现技术的变化都并不会对其他各层以及整个系统的工作产生影响;
  3. 易于实现和标准化:采取了规范的层次结构去组织网络功能与协议,可以将计算机网络复杂的通信过程划分为有序的连续动作与有序的交互过程,有利于将网络复杂的通信工作过程化解为一系列可以控制和实现的功能模块,使得复杂的计算机网络系统变得易于设计,实现和标准化;

物理层

基本概念

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体,尽可能地屏蔽掉不同传输媒体和通信手段的差异。

  • 机械特性
  • 电气特性
  • 功能特性
  • 过程特性

数据通信的基础知识

一个数据通信系统包括三大部分:源系统(或发送端、发送方)、传输系统(或传输网络)和目的系统(或接收端、接收方)

单向通信(单工)——只能有一个方向的通信而没有反方向的交互
双向交替通信(半双工)——通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)
双向同时通信(全双工)——通信的双方可以同时发送和接收信息

基带信号(即基本频带信号)—— 来自信源的信号

调制分为两大类:

  • 基带调制——仅对基带信号的波形进行变换,使它能够与信道特性相适应
    变换后的信号仍然是基带信号。把这种过程称为编码 (coding)
  • 带通调制——使用载波进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号
    经过载波调制后的信号称为带通信号

常用编码方式

  • 不归零制:正电平代表 1,负电平代表 0
  • 归零制:正脉冲代表 1,负脉冲代表 0
  • 曼彻斯特编码:位周期中心的向上跳变代表 0,位周期中心的向下跳变代表 1。也可反过来定义
  • 差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表 0,而位开始边界没有跳变代表 1数字信号常用的编码方式

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

  • 信道能够通过的频率范围
    在任何信道中,码元传输的速率是有上限的,否则就会出现码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。
  • 信噪比
    信噪比就是信号的平均功率和噪声的平均功率之比。常记为 S/N,并用分贝 (dB) 作为度量单位。即:信噪比(dB) = 10 log10(S/N) (dB)
    信道的极限信息传输速率 C 可表达为:C = W log2(1+S/N) (bit/s)
    其中:W 为信道的带宽(以 Hz 为单位);S 为信道内所传信号的平均功率;N 为信道内部的高斯噪声功率。

香农公式表明:信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高;只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。

物理层下面的传输媒体

导引型传输媒体:

  1. 双绞线
  2. 同轴电缆
  3. 光缆

非导引型传输媒体——自由空间

信道复用技术

信道复用技术——使用一个共享信道进行通信

1.频分复用

频分复用的所有用户在同样的时间占用不同的带宽资源频分复用

2.时分复用

时分复用的所有用户在不同的时间占用同样的频带宽度时分复用

3.统计时分复用

统计时分复用是一种改良的时分复用统计时分复用

4.波分复用

波分复用就是光的频分复用。使用一根光纤来同时传输多个光载波信号。

5.码分复用

每一个比特时间划分为 m 个短的间隔,称为码片

每个站被指派一个唯一的 m bit 码片序列:

  • 如发送比特 1,则发送自己的 m bit 码片序列
  • 如发送比特 0,则发送该码片序列的二进制反码

每个站分配的码片序列不仅必须各不相同,并且还必须互相正交

CDMA 的工作原理

数据链路层

点对点信道的数据链路层

数据链路和帧

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

数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。

数据链路层传送的是——

三个基本问题

封装成帧、透明传输、差错检测

1.封装成帧

在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限(帧定界)用帧首部和帧尾部封装成帧

控制字符 SOH (Start Of Header) 表示帧的首部开始;

控制字符 EOT (End Of Transmission) 表示帧的结束;

2.透明传输

无论什么样的比特组合数据,都能放在帧中传输过去。

如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”。

解决方法:字节填充或字符填充——插入一个转义字符 “ESC” 用字节填充法解决透明传输的问题

3.差错检测

在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER。

循环冗余检验 CRC

  1. 假设待传送的一组数据 M = 101001(现在 k = 6)
  2. 用二进制的模 2 运算进行 2^n 乘 M 的运算,这相当于在 M 后面添加 n 个 0
  3. 得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位
  4. 将余数 R 作为冗余码拼接在数据 M 后面发送出去循环冗余检验例子

无差错接受是指:凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错。

点对点协议 PPP

PPP 帧的首部和尾部分别为 4 个字段和 2 个字段;标志字段 F = 0x7E;

PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节PPP 帧格式

透明传输问题——字节填充和零比特填充

广播信道的数据链路层

CSMA/CD 协议

CSMA/CD 含义:载波监听多点接入 / 碰撞检测

  • “多点接入”表示许多计算机以多点接入的方式连接在一根总线上
  • “载波监听”是指每一个站在发送数据之前,用电子技术检测总线上有没有其他计算机发送的数据信号,如果有,则暂时不要发送数据,以免发生碰撞。
  • “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,然后等待一段随机时间后再次发送。

使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)

争用期

二进制指数类型退避算法:

  1. 基本退避时间取为争用期 51.2 us(最短帧长64 B = 512 bit)
  2. 从整数集合[0,1,…, (2^k - 1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间,其中 k = Min[重传次数, 10]
  3. 当 k <= 10 时,参数 k 等于重传次数,当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告

强化碰撞——当发送数据的站一旦发现发生了碰撞时:

  • 立即停止发送数据
  • 继续发送若干比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞。

CSMA/CD 协议的要点

  1. 准备发送。在发送之前,必须先检测信道
  2. 检测信道。若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在 96 比特时间(帧间最小间隔)内信道保持空闲,就发送这个帧
  3. 检查碰撞。在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
    • 发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到 1
    • 发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待 r 倍 512 比特时间后,返回到步骤 2,继续检测信道。但若重传达 16 次仍不能成功,则停止重传而向上报错

使用集线器的星形拓扑

集线器的一些特点:

  • 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线
  • 集线器很像一个多接口的转发器,工作在物理层

以太网的 MAC 层

硬件地址又称为物理地址或 MAC 地址。类型字段用来标志上一层使用的是什么协议。

MAC 帧的格式 以太网 V 2的 MAC 帧格式

无效的 MAC 帧:

  • 帧的长度不是整数个字节
  • 用收到的帧检验序列 FCS 查出有差错
  • 数据字段的长度不在 46 ~ 1500 字节之间
  • 有效的 MAC 帧长度为 64 ~ 1518 字节之间

扩展的以太网

1.网桥

  • 它根据 MAC 帧的目的地址对收到的帧进行转发和过滤
  • 工作在数据链路层
  • 当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口,或把它丢弃

2.交换机

  • 以太网交换机实质上就是一个多接口的网桥
  • 根据 MAC 地址转发,有存储转发 方式和直通 方式
  • 全双工方式工作在数据链路层
  • 以太网交换机具有并行性,用户独享带宽
  • 自学习功能

3.集线器

  • 多个端口的转发器
  • 半双工方式工作在物理层
  • 工作原理广播形式
  • 用户共享带宽

虚拟局域网——VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组三个虚拟局域网

网络层

网际协议 IP

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一

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

  • 地址解析协议 ARP
  • 网际控制报文协议 ICMP
  • 网际组管理协议 IGMP

分类的 IP 地址

IP地址结构

各类 IP 地址

IP 地址与硬件地址

  • 硬件地址是数据链路层和物理层使用的地址
  • IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(IP 地址是用软件实现的)

地址解析协议 ARP ——从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址

一个 IP 数据报由首部和数据两部分组成,首部的前一部分是固定长度,共 20 字节。

IP数据报组成

划分子网和构造超网

子网掩码——将 IP 地址的主机号进行子网划分。把子网掩码和 IP 地址进行逐位的与运算,就立即得出网络地址。

划分子网

CIDR 使用“斜线记法”,它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数。例如: 220.78.168.0 / 24

ICMP

  • 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP
  • ICMP 不是高层协议,而是 IP 层的协议

ICMP 差错报告报文共有 4 种

  1. 终点不可达
  2. 时间超过
  3. 参数问题
  4. 改变路由(重定向)

互联网的路由选择协议

  • 内部网关协议 IGP
  • 外部网关协议 EGP
  1. 内部网关协议 RIP

    协议 RIP 是一种分布式的、基于距离向量的路由选择协议。实现简单,开销较小。

    RIP协议特点:好消息传播得快,坏消息传播得慢

    • 仅和相邻路由器交换信息
    • 交换的信息是当前本路由器所知道的全部信息
    • 按固定的时间间隔交换路由信息
  2. 内部网关协议 OSPF

    OSPF 最主要的特征就是使用分布式的链路状态协议

    • 向本自治系统中所有路由器发送信息(洪泛法)
    • 发送的信息就是与本路由器相邻的所有路由器的链路状态
    • 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息
  3. 外部网关协议 BGP

    BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

运输层

运输层向它上面的应用曾提供通信服务。通信的真正的端点并不是主机而是主机中的进程。

运输层的两个主要协议:用户数据报协议 UDP 和 传输控制协议 TCP

UDP

  • UDP 是无连接的
  • UDP 使用尽最大努力交付
  • UDP 是面向报文的(UDP 一次交付一个完整的报文)
  • UDP 没有拥塞控制
  • UDP 支持一对一、一对多、多对一和多对多的交互通信
  • UDP 的首部开销小(只有 8 个字节)

UDP 的首部格式

虽然在 UDP 之间的通信要用到其端口号,但由于 UDP 的通信是无连接的,因此不需要使用套接字。

TCP

  • TCP 是面向连接的运输层协议
  • 每一条 TCP连接只能是点对点的
  • TCP 提供可靠的交付服务
  • TCP 提供全双工通信
  • 面向字节流

TCP 的首部格式

  • 端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口才能实现
  • 序号字段的值则指的是本报文段所发送 的数据的第一个字节的序号
  • 确认号字段是期望收到 对方的下一个报文段的数据的第一个字节的序号
  • 数据偏移指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远
  • 保留字段保留为今后使用,但目前应置为 0
  • 紧急 URG = 1 时,表明紧急指针字段有效
  • 确认 ACK = 1 时,确认号字段才有效
  • 推送 PSH = 1 时,尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付
  • 复位 RST = 1 时,TCP 连接中出现严重差错,必须释放连接,然后再重新建立运输连接
  • 同步 SYN = 1 时,这是一个连接请求或连接接受报文
  • 终止 FIN = 1 时,此报文段的发送端的数据已发送完毕,并要求释放运输连接
  • 窗口字段用来让对方设置发送窗口
  • 检验和字段检验的范围包括首部和数据这两部分
  • 紧急指针字段指出在本报文段中紧急数据共有多少个字节
  • 选项字段:最大报文段长度 MSS、窗口扩大选项、时间戳选项、选择确认选项
  • 填充字段使整个首部长度是 4 字节的整数倍

TCP 的流量控制

流量控制就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。

发送方的发送窗口不能超过接收方给出的接收窗口的数值。TCP 的窗口单位是字节,不是报文段。

TCP 的拥塞控制

拥塞——在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏

  • 慢开始(cwnd < ssthresh、超时 )
  • 拥塞避免(cwnd > ssthresh )
  • 快重传(3-ACK)
  • 快恢复(3-ACK)

TCP 的拥塞控制

TCP 的运输连接管理

TCP 是面向连接的协议。运输连接有三个阶段:连接建立、数据传送、连接释放

TCP 连接建立过程中要解决的三个问题

  • 要使每一方能够确知对方的存在
  • 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)
  • 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配

TCP 的连接建立

握手需要在客户和服务器之间交换三个 TCP 报文段,称之为三报文握手。

三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。

三报文握手

  1. A 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x
  2. B 的 TCP 收到连接请求报文段后,如同意,B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1,自己选择的序号 seq = y
  3. A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1

TCP 的连接释放

TCP 的连接释放

应用层

应用层就是规定应用进程在通信时所遵循的协议。应用层的许多协议都是基于客户服务器方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。

域名系统 DNS

  • 主机向本地域名服务器的查询一般都是采用递归查询
  • 本地域名服务器向根域名服务器的查询通常是采用迭代查询
文章作者: gzwang
文章链接: https://gzwangu.github.io/2020/06/14/计算机网络/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Gzwang's Blog