计算机网络

Published: 10/1/2023

概述

按照组成部分来划分,计算机网络主要由软件,硬件,协议三部分组成;按照功能划分,计算机网络也可分为通信子网和资源子网两部分;按照拓扑结构,可分为总线形,星形,环形,总线形。其功能主要有数据通信,资源共享,分布式处理等。

主要的性能指标有:

  • 速率:传播数据的速率(b/s)
  • 带宽: 通信现路最高数据率
  • 吞吐量: 单位时间内通过网络数据量
  • 时延:数据从一段传送到另一端所需时间

发送时延

传播时延

  • 时延带宽积: 传播时间 X 带宽

  • 往返时间:从发送方发送数据到发送方接收到接收方发送的应答信息

  • 利用率: 包含信道利用率和网络利用率


计算机网络的体系结构是计算机网络的各层及其协议的集合

分层的原因:将数据通过网络传输十分困难,将网络分层是将复杂问题简单化,局部化的有效方法。

主要分层方法有OSI 7层,TCP/IP 4层,5层体系结构:

image-20240531210255292

  • 协议数据单元(PDU):对等层次间传输数据单元

  • 实体:任何可发送或接收信息的硬件或软件进程

对等实体:在同一层次的实体。

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

协议分为语法,语义和同步三个方面,其中语法定义了传输数据的格式,语义定义了所需完成功能,同步则定义了通信的时序。

物理层

物理层主要定义数据终端设备与数据通信设备的物理与逻辑链接方法,主要任务为在物理媒体上为数据端设备透明的传输原始比特流,其传输单位为比特。

主要特性有:

  • 机械特性: 接口的形状与尺寸,连接器的引脚数目等
  • 电器特性:电压范围,电流范围,接口的阻抗等
  • 功能特性:比如不同电压所表示的意义
  • 过程特性:数据传输的速率,传输距离等

信号:根据是否连续可分为模拟信号与数字信号;类似的存在模拟数据与数字数据

码元: 固定时长的信号波形(表示K进制数字),其时长为 码元宽度

通信系统: 主要由信源(信号发送者),信道(信号传播媒介),信宿(信号接收者)组成

通信方式: 单工(只有一个方向进行信息传播);半双工(双方皆可通信,但不能同时);全双工(双方皆可同时通信)

速率: 分为码元传输速率(单位时间内传输码元个数,单位为Baud)与数据传输速率(单位时间内传输比特个数,单位为b/s)

奈奎斯特定理

奈氏准则: 理想低通环境,为避免码间串扰,极限码元传输速率为2w波特(W为理想低通信道带宽)

极限数据传播速率如下(V为码元所表示离散电平个数):

信噪比

信噪比:信号功率与噪声功率之比,该计算方式没有单位。

以下计算方式的信噪比的单位为db,其计算方式为:

香农定理

香农定理:对于存在噪声信道的极限数据传输速率C,信道带宽W有:

这表明,带宽或信道信噪比越高,极限传输速率越高。除了提高信噪比,还可以通过对码元进行编码来提高传输速率。同时如果传输带宽与信噪比确定,则极限数据传输速率也是确定的。

编码与调制

编码与调制主要负责将数据转化为对应信号。

编码方式: 归零,非归零,反向归零,曼彻斯特,差分曼彻斯特

调制方式: 调幅,调频,调相,正交振幅调制QAM

  1. 模拟数据转模拟信号:使用频分复用来提高传输效率

  2. 模拟数据转数字信号:采样,量化,编码。采样频率需大于最大频率两倍

  3. 数字数据转模拟信号:调制

  4. 数字数据转数字信号:编码

传输介质

主要传播介质有 双绞线,同轴电缆,光纤,无线传播介质。

  • 双绞线: 两根绝缘铜线绞合,主要用于局域网;根据是否使用铜网屏蔽,可分为屏蔽双绞线与非屏蔽双绞线
  • 同轴电缆: 由内导体,绝缘层,外导体,外绝缘层组成,主要用于广域网
  • 光纤: 由光纤芯,包层,包覆层组成,主要用于长距离传输;根据是否包含多条光传播路径,可分为单模光纤与多模光纤
  • 无线传播介质: 通过无线电波传播,主要用于移动通信

物理设备

主要设备有中继器与集线器。

中继器:利用信号再生技术,将信号进行整形,放大,再发送出去,用于消除信号长距离传播出现的失真和强度减弱问题。

集线器: 实质是多端口的中继器,用于连接多个设备,当有数据传输时,将将数据从一个端口转发到所有其他端口,共享冲突域与广播域。

数据链路层

链路层的主要功能有封装成帧,透明传输,差错检测,其传输单位为物理帧。主要负责将物理层不可靠的比特流传输变为链路层无差错的帧传输,并向网络层提供服务。

封装成帧

将网络层下发的分组添加上物理信息后组成所需发送的帧,并将接收的帧进行解析得到接收的分组上交给网络层。首先需要处理帧定界的问题。

  1. 字符计数法:在首段添加计数字段表示帧的长度。(易出错)

  2. 字节填充法:使用特殊字节来表示帧的开始和结束,使用转义字节来表示帧中出现的特殊字节

  3. 零比特填充法: 使用特殊字节0b0111_1110作为帧开始与结束标志,在其他部分中每遇到5个连续的1就添加入一位0.

差错检测

使用冗余编码技术,在末尾添加上检错编码或是纠错编码。检错编码主要有奇偶校验码,纠错编码主要由CRC循环冗余校验与Hamming海明码。

CRC循环冗余码又称多项式码,定义一个k-1阶多项式来表达一组k位长的字节序列,对应阶项存在则为1,否则为0。使用原始数据对该字节序列进行二进制除法(异或),最终得到了所需的帧检测序列FCS。接收方只需使用得到的数据对之前使用的k位字节序列进行二进制除法,若为0则正确,否则出错。

流量控制与可靠传输

流量控制主要防止发送数据超过了接收方缓冲大小,所以基本思想为接收方控制发送方发送速率,主要方法有滑动窗口协议。

滑动窗口协议

双方维护一个发送窗口与接收窗口。发送窗口表示未收到对方确认信息时所能发送的数据帧,接收窗口则是为了确认可接受的帧。

发送窗口与接收窗口宽度和不应超过帧序号所允许范围。

  1. 停止-等待: 每发送一帧,就必须等待接收方返回确认帧。发送窗口与接收窗口长度都为1
  2. 后退N帧: 第一种的改进,可连续发送帧,但超时且未收到确认帧则需重发最后确认之后的N帧,同时接收方使用捎带确认,返回目前已接受的最后一帧序号,发送窗口为N,接收窗口为1
  3. 选择性重传: 每一个帧都拥有计时器,若超时且未收到确认帧,则重传该帧,发送窗口为M,接收窗口为N

ARQ自动请求重传通过接收方请求发送方重传出错的数据帧来恢复以此实现可靠传输,主要有 停止-等待ARQ,后退N帧ARQ,选择重传ARQ。

介质访问控制

介质中可能存在多个节点需要发送信号,介质访问控制则是为了隔离其他节点所传输的信号。主要分为信道划分,随机访问,令牌和轮询。

信道划分

  1. 时分复用:划分出若干时间片,轮流给每个节点使用
  2. 频分复用: 不同节点使用不同频率,最后叠加复合信号
  3. 波分复用: 使用不同波长的光信号进行传输
  4. 码分复用:

随机访问

令牌

MAC帧

主要设备

网络层

IP

IPV4

IPV6

ARP与NAT

传输层

UDP

TCP

可靠传输

拥塞控制

应用层

应用层主要利用传输层提供的服务来实现各种用户程序。

HTTP与HTTPS

HTTP(超文本传输协议)是一类用户层协议,1.0与1.1版本使用TCP作为传输层协议。使用端口为80端口,主要用于网络中服务器与用户间数据传输。

URL(统一资源位置符):用于表示网络中的资源,其格式为: <协议>://<主机>:<端口>/<路径>。

HTTP是一种无连接,无状态的协议,尽管其使用TCP,但1.0版本每次数据传输都需要重新建立TCP连接并在传输完成后重新释放连接。1.1版本提供了持久化连接,在建立了TCP连接后可以HTTP可以传输多次;2.0版本则使用QUIC(UDP的可靠版本)代替TCP协议,增加了多路复用功能。

其工作方式如下:

  1. 客户端向浏览器输入URL并进入

  2. 利用DNS解析域名(如果是域名的话)

  3. 向对应服务器发送请求

  4. 和服务器建立TCP连接

  5. 完成HTTP数据传输

  6. 释放TCP连接

HTTP使用明文数据传输,HTTPS建立在HTTP之上,与HTTP相比增加了SSL/TLS用于加密数据。

在建立TCP连接之前,服务端与客户端必须交换密钥,在发起请求后,服务端会向客户端发送对应证书(包含签发机构,公钥以及签发时间)。客户端接收该证书后,利用本机数据(根证书)进行验证,如果正确则生成pre-master-key,并使用证书中的公钥进行加密,服务器接收到该key后则使用私钥进行解密,并告知客户端已收到,至此双方交换完密钥。

HTTPS1.0需要2个RTT,而HTTPS1.1则仅需1.5RTT用于证书的交换。

DNS

DNS(域名系统)用于将域名转化为对应的IP地址。

域名空间: 域名从右到左由点分割形成每个子域,每个部分由对应层级的域名服务器管理。

工作原理:若干服务器设计为分布式数据库用于存放域名与IP地址映射,用户对服务器进行请求并缓存结果。

域名服务器主要包括: 根域名服务器,授权域名服务器,本地域名服务器。

查询方式可分为:递归查询与迭代查询。

  • 递归查询: 被请求方若无对应映射则代替请求方向更高级服务器发起请求,并将结果返回给请求方,常用于用户向本地域名服务器发起请求

  • 迭代查询: 被请求方若无对应信息则返回可请求的域名服务器地址,否则直接返回对应域名的IP地址

工作过程:

  1. 用户检查本地缓存,若有则直接使用缓存中的数据

  2. 若无缓存则使用递归查询向本地服务器发起DNS请求

  3. 本地服务器若无该数据则使用迭代查询,依次访问根域名服务器以及更下层域名服务器,直到得到对应域名IP地址

  4. 将结果返回给用户,用户将其添加入本地缓存中

DNS使用UDP作为传输层协议,使用端口为53号端口。

SMTP

SMTP(简单邮件传输协议):用于发送邮件。

邮件系统通常由UA(用户代理,负责提供用户友好接口),邮件服务器(负责邮件具体的收发逻辑)与对应协议组成。发送协议主要有SMTP,读取邮件协议主要有POP3与IMAP。

SMTP使用TCP作为传输层协议,使用25号端口。

FTP

FTP(文件传输协议):采用C/S模式,在网络中传输文件,并提供交互式访问。

FTP使用TCP作为传输层协议,控制端口为21号端口。FTP服务器由一个主进程与多个从属进程组成,主进程负责与请求方进行指令交互(控制端口);从属进程负责具体的数据传输(数据端口)。

数据传输分为主动模式与被动模式;主动模式中客户端会随机开放端口并使用服务端的20端口进行数据传输;被动模式则是服务端随机开放端口并和客户端进行数据传输。