研distance——计算机网络

概论

概念

主流定义:以能够相互共享资源的方式互连起来的自治计算机系统的集合

  1. 从组成部分上看,一个完整的计算机网络主要由硬件、软件、协议三大部分组成。其中硬件主要由主机(也称端系统)、通信链路(如双绞线、光纤)、交换设备(如路由器、交换机等)和通信处理机(如网卡)等组成
  2. 从工作方式上看,计算机网络(这里主要指Internet,即因特网)可分为边缘部分和核心部分,边缘系统是由用户主机组成用于通信和资源共享;核心系统为边缘部分提供互联服务
  3. 从功能组成上看,计算机网络由通信子网和资源子网组成。通信子网由各种传输介质、通信设备和相应的网络协议组成,实现联网计算机之间的数据通信。资源子网是实现资源共享功能的设备及其软件的集合,向网络用户提供共享服务。


功能

  1. 数据通信:用于实现联网计算机之间的信息传输
  2. 资源共享:包括软件数据和硬件的共享
  3. 分布式处理:将计算任务分配给网络的其他计算机主机,从而提高系统利用率
  4. 提高可靠性:网络中的不同主机可以互为替代
  5. 负载均衡

分类

  1. 按分布范围
    1. 广域网WAN(远程网):提供长距离通信,通常覆盖直径几十到几千千米区域;通信容量较大
    2. 城域网MAN:城域网的覆盖范围可以覆盖一个城市,通常直径5~50km。
    3. 局域网LAN:用微机或者工作站相连,通常直径几十米到几千米区域。
    4. 个人区域网PAN:个人将消费电子产品相连的网络,通常覆盖10m左右
  2. 按传输技术
    1. 广播式网络,一台计算机利用共享通信信道发送报文分组时。接收到该分组的计算机将通过检查目的地址来决定是否接收该分组,多用于局域网
    2. 点对点网络,每条物理线路连接一对计算机。若通信的两台主机之间没有直接连接的线路 ,则它们之间的分组传输就要通过中间结点进行接收、存储和转发,直至目的结点
  3. 拓扑结构分类
    1. 总线形,用一条总线连接所有计算机,建网容易,但效率低,可靠性差
    2. 星形,中央设备点对点连接所有终端,便于集中管理,但成本高
    3. 环形,计算机设备连成一个环,其中信号单向传输,可以单环可以双环
    4. 树状,根节点负责传到子节点,直到叶节点,用于某些多级交换网络
    5. 网状,可靠性高,但结构复杂,多用于广域网
  4. 使用者分类
    1. 公用网,向电信公司交费即可使用
    2. 专用网,对外封闭
  5. 交换技术分类
    1. 电路交换网络:在源结点和目的结点之间建立一条专用的通路用于传送数据,包括建立连接、传输数据和断开连接三个阶段,如电话网络。
      1. 时间延迟低,但线路利用率低,不便于管理
    2. 报文交换网络(存储-转发网络):用户数据加上源地址、 目的地址、校验码等辅助信息,然后封装成报文。整个报文传送到相邻结点,全部存储后,再转发给下一个结点,重复这一过程直到到达目的结点。
      1. 报文先传送到相邻节点,完全存储后转发到下一个结点。更加灵活,但增加资源,控制上的开销与缓冲时延,缓冲难以管理
    3. 分组交换网络(包交换网络):数据分为较短的定长数据块,数据块加上目的地址等信息组成分组(包),在此基础上类似存储转发,包的平均时延更小,网络占用的平均缓冲区更少;更易于标准化;更适合应用,现在应用最广泛
  6. 传输介质分类
    1. 有线,双绞线,同轴电缆等
    2. 无线,蓝牙,微波等

性能指标

  1. 带宽:类似计组的带宽(b/s)
  2. 时延:数据从网络一端传到另一端需要的总时间,为以下部分之和
    1. 发送(传输)时延:发送报文或分组的第一个比特到最后一根比特发送完需要的时间 \(发送时延=分组长度/信道宽度\)
    2. 传播时延:电磁波在信道传播一定距离需要的时间,一个比特从链路一端传播到另一端所需时间 \(传播时延=信道长度/电磁波在信道上的传播速率\)
    3. 处理时延:数据在交换节点为存储转发进行的处理花费的时间
    4. 排队时延:分组在进入路由器后要在输入与输出队列排队等待处理
  3. 时延带宽积:发送端第一个比特即将到达终点时,发送端已经发出了多少比特: \(时延带宽积=传播时延\times信道带宽\)
  4. 往返时延RTT:发送端发出一个短分组,到发送端收到接收端的确认,经过的时延
  5. 吞吐量Throughput:单位时间内通过某个网络(信道/接口)的数据量,吞吐量受网络带宽或者网络额定速率的限制,理想情况下N条链路的每个链路平均吞吐为1/N
  6. 速率Speed:连接到计算机网络上的主机在数字信道上传送数据的速率,也称数据传输速率、数据率或比特率,单位为 b/s
  7. 信道利用率,某个信道有百分之多少时间有数据通过 \(信道利用率=有数据通过时间/总时间\)

三网:电信网络,有线电视网络,计算机网络,有不同的标准协议等
目前逐渐向计算机网络统一
OSI中通信子网一般指下三层,资源子网一般是上三层

网络结构

出于工程上的考虑,通常对计算机网络的体系结构以分层的方式进行建模。计算机网络的各层及其协议的集合称为网络的体系结构,也就是是计算机网络中的层次、各层的协议及层间接口的集合
每层实现一种相对独立的功能,提供清晰的接口,上层单向使用下层服务
第n层中的活动元素通常称为第n层实体,实体是个逻辑上的概念,可以是硬件或者软件,不同机器上的同一层称为对等层,同一层的实体称为对等实体。第n层实体实现的服务为第n+1 层所利用
在计算机网络体系结构的各个层次中,每个报文都分为两部分:数据部分SDU ;控制信息部分PCI, 它们共同组成PDU
服务数据单元(SDU ):为完成用户所要求的功能而应传送的数据。第n层的服务数据单元一记为n-SDU
协议控制信息(PCI):控制协议操作的信息。第n层的协议控制信息记为n-PCI
协议数据单元(PDU):对等层次之间传送的数据单位称为该层的PDU。第n层的协议数据单元记为n-PDU
在实际的网络中,每层的协议数据单元都有一个通俗的名称,如物理层的PDU称为比特,数据链路层的PDU称为帧,网络层的PDU称为分组,传输层的PDU称为报文段
n+1层收到的PDU作为n层的SDU,加上n层的PCI,成为第n层的PDU

得出关系
n-SDU+n-PCI=n-PDU=(n-1)-SDU
层次结构的含义:

  1. 每层向上一层提供的服务,是自己与下层提供服务的总和
  2. 最底层只提供服务,最高层给用户提供服务
  3. 无法跨层调用,且下层的实现细节对上层透明
  4. 主机通信时,对等层在逻辑上有直接信道,可以不经过下层传送数据

常见概念

  1. 协议:规则的集合,规定交换数据的格式与相关的同步问题
    网络协议特指为网络中数据交换建立的规则,其中交换的几个实体都是对等的,也就是只有对等层之间有协议存在
    由语法,语义,同步三部分组成;其中语法规定传输数据的格式,语义规定要完成的功能(行为),同步规定了其顺序,条件等
    一个完整的协议通常应具有线路管理(建立、释放连接)、差错控制、数据转换等功能

  2. 接口
    同一结点内相邻两层间交换信息的连接点,这两层的实体通过服务访问点SAP交互,服务通过SAP提供给上层使用,第n层的SAP就是第n+1层可以访问第n层服务的地方。
    SAP是逻辑接口,不等于硬件接口

  3. 服务
    下层为紧邻上层提供的功能调用,是垂直的,但服务不是一层的全部功能
    上层使用下层服务时,需要与下层交换命令,这些命令称为服务原语,可分为:

  4. 请求,服务用户发给服务提供者

  5. 指示,服务提供者发往服务用户

  6. 响应,服务用户发往服务提供者,响应指示

  7. 证实,服务提供者发往服务用户,证实请求


服务可分为以下几类:

  • 面向连接与无连接,前者需要先建立连接,如TCP;后者可以直接发送,但不保证可靠性,如IP,UDP
  • 可靠服务和不可靠服务,前者可以纠错,应答;后者其可靠性由用户保证,用户需要验证信息正确性,如果错误可以要求纠正或重发
  • 有应答服务和无应答服务,前者接收方收到数据后需要给出应答,由传输系统实现,如文件传输服务;后者如www服务,客户端收到页面后不应答

参考模型

OSI参考模型
国际标准化组织(ISO )提出的网络体系结构模型,称为开放系统互连参考模型(OSI/RM )
自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。低三层统称为通信子网,高三层是资源子网

  1. 物理层
    传输单位是bit,在物理媒体上传输原始比特流
    主要定义数据终端设备(DTE)和数据通信设备(DCE)的物理与逻辑连接方法,所以物理层协议也称物理层接口标准。通信技术的早期阶段,通信规则称为规程(Procedure),因此物理层协议也称物理层规程
    主要规定通信链路与结点的电路接口,传输的信号意义与电子信号等,使用的物理媒体可称为第0层

  2. 数据链路层
    数据链路层的传输单位是帧,将网络层传来的IP数据报组装成帧,提供点到点的传输服务
    传输时可能产生错误,数据链路层可以丢弃错误信息;或者协调不同速度的节点;同步共享问题等
    典型的协议有SDLC,HDLS,PPP,STP

  3. 网络(网际/IP)层
    传输单位是数据报,将网络层的协议数据单位从源端送到目的端,为分组交换网进行路由选择,以及各种通信服务。例如选择数据传输路径,流量控制、拥塞控制、差错控制和网际互连等
    因特网的主要网络层协议是无连接的网际协议(Internet Protocol, IP ) 和许多路由选择协议,因此因特网的网络层也称网际层或IP层
    协议有 IP、IPX、ICMP、IGMP、ARP、RARP 和 OSPF 等

  4. 传输层
    传输单位是报文段(TCP)或用户数据报(UDP),为端对端连接提供可靠的传输服务,包括流量控制、差错控制、服务质量、数据传输管理等
    传输层的端到端通信,指的是不同主机的两个进程,通过端口号标识来通信,与数据链路层的点对点(主机到主机)不同
    传输层具有复用和分用的功能。

  • 复用指多个应用层进程可同时使用下面传输层的服务
  • 分用指传输层把收到的信息分别交付给上面应用层中相应的进程。
    传输层的协议有TCP、UDP
  1. 会话层
    会话层允许不同主机上的各个进程之间进行会话。会话层利用传输层提供的端到端的服务,为表示层实体或用户进程建立连接并在连接上有序地传输数据,即会话,也称建立同步(SYN)
    会话层负责管理主机间的会话进程,包括建立、管理及终止进程间的会话。会话层可以使用校验点使通信会话在通信失效时从校验点继续恢复通信,实现数据同步

  2. 表示层
    两个通信系统中交换信息的表示方式
    采用抽象的标准方法定义数据结构,并采用标准的编码形式。数据压缩、加密和解密也是表示层可提供的数据表示变换功能。

  3. 应用层
    OSI参考模型的最高层,是用户与网络的界面。应用层为特定类型的网络应用提供访问 OSI参考模型环境的手段。
    最为复杂,有最多的协议,例如传送文件的FTP,电子邮件的SMTP,万维网的HTTP

TCP/IP

网络接口层的功能类似于OSI参考模型的物理层和数据链路层,表示与物理网络的接口,从主机或结点接收IP分组,并把它们发送到指定的物理网络上
网际层 (主机-主机)是 TCP/IP体系结构的关键部分。和OSI参考模型的网络层在功能上非常相似。将分组发往任何网络,并为之独立地选择合适的路由,但它不保证各个分组有序地到达,各个分组的有序交付由高层负责,定义了分组格式与协议(IPv4与IPv6)
传输层(应用-应用或进程-进程)的功能,和OSI参考模型中的传输层类似,即使得发送端和目的端主机上的对等实体进行会话。主要使用两种协议:

  • 传输控制协议(TCP)面向连接,数据传输的单位是报文段,能够提供可靠的交付
  • 用户数据报协议(UDP)无连接,数据传输的单位是用户数据报,不保证提供可靠的交付

应用层(用户-用户)包含所有的高层协议,如虚拟终端协议(Telnet)文件传输协议(FTP)、域名解析服务(DNS)、电子邮件协议(SMTP)和超文本传输协议(HTTP)

  • OSI参考模型精确地定义了三个主要概念:服务、协议和接口
  • OSI没有偏向于任何特定的协议,TCP/IP则以协议为主,迎合已有协议
  • TCP/IP模型在设计之初就考虑到了多种异构网的互连问题,并将网际协议(IP)作为一个单独的重要层次
  • OSI参考模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信 。而 TCP/IP模型认为可靠性是端到端的问题,因此它在网际层仅有一种无连接的通信模式,但传输层支持无连接和面向连接两种模式

常用的结构模型:

  • 局域网接入广域网主要是通过路由器实现的。
  • ISO/OSI参考模型在网络层支持无连接和面向连接的通信,但在传输层仅支持面向连接的通信;TCP/IP模型在网络层仅有无连接的通信,而在传输层支持无连接和面向连接的通信

物理层

物理层是体系结构的第一层,由于规定了电气特性,因此能够识别所传送的比特流。
有时称传输媒体为0层,在传输媒体中传输的是信号,但传输媒体并不知道所传输的信号代表什么
规定物理媒体的各种特性

  1. 机械特性,接口形状,线脚数量等
  2. 电气特性,电压范围等
  3. 功能特性,各种电平的含义
  4. 规程特性,操作的顺序

通信基础

数据是指传送信息的实体。信号则是数据的电气或电磁表现,是数据在传输过程中的存在形式

  • 连续变化的数据(或信号)称为模拟数据(或模拟信号)
  • 取值仅允许为有限的离散数值的数据(或信号)称为数字数据(或数字信号)

码元:用一个固定时长的信号波形(数字脉冲)表示一位k进制数字,代表不同离散数值的基本波形,是数字通信中数字信号的计量单位
1 码元可以携带若干比特的信息量。例如,在使用二进制编码时,只有两种不同的码元(0/1)
数据通信:数字计算机与其他数字终端的通信,可以分为信源(数据源,发出后先通过变换器转换成适合信道传输的信号),信道(逻辑部件,往往一条发送信道与接收信道组合),信宿(传输终点,接受信道信号前需要反变换器转换成原始信息)三个部分。

信道可以分为模拟/数字,无线/有线
信道上的信号分为基带信号和宽带信号:

  • 基带:发出的直接表达了要传输的信息的信号,数字信号01用不同电压表示,在数字信道上传输
  • 宽带:将基带信号调制后形成频分复用模拟信号,随后放到模拟信道上传输,把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输

三种基本交互方式:

  • 单向通信,只有一个方向的通信,只需要一个信道(电视广播)
  • 半双工通道,双方都可以接收发送,但其中一方同一时间只能接收或者发送
  • 全双工通道,双方都可以同时发送接受

信道的极限容量是指信道的最高码元传输速率或信道的极限信息传输速率

速率也称数据率,指的是数据传输速率,表示单位时间内传输的数据量:

  • 码元传输速率(波特率):单位时间内通信系统传输的码元个数,单位是波特(Baud,数字通信系统每秒传输一个码元)
  • 信息传输速率。又称信息速率、比特率等,它表示单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒(b/s)

带宽表示单位时间内从网络中的某一点到另一点所能通过的最高数据率(b/s)

同步传输:数据的传送以一个数据区块为单位,又称为区块传输。在传送数据时,需先送出1个或多个同步字符,再送出整批的数据
异步传输:将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方不知道它们会在什么时候到达。传送数据时,加一个字符起始位和一个字符终止位

通信定理

信道中一些高频分量会衰减,导致接收时失真,这称为码间串扰
奈奎斯特(Nyquist)定理又称奈氏准则,它规定:在理想低通(没有噪声、带宽有限)的信道中,为了避免码间串扰,极限码元传输速率为2W波特,其中W是理想低通信道的带宽。若用V表示每个码元离散电平的数目(码元的离散电平数目是指有多少种不同的码元,比如有 16.种不同的码元,则需要4个二进制位,数据传输速率是码元传输速率的4 倍 ),则极限数据率为
理想低通信道下的极限数据传输速率= \(2W\log V\)(b/s)

可以推出的结论:

  1. 任何信道的码元传输速率都有上限
  2. 信道频带越宽,传输速率可以越高
  3. 码元的比特量(对应多少二进制位)不受限制

香农定理:带宽受限且有高斯白噪声干扰的信道的极限数据传输速率
信道的极限数据传输速率= \(W\log_{2}(1+S/N)\)
W为信道的带宽,S为信道所传输信号的平均功率,N 为信道内部的高斯噪声功率
S/N为信噪比,即信号的平均功率与噪声的平均功率之比,信噪比单位db= \(10\log_{10}(S/N)\)

可以得出的结论:

  1. 信噪比越大,极限传输速率越高
  2. 一定的带宽和信噪比,可以确定信息传输速率上限
  3. 只要信息传输速率低于信道的极限传输速率,就可以实现无错传输
  4. 实际传输速率会低于极限速率
  5. 香农定理考虑信噪比,因此码元的比特数是有限的
  6. 若给出码元的信号数,最高信息传输速率受两个公式的共同限制

编码与调制

把数据变换为模拟信号的过程称为调制,把数据变换为数字信号的过程称为编码

  1. 数字信号编码成数字信号
  • 归零编码RZ:高电平表1,低表0,每个时钟周期的中间跳到低电平,接收方根据该跳变调整时钟基准(影响速率)
  • 非归零编码NRZ:不用归零,但难以同步,需要双方有时钟线
  • 反向非归零编码NRZI:信号翻转表示0,信号不变表示1,既能传输时钟信号,又能尽量不损失系统带宽,用于USB2.0
  • 曼彻斯特编码,将一个码元分成两个相等的间隔,前一个间隔为高电平而后一个间隔为低电平表示码元1 ; 码元0的表示方法则正好相反,跳变同时作为数据和同步信号,占用宽度是原始基带宽带两倍,用于以太网
  • 差分曼彻斯特编码: 码元为1,则前半个码元的电平与上一码元的后半个码元的电平相同;若码元为0 , 则情形相反,每个码元的中间都有一次电平的跳转,可以实现自同步,多用于局域网
  • 4B/5B编码:将欲发送数据流的每4位作为一组,然后按照4B/5B编码规则将其转换成相应的5位码。5位码共32种组合,但只采用其中的16种对应16种不同的4位,其他16种作为控制码(帧的开始和结束、线路的状态信息等)或保留
  1. 数字信号调制成模拟信号
    1. 幅移键控(ASK):通过改变载波信号的振幅来表示数字信号1和0,容易实现,抗干扰能力差
    2. 频移键控(FSK):通过改变载波信号的频率来表示数字信号1和0,而载波的振幅和相位都不改变。容易实现,抗干扰能力强,目前应用较为广泛
    3. 相移键控 (PSK)。通过改变载波信号的相位来表示数字信号1和0,而载波的振幅和频率都不改变。它又分为绝对调相和相对调相。
    4. 正交振幅调制(QAM):在频率相同的前提下,将ASK与PSK结合起来,形成叠加信号。设波特率为B, 采用m个相位,每个相位有n种振幅,则 该 QAM技术的数据传输速率R为 \(R=B\log_2{(mn)}\)

  1. 模拟信号编码成数字信号
    在通信领域,带宽是指信号最高频率与最低频率之差,单位为Hz
    采样是指对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。
    根据采样定理,当采样的频率大于或等于模拟数据的频带带宽(最高变化频率)的两倍时,所得的离散信号可以无失真地代表被采样的模拟数据
    量化是把采样取得的电平幅值按照一定的分级标度转化为对应的数字值并取整数,这样就把连续的电平幅值转换为了离散的数字量。采样和量化的实质就是分割和转换。
    典型的例子就是对音频信号进行编码的脉码调制(PCM)

  2. 模拟信号调制成模拟信号
    可以使用频分复用技术,电话机和本地局交换机采用模拟信号传输模拟数据的编码方式,模拟的声音数据是加载到模拟的载波信号中传输的

交换方式

电路交换

传输前,两个结点间先建立一条专用的物理路径(可能有多个结点),在数据传输期间必须一直独占
优点:

  • 时延小
  • 数据有序
  • 无冲突,不会争用物理信道
  • 适用于模拟与数字信号
  • 可以实时通信,没有存储转发的耗时
  • 控制简单

缺点:

  • 建立连接时间长
  • 效率低,一个信道只能双方使用
  • 灵活性差,可靠性低
  • 难以规格化,双方可能规格完全不同

报文交换

数据交换的单位是报文,报文携带有目标地址、源地址等信息。报文交换在交换结点采用的是存储转发的传输方式

优点:

  • 无须建立连接
  • 动态分配线路
  • 可靠性强,有多条备选线路
  • 提高线路利用率
  • 提供多目标服务

缺点:

  • 存储转发会产生各种时延
  • 不限制报文大小

分组交换

限制每次传输数据块大小的上限,加上控制信息,构成分组

优点:

  • 在报文的基础上,简化存储管理(可以固定缓冲区大小);分组可以并行传输
  • 减少出错概率与重发数据量,且时延更短

缺点:

  • 需要额外的控制信息
  • 采用数据报服务时,可能会出现失序、丢失或重复分组,分组到达目的结点时 ,要对分组按编号进行排序等工作,因此很麻烦。若采用虚电路服务,虽无失序问题,但有呼叫建立、数据传输和虚电路释放三个过程

数据报

分组交换根据其通信子网向端点系统提供的服务,还可进一步分为面向连接的虚电路方式和无连接的数据报方式。这两种服务方式都由网络层提供
作为通信子网用户的端系统发送一个报文时,在端系统中实现的高层协议先把报文拆成若干带有序号的数据单元,并在网络层加上地址等控制信息后形成数据报分组(即网络层的PDU)中间结点存储分组,找到最佳的路由后,尽快转发每个分组
过程 :

  1. 主机A将分组逐个发往交换结点,结点存储分组
  2. 结点查找转发表,为每个分组选择下个结点
  3. 重复2.直到到达终点


数据报服务无需连接,不保证可靠也不保证有序;每个分组都有发送接收端完整地址,可以独立传输;交换结点不约束时延,也可能丢弃分组;

虚电路

将数据报方式与电路交换方式结合起来,在分组发送之前,要求在发送方和接收方建立一条逻辑上相连的虚电路,并且连接一旦建立,就固定了虚电路所对应的物理路径。
端系统建立虚电路时,分配一个唯一的虚电路号,传输时分组需要加上虚电路号,每个结点也需要为何应该虚电路表(包括接收和发送链路的虚电路号,前后结点)
建立时,主机A发送呼叫请求分组,若B同意连接,则发送呼叫应答分组;建立后,可以双向发送数据,最后主机A可以用释放请求分组来释放虚电路,逐段断开连接

  • 建立拆除虚电路有时间开销
  • 建立连接时选择并确定一个路由
  • 通信可靠且有序
  • 某个结点故障会导致整个虚电路故障
  • 分组不需要包含地址,只要虚电路标识符,开销更小
    虚电路是逻辑概念,每条虚电路支持特定的两个端系统之间的数据传输,两个端系统之间也可以有多条虚电路为不同的进程服务,其实际路由可以不同

  • TDM方式复用需要相同频率的信号
  • 分组交换中,要将传送的长报文分割为多个固定有限长度的分组,因此传输时延较报文交换要小
  • 在出错率很高的传输系统,数据报更合适
  • 虚电路可以是永久的

传输介质

双绞线

双绞线是最常用的古老传输介质,它由两根采用一定规则并排绞合的、相互绝缘的铜导线组成。绞合可以减少对相邻导线的电磁干扰
一定长度内,圈数越多的双绞线传输速率越快,带宽也取决于铜线的粗细和传输的距离
双绞线的外面加上一层金属丝编织成的屏蔽层且内部加上接地线构成屏蔽双绞线(STP),否则是非屏蔽双绞线(UTP)
距离太远时,对于模拟传输,要用放大器放大衰减的信号;对于数字传输,要用中继器将失真的信号整形

同轴电缆

50Ω同轴电缆主要用于传送基带数字信号,又称基带同轴电缆,它在局域网中应用广泛;75Ω同轴电缆主要用于传送宽带信号,又称宽带同轴电缆,主要用于有线电视系统
有内导体,绝缘层和塑料壳构成,有良好抗干扰特性,相比双绞线同轴电缆具有更高的屏蔽性,同时有更好的抗噪声性,传输距离更远且更贵

光纤

利用光导纤维(简称光纤)传递光脉冲来进行通信。有光脉冲表示1, 无光脉冲表示0 。
频率高,速率快,光线从高折射率的介质射向低折射率的介质时,其折射角将大于入射角。因此,只要入射角大于某个临界角度,就会出现全反射,即光线碰到包层时就会折射回纤芯
利用光的全反射特性,可以将从不同角度入射的多条光线在一根光纤中传输,这种光纤称为多模光纤,有一定失真问题,只适用于短距离
光纤的直径减小到只有一个光的波长时,光纤就像一根波导那样,可使光线一直向前传播,而不会产生多次反射,即单模光纤,适合远距离传输
特点:传输损耗少,适合远距离,抗电磁干扰,保密性好,体积小

无线介质

  1. 无线电波,如SLAN等,向所有方向散射,简化连接
  2. 微波,红外线,激光,有方向性,其中微波通信的频率较高,频段范围也很宽,但直线传播需要中转站;三颗120度的卫星基本可以实现全球通信,容量大距离远,但保密性差

物理层考虑的是如何在连接到各种计算机的传输媒体上传输数据比特流,而不指具体的传输媒体。网络中的硬件设备和传输介质的种类繁多,通信方式也各不相同。物理层应尽可能屏蔽这些差异,让数据链路层感觉不到这些差异,使数据链路层只需考虑如何完成本层的协议和服务
包括机械,电气,功能,过程特性。
常用的物理层接口标准有EIARS-232-C、ADSL和 SONET/SDH等

物理层设备

中继器

将信号整形并放大再转发出去,进而扩大网络传输的距离
中继器有两个端口,数据从一个端口输入,再从另一个端口发出。端口仅作用于信号的电气部分,而不管是否有错误数据或不适于网段的数据
使用中继器连接的几个网段仍然是一个局域网。中继器若出现故障,对相邻两个网段的工作都将产生影响。中继器工作在物理层,因此它不能连接两个具有不同速率的局域网。

如果某个网络设备具有存储转发的功能,那么可以认为它能连接两个不同的协议;如果该网络设备没有存储转发功能,那么认为它不能连接两个不同的协议,例如中继器
放大器和中继器都起放大作用,只不过放大器放大的是模拟信号,原理是将衰减的信号放大,而中继器整形数字信号,原理是将衰减的信号整形再生。

网络标准中对信号的延迟范围做了具体的规定,中继器只能在此规定范围内进行有效的工作 ,否则会引起网络故障。

集线器

集线器(Hub)实质上是一个多端口的中继器。一个端口接收到数据信号后,hub将其整型放大,转发到其他所有工作端口,没有定向传送功能,是共享设备
Hub主要使用双绞线组建共享网络,在交换式网络中,Hub直接与交换机相连,将交换机端口的数据送到桌面上,由Hub组成的网络是共享式网络,有一个中心结点管理所有相连工作站,但逻辑上仍是一个总线网。
Hub的每个端口连接的网络部分是同一个网络的不同网段,同时Hub也只能在半双工状态下工作,网络的吞吐率因而受到限制
集线器在一个时钟周期中只能传输一组信息,其连接的n个设备,每个的带宽是集线器的1/n

可以不经过调制就在信道上直接进行的传输方式称为基带传输。它通常用于局域网,最简单的方法是用两个高低电平来表示二进制数字
用数字信号对特定频率的载波进行调制(数字调制),将其变成适合于传送的信号后再进行传输 ,这种传输方式就是频带传输
借助频带传输,可将链路容量分解成两个或多个信道,每个信道可以携带不同的信号,这就是宽带传输。宽带传输中所有的信道能同时互不干扰地发送信号
中继器或集线器有"543规则”,其中"5"表示5个网段,"4”表示4个中继器或集线器,"3"表示3个网段为主机段。也就是说,在一个由中继器或集线器互连的网络中,任意发送方和接收方最多只能经过4个中继器、5个网段。


数据链路层

将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路

功能

对网络层提供的服务

  • 无确认无连接服务(发送数据帧不需要建立连接,收到后也无需确认,丢失不负责重发,适用实时通信)
  • 有确认的无连接服务,原机器一定时间没收到确认信号就重传,适用无线通信等误码率较高信道
  • 有确认的面向连接服务,每一帧收到后都要确认,收到确认才发送下一帧

链路管理:数据链路层连接的建立、维持和释放过程
链路两端的结点要进行通信,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接,在传输过程中则要能维持连接,而在传输完毕后要释放该连接。
在多个站点共享同一物理信道的情况下(如在局域网中)如何在要求通信的站点间分配和管理信道也属于数据链路层管理的范畴

两台主机之间传输信息时,必须将网络层的分组封装成帧,以帧的格式进行传送。将一段数据的前后分别添加首部和尾部,就构成了帧。
首尾有很多控制信息,且为帧定界,帧同步指接收方可以从接收到的比特流中区分帧的首尾,如图的HDLC协议,此外,每个数据链路层协议都规定帧的长度上限(最大传送单元MTU)

如果数据中有相同的定界符组合,就需要专门处理
流量控制
限制发送方的数据流量,使其发送速率不超过接收方的接收能力。很多层提供类似功能,对于数据链路层来说,控制的是相邻两结点之间数据链路上的流量
在OSI体系结构中,数据链路层具有流量控制的功能。而在 TCP/IP体系结构中,流量控制功能被移到了传输层。

差错控制
位错:部分位出错,常采用循环冗余校验(CRC)方式发现位错,通过自动重传请求(Automatic Repeat reQuest. ARQ)方式来重传出错的帧:发送方将数据帧附加一定CRC冗余验错码,发现错误则丢弃
帧错:帧的丢失,失序等错误,在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确地交付给目的结点
透明传输
对链路层来说,没有无法传输的特定比特序列,也就是对控制用的序列需要进行一定处理

组帧

为了使接收方能正确地接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)
帧是传输的最小单位,因此需要首尾定界,而分组是数据分布,不需要尾部

  1. 字符计数法:在帧头部用一个计数字段表示其字符数,问题是对计数字段依赖性过强
  2. 字符填充的首尾定界符法:用特定字符来定界一帧的开始与结束,可在数据部分特殊字符前面填充一个转义字符(ESC)来加以区分且转义字符自己也可以被转义,收到后取出转义字符得到原始数据
  3. 零比特填充的首尾标志法:使用一个特定的比特模式,即01111110来标志一帧的开始和结束,为了避免误判,发送方在数据的5个1后添加一个0,接收方则将其逆操作,容易硬件实现,性能更好
  4. 违规编码法,将编码方法的违规方法作为定界符号,只适用于采用冗余编码的特殊编码环境
    由于字符计数法中计数字段的脆弱性和字符填充法实现上的复杂性与不兼容性,目前较常用的组帧方法是零比特填充法和违规编码法

差错控制

线路本身会产生随机噪声,可以通过加大信噪比解决;传输过程中,外界因素可能引起冲击噪声,可以通过编码技术解决
主要有两类:自动重传请求ARQ和前向纠错FEC

  • 在 ARQ 方式中,接收端检测到差错时,就设法通知发送端重发,直到接收到正确的码字为止。
  • 在 FEC 方式中,接收端不但能发现差错,而且能确定比特串的错误位置,从而加以纠正
    因此,差错控制又可分为检错编码和纠错编码

检错编码

  1. 奇偶校验码:由n-1位信息元和1位校验元组成,如果是奇校验码,那么在附加一个校验元后,码长为n的码字中1的个数为奇数,相当于检验帧所有位的异或值(奇偶性),对奇校验来说只能检验处奇数个错误(改变了奇偶性),成功率50%
  2. 循环冗余码(多项式码),对m bit的帧,生成一个r bit的帧校验序列FCS,双方约定一个多项式G(x),其位数为k bit,其阶数r=k-1 且其最高最低位为1,带校验码的帧可以被G(x)整除,可整除则无差错;有纠错功能,但该层不使用,检错过程由硬件实现
    1. 加0,若G(x)阶r,帧低位加r个0
    2. 模2除法,G(x)对应数据串除1.中计算出的数据串,其余数位冗余码(r位,不可省略0)
    3. 模2运算规则,加法不进位,减法不借位,相当于对应位进行逻辑异或运算

纠错编码

海明码:设信息位D4D3D2D1(1010),共4位,需要3位校验码
两个合法编码(码字的对应比特取值不同的比特数称为这两个码字的海明距离(码距)),一个有效编码集中任意两个合法编码(码学的海明距离的最小值称为该编码集的海明距离(码距))。"纠错”d位,需要码距为2d+1的编码方案;"检错”d位,则只需码距为d+1

$$\begin{array}{l l l l l l l}{{H_{7}}}&{{H_{6}}}&{{H_{5}}}&{{H_{4}}}&{{H_{3}}}&{{H_{2}}}&{{H_{1}}}\\ {{D_{4}}}&{{D_{3}}}&{{D_{2}}}&{{P_{3}}}&{{D_{1}}}&{{P_{2}}}&{{P_{1}}}\end{array}$$
  1. 确定位数,n为信息位数,k为校验位数,则需要 \(n+k<=2^k-1\) 检查一位错(两位需要k+1)
  2. 确定校验位的分布,校验位 \(P_i\) 在海明位号 \(2^{i-1}\)
  3. 分组形成校验关系,被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和,如D1放在H3上,由P1P2校验
  4. 校验位取值,Pi的值是第i组由该校验位校验的数据位所有位的异或
$$\begin{array}{l}{{P_{1}=D_{1}\oplus D_{2}\oplus D_{4}=0\oplus1\oplus1=0}}\\ {{P_{2}=D_{1}\oplus D_{3}\oplus D_{4}=0\oplus0\oplus1=1}}\\ {{P_{3}=D_{2}\oplus D_{3}\oplus D_{4}=1\oplus0\oplus1=0}}\end{array}$$

1010对应的海明码为1010010

  1. 每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,构成上个校验方程
$$\begin{array}{l}{{S_{1}=P_{1}\oplus D_{1}\oplus D_{2}\oplus D_{4}}}\\ {{S_{2}=P_{2}\oplus D_{1}\oplus D_{3}\oplus D_{4}}}\\ {{S_{3}=P_{3}\oplus D_{2}\oplus D_{3}\oplus D_{4}}}\end{array}$$

若S3S2S1的值为"000",则说明无错;否则说明出错,且这个数就是错误位的位号,如 S3S2S1 = 001,说明第1位出错,将该位取反

流量控制和可靠传输机制

为了避免缓冲区溢出,需要接收方控制发送方速率

  1. 停止等待协议:发送方发出一帧后需要等待接收方应答,才可以继续发送,效率较低
    停止-等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议
    差错:
  • 数据帧丢失
  • 帧被破坏,检测出差错后,丢弃帧,发出方超时后重传
  • 数据帧正确,但确认帧破坏,接收方会连续收到相同序号数据帧,前后发送多次确认帧。
    发送方和接收方都须设置一个帧缓冲区。发送端在发送完数据帧时,必须在其发送缓存中保留此数据帧的副本,这样才能在出差错时进行重传。只有在收到对方发来的确认帧ACK时,方可清除此副本。
  1. 滑动窗口控制
    发送方一直维持一组连续的允许发送的帧的序号,即发送窗口,接收方维持一组连续的允许接收帧的序号,即接收窗口
    发送窗口大小 \(W_r\) 代表未收到应答时,还可以发送多少数据帧,接收窗口控制是否接收帧,只有落在窗口内的帧,才算接收
    发送方收到确认后,就滑动一个帧,没有可以发的帧时(没有已发送的被确认),就会停止发送,直到收到接收方的确认帧使窗口移动
    接收方收到后,将窗口前移一个位置,发回确认帧,若落不到窗口则丢弃
    注意:传输过程中窗口大小固定

  2. 可靠传输机制

  • 确认:无数据的控制帧,可以伴随回复帧中发出(捎带确认)
  • 超时重传:发送方发出后启动计时器,超时则重发数据帧
  • 自动重传请求(ARQ):接收方请求发送方重传出错的帧,一般分为停止-等待,后退N帧(发送窗口>1,接收窗口=1),选择性重传(两种窗口都大于1)

数据链路层中可靠传输与流量控制是合一的

后退N帧GBN: 发送方可以连续发送,但接收方顺序接收,出错后要求重发最后一个正确的帧后的帧;发送方的某帧超时后,从该帧开始重发。
接受方可以发送一个确认帧可以确认该帧前的所有帧,避免频繁确认的开销,也可以发送数据时捎带确认之前收到的帧(累积确认)
图中,ATKn表示对第n帧的确认
如果用n bit编号帧,发送窗口大小需要 \(<=2^n-1\)

多帧滑动窗口与选择重传协议SR
加大接收窗口,先收下发送序号不连续但仍处在接收窗口中的数据帧,等收到缺失部分的数据帧再一并提交
选择重传协议的窗口大小通常满足 \(W_{Tmax}=W_{Rmax}=2^{n-1}\)否则,窗口大小大于序号范围一半,丢失部分确认帧时,接收方无法分辨新的数据帧和重传数据帧
即新收到的帧编号为真实编号对 \(2^n\) 的模,与之前的冲突


可以避免重复传一些正确到达的帧,但需要缓冲区的开销,接收端接收窗口范围内的帧,因此缓冲区大小只需要等于窗口大小

信道效率(信道利用率):有多种定义,例如发送方在一个发送周期内,有效发送数据的时间占整个发送周期的比率
信道吞吐量= \({信道效率}\times{发送方发送速率}\)

  • 在后退N帧的协议中,序列号个数不小于MAX_SEQ+1
  • 对于回退N帧协议,发送窗口的大小可以等于窗口总数-1, 因为它的接收窗口大小为1,所有的帧保证按序接收。因此对于窗口大小为n的滑动窗口,其发送窗口大小最大为n-1,即最多可以有n-1帧已发送但没有确认
  • 后退N帧的最大传输速率=min{信道带宽,窗口大小*帧大小/发送第一个帧到接收到它的确认的时间}

介质访问控制

信道介质

为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,以协调活动结点的传输。用来决定广播信道中信道分配的协议属于数据链路层的一个子层,称为介质访问控制(MAC)子层
需要通过多路复用(不同信号在同一条物理信道传输)将N个输入通道整合到复用通过,再输出端再分成N路

  1. 频分复用FDM,将多路基带信号调制到不同频率载波上,再叠加形成一个复合信号,子信道综合带宽不超过总信道,并且需要直接的保护频带避免干扰
  2. 时分复用TDM,分成若干时间片,多路信号各自占据时间片;
    1. 统计/异步时分多路复用(STDM),STDM帧按需动态分配时间片
  3. 波分复用WDM,用于光纤,波长(频率)不同的光可以互不干扰的传输
  4. 码分复用CDM,用不同编码区分信号种类,即码分多址,主要用于无线通信
    其原理是每个比特时间再划分成加个短的时间槽,称为码片,通常加的值是64或128。每个站点被指派一个唯一的m位码片序列。
    发送1时,站点发送它的码片序列;发送0时,站点发送该码片序列的反码。当两个或多个站点同时发送时,各路数据在信道中线性相加。为从信道中分离出各路信号,要求各个站点的码片序列相互正交,即码片向量的规格化内积为0
    令向量S表示A站的码片向量,令T表示B站的码片向量
    \(S.T\equiv{\frac{1}{m}}\sum_{i=1}^{n}S_{i}T_{i}=0\)
    任何一个码片向量和该码片向量自身的规格化内积都是1,任何一个码片向量和该码片反码的向量的规格化内积是-1
    两个向量到了公共信道上线性相加,到达C站后,进行数据分离,如果要得到来自A站的数据,C站就必须知道A站的码片序列,让S与S+T进行规格化内积,其他站点的信号都在内积的结果中被过滤掉了,内积的相关项都是0 , 而只剩下A站发送的信号

随机访问介质

用户随机发送信息,占用整个信道,多个用户同时发送时,产生碰撞,常用的协议有ALOHA协议、CSMA协议、CSMA/CD协议和CSMA/CA协议,称为争用型协议,需要争抢获得信道 ,但不需要共享空间或者时间,对双方来说是一种点对点信道

  1. ALOHA协议,任何一个站点发送数据时,可以不检测发送,但需要确认和定时重发,发送方接受不到确认则需要等待随机时间重发

    如果碰撞,各方都随机等待一段时间,再重传,重复到成功,吞吐量较低

  2. 时隙ALOHA协议,各站同步时间,分为等长时隙(slot),只有每个时隙开始时可以发送帧,每个帧在到达后,一般都要在缓存中等待一段小于时隙长度的时间,然后才能发送出去。在一个时隙内有两个或两个以上的帧到达时,在下一个时隙将产生碰撞,碰撞后依旧随机等待,吞吐量是原版本2倍

  3. 载波监听多路访问CSMA协议,发送前通过载波监听装载监听共用信道

    1. 1-persistent CSMA:发送数据前监听信道,忙则监听到空闲再发送,如果冲突,随机等待一定时间再开始监听
      1. 传播延迟会产生影响,如某结点开始发送数据,其信号在延迟中,另一节点检查到信道空闲,也发出,导致冲突
      2. 多个结点同时监听,空闲时同时发出也会冲突
    2. Non-persistent CSMA:与1.不同的是,首次监听时若信道忙,放弃监听等待随机时间再重复,增加延迟时间,但提高了信道利用率(减少上述1.2.问题)
    3. p-persistent CSMA:用于时分信道,信道忙,则到下个时隙监听,若信道空闲以概率p发送数据,1-p推迟到下一个时隙,重复整个过程,如果信道忙,则等待一个时隙再监听,是前两者的折中方案
  4. 载波监听多路访问/碰撞检测(CSMA/CD)协议是CSMA协议的改进方案,适用于总线形网络或半双工网络环境(全双工不会冲突):先听后发,边听边发,冲突停发,随机重发
    Carrier Sense Multiple Access with Collision Detection(载波监听指“边发送边监听”)

    载波监听:每个站点在发送前和发送中都必须不停地检测信道,在发送前检测信道获得发送权,在发送中检测信道从而及时发现发送的数据是否发生了碰撞。 站点要发送数据前先监听信道,只有信道空闲才能发送
    碰撞检测:边发送边监听,如果监听到了碰撞,则立即停止数据发送,等待一段随机时间后,重新开始尝试发送数据

    τ为单程传播时延,端点发送帧后最多2τ时间,两端就都就知道帧有没有碰撞,2τ称为争用期,经过争用期未检测到碰撞时,才能确定这次发送没有碰撞
    过于小的帧发送完也无法检测到碰撞,因此以太网规定了一个最短帧长(争用期内可发送的数据长度)。在争用期内如果检测到碰撞,站点就会停止发送,此时已发送出去的数据一定小于最短帧长,长度小于这个最短帧长的帧都视为由于冲突而异常中止的无效帧
    \(最小帧长=总线传播时延\times数据传输速率\times2\)
    归根到底,争用期长度的规定由物理线路的物理特性(长度除电信号传输速率)等决定
    对10Mb/s的以太网,则最小是64B。发送更小的需要填充,还规定了帧间最小间隔为9.6μs

    要提高以太网的信道利用率,就必须减小以太网单程端到端时延和帧的发送时间之比

通过阶段二进制指数退避算法解决碰撞问题:

  1. 确定基本退避时间,如争用期长度2τ
  2. 定义k,相当于min{重传次数,10}
  3. 自然数0~ \(2^k-1\) 中随机取数r,退避时间即2rτ
  4. 重传16次也失败时,抛弃帧且向高层报错

算法执行顺序:

  1. 准备发送:适配器从网络层获得一个分组,封装成帧,放入适配器的缓存。
  2. 检测信道:若检测到信道空闲,开始发送这个帧。若检测到信道忙,就持续检测直至信道上没有信号,然后开始发送这个帧。
  3. 在发送过程中,适配器仍持续检测信道。这里只有两种可能:
    • 发送成功:在争用期内一直未检测到碰撞
    • 发送失败:在争用期内检测到碰撞,此时立即停止发送,适配器执行指数退避算法,等待一段随机时间后返回到步骤2. 若重传16次仍不能成功,则停止重传并向上报错。

CSMA/CA协议:
在无线网中,接收信号强度往往远小于发送信号强度,且强度变化大,难以实现碰撞检测;且存在隐蔽站
为此,CA(collision avoidance)协议将碰撞检测改为碰撞避免,尽可能降低碰撞概率,使用确认重传方案,确认后才能发送下一帧
802.11规定,所有站发送后,等待一段很短时间,才能继续发送,这段时间是帧间间隔IFS,其长度取决于帧的类型:

  • SIFS,最短的IFS,分割一次对话的各帧,使用SIFS的帧类型有ACK帧、CTS帧、分片后的数据帧,以及所有回答AP探询的帧等
  • PIFS点协调IFS,中等长度,用于PCF
  • DIFS分布式协调IFS,最长的IFS,用于异步帧竞争访问的时延

退避算法:
信道从忙态变为空闲态时,任何一个站要发送数据帧,不仅都要等待一个时间间隔,而且要进入争用窗口,计算随机退避时间以便再次试图接入信道,因此降低了碰撞发生的概率。
当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时,才不使用退避算法。其他所有情况都必须使用退避算法,具体为:①在发送第一个帧前检测到信道忙;②每次重传;③每次成功发送后要发送下一帧。

  1. 若站点最初有数据发送(非重传),且信道空闲,等待DIFS后,发送
  2. 否则,执行退避算法,选择随机回退值,即设置一个退避计时器,从信道空闲时开始倒计时
  3. 计时器到0时,发送帧并等待确认
  4. 发送站若收到确认,则发送的帧被接受,如果仍需要发送从2.开始
    若发送站在规定时间(由重传计时器控制)内没有收到确认帧ACK ,就必须重传该帧,再次使用CSMA/CA协议争用该信道,直到收到确认,或经过若干次重传失败后放弃发送

隐蔽站问题:站A和B都在AP的覆盖范围内,但A和B相距较远,彼此都听不见对方。当A和B检测到信道空闲时,都向AP发送数据,导致碰撞的发生。
802.11允许发送站对信道进行预约。源站要发送数据帧之前先广播一个很短的请求发送RTS(Request To Send)控制帧,它包括源地址、目的地址和这次通信(含相应的确认帧)所持续的时间,该帧能被其范围内包括AP在内的所有站点听到。
若信道空闲,则AP广播一个允许发送CTS(Clear To Send)控制帧,它包括这次通信所需的持续时间(从RTS帧复制),该帧也能被其范围内包括A和B在内的所有站点听到。
B和其他站听到CTS后,在CTS帧中指明的时间内将抑制发送。CTS帧有两个目的:①给源站明确的发送许可;②指示其他站点在预约期内不要发送。
RTS与CTS有一定开销

CSMA/CD与 CSMA/CA主要有如下区别:

  1. CSMA/CD可以检测冲突,但无法避免;CSMA/CA发送数据的同时不能检测信道上有无冲突,本结点处没有冲突并不意味着在接收结点处就没有冲突,只能尽量避免。
  2. 传输介质不同。CSMA/CD用于总线形以太网,CSMA/CA用于无线局域网802.11 a/b/g/n等。
  3. 检测方式不同。CSMA/CD通过电缆中的电压变化来检测;而 CSMA/CA采用能量检测、载波检测和能量载波混合检测三种检测信道空闲的方式。
  4. CD发送前监听,边发送边监听,一旦碰撞就停止发送;CA发送前广播其他结点,让其避免冲突

轮询访问:令牌传递协议

轮询访问中,用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配。当某结点使用信道时,其他结点都不能使用信道
该通路是逻辑上的环,与物理结构无关
典型的轮询访问介质访问控制协议是令牌传递协议,它主要用在令牌环局域网中, 令牌(Token)沿着环形总线在各结点计算机间依次传递,令牌是控制帧,用于控制信道使用。不含信息
一个站点希望传送帧时,必须等待令牌。一旦收到令牌,站点便可启动发送帧,发送完一帧后,释放令牌
令牌在网环上是按顺序依次传递的,因此对所有入网计算机而言,访问权是公平的

流转过程:

  1. 网络空闲时,只有令牌循环传递
  2. 传到需要发送的站点时,修改令牌标志位,在其中添加数据,使其变成数据帧发出
  3. 数据帧沿着环路转发,沿途站点查看目的地址,如果是自己则复制该帧作为接收
  4. 数据帧传回源站点,停止转发,同时校验该帧查看是否出错,错则重传
  5. 源站重新产生一个令牌,传给下一站,交出信道控制权

适合负载很高的广播信道,实际上是在随机介质访问控制的基础上,限定了有权力发送数据的结点只能有一个
通过介质访问控制机制可以使广播信道逻辑上变为点对点的信道,逻辑上看,数据链路层都是点到点的通信

  • FDM适合于传输模拟信号,TDM适合于传输数字信号
  • 二进制回退算法中,在达到10次冲突后,随机数的区间固定在最大值1023
  • 令牌环网各站轮流使用令牌发送数据,无论网络负载如何,都无冲突产生
  • 令牌有持有时间上限,无法一直持有,即使在发送数据
  • 减少的往返时延= 减少的发送时延
  • 帧的传输时延至少要两倍于信号在总线中的传播时延
  • 最终序列与对应站点的码分向量相乘,规格化内积为1表示1,为-1表示0
  • CSMA/CD信号传播延迟趋近0时,信道利用率趋近100

局域网

指在一个较小的地理范围,计算机(逻辑上的)互连形成的网络。

  • 范围和站点数有限
  • 所有站点共享较高的总带宽
  • 时延和误码率较低
  • 各站平等
  • 可以广播或者组播

主要特性:拓扑结构,传输介质,介质访问控制方式
局域网的介质访问控制方法主要有CSMA/CD、令牌总线和令牌环,其中前两种方法主要用于总线形局域网,令牌环主要用于环形局域网。

三种常见的局域网拓扑实现如下:

  1. 以太网(目前使用范围最广的局域网逻辑拓扑是总线形结构,物理拓扑是星形或拓展星形结构)
  2. 令牌环(IEEE 802.5)逻辑拓扑是环形结构,物理拓扑是星形结构
  3. FDDI(光纤分布数字接口,IEEE 802.8)。逻辑拓扑是环形结构,物理拓扑是双环结构

将数据链路层拆分为两个子层:逻辑链路控制(LLC)子层和媒体接入控制(MAC)子层。
IEEE 802标准定义的局域网参考模型只对应于OSI参考模型的数据链路层和物理层,将数据链路层拆分为两个子层:逻辑链路控制(LLC)子层和媒体接入控制(MAC)子层。

  • LLC:与传输媒体无关,为帧确认编号,向网络层提供无确认无连接,面向连接,带确认无连接,高速传送4种服务,逻辑上更上层
  • MAC:向上屏蔽对物理层的差异,提供对物理层的统一访问接口,包括:组帧拆卸帧,差错检测,透明传输功能

以太网占据绝对主流,MAC远远比LLC更流行

以太网802.3

IEEE802.3标准是一种基带总线形的局域网标准,它描述物理层和数据链路层的MAC子层的实现方法,与以太网严格定义不同,但通常将802.3局域网简称为以太网
以太网逻辑上采用总线形拓扑结构,信息以广播方式发送,使用CSMA/CD方式对总线进行访问控制,是最为主流的局域网技术

每块网卡中的MAC地址也称物理地址;MAC地址长6字节,权威机构给厂家分配前 3 个字节,后三个字节厂家分配
以太网MAC帧格式有两种标准:DIX Ethernet V2 标准(以太网V2标准)和IEEE 802.3标准
组成:

  • 前导码:用于使接收端与发送端时钟同步,前7B用来快速同步MAC帧;最后1B是MAC帧
  • 地址:48位
  • 类型:2B,802.3帧格式与DIX 以太帧格式的不同之处在于用长度域替代了DIX帧中的类型域(0-1500可用作长度,更大值作为类型标识)
  • 数据:46~1500B,包含协议信息,最小总长64B来源于争用期限制,可以被填充
  • 校验码(FCS):从目的地址段到数据段的末尾,采用32位循环冗余码(CRC)


无线局域网802.11

可分为两大类:有固定基础设施(通信基站)的无线局域网和无固定基础设施的移动自组织网络

  1. 有固定基础设施无线局域网:802.11使用星形拓扑,其中心称为接入点(Access Point, AP) , 在MAC层使用CSMA/CA协议。使用802.11系列协议的局域网又称Wi-Fi。
    无线局域网的最小构件是基本服务集BSS(Basic Service Set,BSS)一个基本服务集包括一个接入点和若干移动站。各站在本BSS内之间的通信,或与本BSS外部站的通信,都必须通过本BSS的AP。
    AP在安装时分配不超过32字节的服务集标识符(ServiceSetIDentifier,SSID)与一条信道
    一个基本服务集覆盖的地理范围称为一个基本服务区 (Basic Service Area, BSA),无线局域网的基本服务区的范围直径一般不超过100m
    基本服务集可以是孤立的,也可通过AP连接到一个分配系统(Distribution System, DS)构成了一个扩展的服务集(Extended Service Set, ESS)
    DS对上级屏蔽ESS与BSS的差异,ESS可以通过Portal (门户,一种设备)为无线用户提供到有线连接的以太网的接入

  2. 无固定基础设施移动自组织网络
    由一些平等状态的移动站相互通信组成的临时网络,各结点之间地位平等,中间结点都为转发结点,因此都具有路由器的功能。有自己特定的路由选择协议,并且可以不和因特网相连

帧的组成与收发

分为数据,控制,管理帧
数据帧由以下三大部分组成:

  1. MAC首部,共30B
  2. 帧主体,帧的数据部分,不超过2312B
  3. 帧检验序列FCS:4B

  1. BSS中的站A向站B发送数据帧,控制字段10,地址1是AP地址,地址2是A地址,地址3是B地址
  2. AP接收到数据帧后,转发给站B,控制字段01,地址1是B地址,地址2是AP地址,地址3是A地址

如果AP通过路由器(网络层,通过IP地址转发)相连,路由器向站A发送数据:

  1. 路由器从IP数据报获知A的IP地址,并使用ARP获取站A的MAC地址,路由器接口R1将其封装成802.3帧(源是RA1地址,目的是A地址)
  2. AP收到802.3帧后,将其转换成802.11帧,控制字段01

站A向路由器接口R1发送数据:

  1. A生成802.11帧,控制字段10,
  2. AP收到后转换成802.3帧,源地址字段是A的MAC地址,目的地址字段是R1的MAC地址

VLAN虚拟局域网

一个较大的局域网分割成一些较小的与地理位置无关的逻辑上的VLAN,而每个VLAN是一个较小的广播域
VLAN建立在交换技术基础上,以软件方式实现逻辑分组与管理,VLAN中的计算机不受物理位置的限制。当计算机从一个VLAN转移到另一个VLAN时,只需简单地通过软件设定。同一个VLAN的计算机不一定连接在相同的物理网段,它们可以连接在相同的交换机上,也可以连接在不同的局域网交换机上,只要这些交换机互连即可
802.3ac标准定义了VLAN的帧,在以太网帧中插入一个4B标识符,使以太网最大帧长变为1522B

VLAN标签的前两个字节置为0x8100,后两个字节中后12位是该VLAN的标识符VID,唯一标识改帧属于的VLAN
VID字段的值由交换机管理员设定,对各主机透明,主机与交换机之间传输标准以太网帧
可以通过交换机端口,IP地址,网卡地址划分VLAN

跨VLAN号的通信属于第三层服务,需要路由器或者有专用芯片的交换机

  • 以太网采用无连接的工作方式;不对发送的数据帧编号,也不要求接收方发送确认
  • 只有当以太网工作于半双工方式下时,才需要CSMA/CD协议来应对冲突问题
  • 通常情况下,网卡是用来实现以太网协议的,实现的功能主要在物理层和数据链路层
  • 以太网上总线上的所有结点(包括发送结点)都能收到发送结点发送的数据信号

广域网

广域网通常是指覆盖范围很广(远超一个城市的范围)的长距离网络。广域网是因特网的核心部分,其任务是长距离运送主机所发送的数据。

广域网由一些结点交换机(与路由器不同的是,它只在单个网络中存储转发分组)及连接这些交换机的链路组成,但为了提高网络的可靠性,通常一个结点交换机往往与多个结点交换机相连。

路由选择协议负责搜索分组从某个结点到目的结点的最佳传输路由,以便构造路由表,然后从路由表再构造出转发分组的转发表。分组通过转发表进行转发
常见协议:

PPP点对点协议

使用串行线路通信的面向字节的协议,用在直接连接两个结点的链路上
有三个组成部分:

  1. 链路控制协议(LCP)一种扩展链路控制协议,用于建立、配置、测试和管理数据链路。
  2. 网络控制协议(NCP)。PPP协议允许同时采用多种网络层协议,每个不同的网络层协议要用一个相应的NCP来配置,为网络层协议建立和配置逻辑连接。
  3. 将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是其信息部分,这个信息部分的长度受最大传送单元(MTU)的限制

PPP帧的前3个字段和最后2个字段与HDLC帧一样,标志字段为7E(01111110), 前后各占1字节

  • 当 PPP 用在异步传输时,使用字节填充法
  • 当 PPP 用在同步传输链路时,采用零比特填充法

PPP帧的前3个字段和最后2个字段与HDLC帧一样,标志字段为7E(01111110), 前后各占1字节,对信息字段的7E需要转义
地址字段(A)占1字节,规定为0xFF,控制字段(C)占1字节,规定为03(历史遗留问题)
FCS检验区包括地址字段、控制字段、协议字段和信息字段,但不提供纠错功能,也不使用序号和确认机制
当线路处于静止状态时,不存在物理层连接。当线路检测到载波信号时,建立物理连接。此时,LCP开始选项商定,商定成功后就进入身份验证状态
身份验证通过后,进入网络层协议状态。采用NCP配置网络层,配置成功后,进入打开状态,然后就可进行数据传输。当数据传输完成后,线路转为终止状态。载波停止后则回到静止状态

PPP只支持点对点的全双工链路,面向字节,但两端可以运行不同的网络层协议,透明传输时,若PPP用在异步线路(默认),则采用字符填充法;若PPP用在SONET/SDH等同步线路,则协议规定采用硬件来完成比特填充(和HDLC一样)

高级数据链路控制(HDLC)协议是面向比特的数据链路层协议。对比PPP没有协议字段,使用了编号和确认机制,能够提供可靠传输

  • 广域网是单一的网络,通常使用结点交换机连接各台主机,与路由器不同的是,后者可以联系不同类型的网络

设备

  1. 网桥,将数个以太网连接成更大的以太网,并且各网段相对独立,网桥转发跨网络的数据帧,丢弃收发地址是同一个网络的数据帧
  2. 交换机,实质上是多端口网桥,每个端口连接一个主机或另一个交换机,通常全双工工作
    N个端口的交换机,总容量是 \(端口数\times端口带宽\)
    交换机即插即用,将网络分成较小冲突域,为每个工作站提供更高的带宽(以太网交换机独占传输媒体的带宽),通过记忆机制维护一个查找表,将数据帧的源和目的地址不断记忆下去,根据表送到目的端口


    利用以太网交换机可以实现虚拟局域网 VLAN, VLAN不仅可以隔离冲突域,而且可以隔离广播域,可根据以下条件划分:
  • 交换机端口
  • 计算机网卡的 MAC 地址
  • 基于协议类型
  • 基于 IP 子网地址
  • 基于高层应用或服务

以太网交换机主要采用两种交换模式:

  • 直通式交换机,只检查帧的目的地址,这使得帧在接收后几乎能马上被传出去。
  • 存储转发式交换机,先将接收到的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表转换成输出端口将该帧发送出去。如果发现帧有错,那么就将其丢弃 。

决定一个帧是应该转发到某个端口还是应该将其丢弃称为过滤。决定一个帧应该被移动到哪个接口称为转发。交换机的过滤和转发借助于交换表(switch table)完成。交换表中的一个表项至少包含:①一个MAC地址;②连通该MAC地址的交换机端口。交换表中的每个表项都设有一定的有效时间,过期的表项会自动删除

  • 中继器工作在物理层,用来连接两个速率相同且数据链路层协议也相同的网段
  • 集线器(Hub)相当于一个多接口的中继器,任何时刻都只能有一个结点通过公共信道发送数据
  • 网桥工作在数据链路层,可以互连不同的物理层、不同的MAC子层及不同速率的以太网
  • 交换机工作在数据链路层,相当于一个多端口的网桥
  • 利用交换机可以实现虚拟局域网(VLAN),VLAN不仅可以隔离冲突域,而且可以隔离广播域
  • 路由器连接的网络,物理层、数据链路层、网络层协议可以不同,而网络层以上的高层协议必须相同
  • 软件实现的分发往往比硬件慢,因此从数量级上看,如果局域网交换机的传输时延为几十微秒,那么网桥的传输时延为几百微秒,而路由器的传输时延为几千微秒
  • 集线器的每个端口都具有收发功能,当某个端口收到信号时,立即向所有其他端口转发;因此其传输时延最小
  • 物理层设备集线器不能分割碰撞域,数据链路层设备交换机和网桥可以分割碰撞域,但不能分割广播域,而网络层设备路由器既可以分割碰撞域,又可以分割广播域
  • 对于10Mb∕s的半双工端口,端口带宽为10Mb/s,总容量则是端口数×带宽/2
  • 直通交换只检查帧的目的地址
  • 交换机当交换表Miss时广播不会涉及发送方的端口

网络层

网络层的向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,主机进程间的可靠传输由更上的传输层提供
网络互连是指将两个以上的计算机网络,通过一定的方法,用一些中间设备(又称中继系统)相互连接起来,以构成更大的网络系统。根据所在的层次,中继系统分为以下4种

  1. 物理层:转发器,集线器
  2. 数据链路层:网桥或交换机
  3. 网络层:路由器(有时也叫网关)
  4. 网络层以上:网关

物理层或数据链路层的中继系统时,扩充后仍是一个网络,网络层以上才会有网络互连
TCP/IP体系在网络互连上采用的做法在网络层采用标准化协议,但相互连接的网络可以是异构的,可以视为虚拟IP网络(IP协议屏蔽异构细节)

路由器主要完成两个功能:

  1. 路由选择,按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由(根据算法计算出路由表)
  2. 分组转发,根据转发表(由路由表得出)将用户的IP数据报从合适的端口转发出去。

SDN
网络层可划分为数据平面(也称转发层面)和控制平面,转发是数据平面实现的功能,而路由选择是控制平面实现的功能。
转发指的是输入链路到输出链路,路由指的是寻找下一跳地址
软件定义网络(SDN)采用集中式的控制平面和分布式的数据平面,两个平面相互分离。控制平面利用控制-数据接口对数据平面上的路由器进行集中式控制
路由器之间不再相互交换路由信息,远程控制器拿握各主机和整个网络的状态,为每个分组计算出最佳路由,通过Openflow协议(也可以通过其他途径)将转发表(在SDN中称为流表)下发给路由器
SDN提供的编程接口称为北向接口,提供充足API,SDN控制器和转发设备建立双向会话的接口称为南向接口,通过不同的南向接口协议(如 Openflow), SDN控制器就可兼容不同的硬件设备,同时可以在设备中实现上层应用的逻辑
SDN控制器集群内部控制器之间的通信接口称为东西向接口,用于增强整个控制平面的可靠性和可拓展性
优点:性能,可编程,分离式架构降低成本
缺点:控制器可能是性能瓶颈,集中管理有安全风险

拥塞控制:出现过量的分组而引起网络性能下降的现象称为拥塞
如图,对带宽占用较高时,吞吐量会骤降,平均时延趋近无限大

拥塞控制的作用是确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各方面的行为:主机、路由器及路由器内部的转发处理过程等,与流量控制不同的是,后者只关心发送端速率是否高于接收端速率
方法包括:

  • 开环控制,设计网络时,统筹总体,之后不再修改
  • 闭环控制,用监测网络系统实时监控,实时调整系统

路由算法

  • 静态(非自适应)路由算法:手动设置路由表,形成路由
  • 动态(自适应)路由算法:相互连接的路由器交换信息,动态计算出路由表

距离-向量算法

所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点,包括路径目的地与其距离(一般定义为经过的路由器数量,如RIP算法)
得到一个新路由,或是收到路由信息包含一个更优路由时,更新路由表,在复杂的系统中,这种更新复杂度很高,且可能有环路问题

链路状态算法(eg. OSPF)

每个参与该算法的结点都具有完全的网络拓扑信息,每个节点都测试邻接结点(共享一条链路的结点)的状态;且定期将链路状态传播给其他所有结点
每个结点都用这种方式从网上所有其他的结点接收包含直接链路状态的路由选择信息,每当链路状态报文到达时,结点更新自己的视野,一旦链路状态发生变化,结点就对更新的网络图利用Dijkstra最短路径算法重新计算路由,从单一的源出发计算到达所有目的结点的最短路径

  1. 向所有路由器发送信息时,通过所有端口向所有相邻的路由器发送信息。而每个相邻路由器又将此信息发往其所有相邻路由器(但不再发送给刚刚发来信息的那个路由器)
  2. "链路状态"指说明本路由器与哪些路由器相邻及该链路的度量(距离等)
  3. 当链路状态发生变化时,路由器才向所有路由器发送此信息

易于查找故障,其报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,可以用于大型的或路由信息变化聚敛的互联网环境

层次路由算法

整个互联网划分为若干较小的自治系统(一个自治系统中包含很多局域网),自治系统有权自主地决定本系统内应采用何种路由选择协议

  • 自治系统内部所使用的路由选择协议称为内部网关协议(IGP), 也称域内路由选择(RIP/OSPF)
  • 自治系统之间所使用的路由选择协议称为外部网关协议(EGP), 也称域间路由选择,在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径(BGP)

使用层次路由时,OSPF将一个自治系统再划分为若干区域(Area), 每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。能够用于规模很大的自治系统中

IPv4

  • 首部长度以32位为单位,最大值为60B,最常用的首部长度是20B,此时不使用任何选项(即可选字段)
  • 总长度单位是B,包括首部和数据,即数据报最大长度65535B,但其总长度无法超过以太网帧最大传送单元1500B
  • 标识每产生一个数据报+1,标记数据报,分片时共享标识号
  • 标志,标志字段的最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间的一位是DF,只有当DF= 0时才允许分片。
  • 片偏移指出某片在原分组中的相对位置,以8个字节为偏移单位(13位和16位差了3位,\(8=2^3\))
  • 生存时间:数据报在网络中可通过的路由器数的最大值,防止环路,路由器在转发分组前,TTL减1,收到时若ttl为0则丢弃
  • 协议:其中值为6表TCP ,值为17表示UDP
  • 首部校验和:只校验分组的首部
  • 源地址字段标识发送方的IP地址
  • 目的地址字段标识接收方的IP地址

分片

链路层的最大传送单元MTU由于物理条件限制,远小于IP数据报的最大大小,对一个报文可以分片
片在目的地的网络层重新组装,目的主机使用IP首部的标识,标志,片偏移字段来重组片

  • 属于相同报文的片有相同的标识号;
  • 标志位的后两位分别是MF,DF,DF=0时才可以分片,MF=0表示该报是最后一片
  • 片偏移字段确定片应放在原始IP数据报的哪个位置,以8B为单位(即片的数据长度必须是8的倍数)

地址

IPv4地址(32bit):

特殊地址:

  • 主机号全0表示网络本身
  • 主机号全1表示网络的广播地址
  • 127.*.*.*表示环回自检地址,表示任意主机自身
  • 0.0.0.0表示本网络的本主机
  • 255.255.255.255表示整个网络的广播地址(受限广播地址),实际使用会被路由器隔离为本网络的广播地址

points:

  • IP地址管理机构只需要分配网络号,路由器转发时也只需要考虑网络号。
  • 当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的主机号是不同的
  • 转发器或桥接器(网桥等)连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同
  • 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址
  • 所有分配到网络号的网络(无论是LAN还是WAN)都是平等的

NAT

网络地址转换(NAT):

将专用网络地址转换成公用地址,从而对公网屏蔽内网细节,划出部分IP地址作为私有地址,需要通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet
所有路由器,对目的地址是私有地址的数据报一律不进行转发
具体包括:

  • A:10.0.0.0‒ 10.255.255.255
  • B: 172.16.0.0‒ 172.31.255.255
  • C: 192.168.0.0‒ 192.168.255.255

NAT路由器至少有一个有效公网IP。NAT路由器使用NAT转换表进行本地IP地址和全球IP地址的转换,典型转换表如下:

WAN(公网地址和端口号) LAN(私有地址和端口号)
138.23.12.4, 5001 192.168.0.2, 2233

普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址,也不涉及端口号。而NAT路由器在转发IP数据报时,一定要更换其IP地址,并需要查看转换端口号

子网

子网划分出现在IP协议之后,将两级结构变成三级,即网络号:子网号:主机号,但对内网外透明
从其他网络发送给本单位某台主机的IP数据报,先找到路由器,路由器找到子网,交付目的主机
全0或全1主机号有特殊含义,全0的地址为子网的网络号,主机号全1的地址为子网的广播地址
子网掩码(与地址等长)用于和IP地址and运算,得出其所在子网的网络号,路由器在相互之间交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉对方,路由表中的每个条目也要给出该目的网络的子网掩码
points:

  • 现在的因特网标准规定:所有的网络都必须使用子网掩码。如果一个网络未划分子网,那么就采用默认子网掩码(ABC类对应123个255)
  • 主机在设置IP地址信息的同时,必须设置子网掩码
  • 属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码
  • 路由表中,所包含信息的主要内容有目的网络地址、子网掩码、下一跳地址

CIDR:在变长子网掩码的基础上提出的一种消除传统A 、B 、C 类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法
CIDR 使用"网络前缀”的概念代替子网络的概念,其位数可变,即ip=网络前缀+主机号,也使用斜线记法,即IP地址/网络前缀所占比特数
CIDR不涉及子网,但可以组织内划分,如20位前缀,可以主机位的前三位作为子网号,子网前缀则是23位
网络前缀都相同的连续IP地址组成"CIDR地址块”。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网

如图的两个网络聚合成206.1.0.0/16

一把来说CIDR地址块的地址数是 \(2^N-2\) (需要减去全0和全1)
在查找路由表时可能会得到不止一个匹配结果。应从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体

转发分组

路由表的常见组成:(目的网络,下一跳地址)
由于CIDR优先匹配最长网络前缀,可以将最长前缀的表项排序在前(如果不这么做就需要遍历)
转发表中的特殊路由:

  • 主机路由:对特定主机IP专门指定一个路由,子网掩码为32位(32位掩码只用于转发表)
  • 默认路由:0.0.0.0/0表示默认路由,全0掩码和任何目的地址与运算,结果必然全0,目的网络不在转发表中时使用

算法过程:

  1. 从IP首部提取目的地址
  2. 匹配到特定主机路由时,按这条转发,否则继续查找
  3. 进行掩码与运算,若匹配本行前缀,则查找结束,发给下一条;否则若转发表还有下一行,则重复3,否则执行4
  4. 若转发表中有一个默认路由,则把分组传送给默认路由;否则,报告转发分组出错
  5. 得到下一跳路由器的IP地址后,将该IP地址转换成MAC地址(通过ARP),将此MAC地址放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器,不同网络传输过程中,MAC的收发地址改变(网桥转发不改变源地址)

部分协议

网络层只使用IP地址来完成寻址,而在局域网的链路层,只能看见MAC帧,IP分组在每个网络中都被路由器解封装和重新封装,其MAC帧首部中的源地址和目的地址会不断改变,到达目标网络后,在其LAN中通过MAC帧寻址

ARP

地址解析协议(ARP):进行IP地址到MAC地址的映射,每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表
arp不仅可以用于一个局域网内两个主机的相互定位,也可以跨局域网定位其他主机,这是通过路由器转发实现的,也就是跨网的arp,发起者只需要定位路由器,由路由器代理完成剩余工作
每台主机有自己的ARP高速缓存,动态维护
对与跨网络的映射问题,则需要通过中间路由器进行
工作过程:

  1. 主机A准备发给主机B数据报,在缓存中查找B的IP地址
    1. 如果有,根据表项的MAC,编写并发出MAC帧
    2. 若没有,使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,主机B发出ARP响应分组,主机A将其写入缓存,并发送MAC帧

应用场合:

  • 网1的H1用ARQ找到H2的MAC
  • H1用ARQ找到R1,由R1发给H3
  • R1在网2用ARP找到目的主机H3的硬件地址
  • R1在网2用ARP找到与网2连接的路由器R2的硬件地址,转发给H4

DHCP

动态主机配置协议(Dynamic Host Configuration Protocol DHCP) 是应用层的基于UDP的协议,常用于给主机动态地分配IP地址
使用C/S模式,需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文
DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文称为提供报文
交换过程:

  1. 客户机广播"DHCP发现"消息,找到DHCP服务器。信息的源地址为0.0.0.0,目的地址为255.255.255.255
  2. 服务器收到"发现"消息后,广播"DHCP提供"信息,包括提供给DHCP客户机的IP地址,源地址是服务器地址,目的地址全1
  3. 客户机收到"提供"消息,如果接受该地址,广播"DHCP请求"消息,向服务器请求提供IP地址。信息的源地址为0.0.0.0,目的地址为255.255.255.255
  4. 服务器广播"DHCP确认"消息,将IP地址分配给DHCP客户机。源地址为DHCP服务器地址,目的地址为255.255.255.255。

DHCP允许网络配置多台服务器,对发现信息的应答,客户机一般挑选最先到达的
客户机只能在有限时间内使用被分配的IP地址,称为租用期
确认IP地址前,交互只能通过广播+UDP方式进行(TCP需要确定的IP)

ICMP

网络层使用网际控制报文协议(Intemet ControlMessage Protocol, ICMP )来让主机或路由器报告差错和异常情况
ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文
差错报文类型

  1. 终点不可达:无法交付数据报时向源点发送
  2. 源点抑制:拥塞丢弃数据报时,向源点发送,让其暂缓发送
  3. 超时:收到TTL为0的数据报,丢弃时向源点发送。终点在规定时间内未收到全部数据报片时,也丢弃数据报片并发送
  4. 参数问题:数据报首部字段不正确时丢弃并发送
  5. 改变路由:让主机知道下次应将数据报发送给另外的路由器

不应发送ICMP差错报告报文的情况:

  1. 对ICMP差错报告报文不再发送ICMP差错报告报文
  2. 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
  3. 对具有组播地址的数据报都不发送ICMP差错报告报文
  4. 对具有特殊地址(如 127.0.0.0或 0.0.0.0)的数据报不发送ICMP差错报告报文

询问报文有4种类型:回送请求和回答报文(测试目的站是否可达)、时间戳请求和回答报文(时钟同步和时间测量)、地址掩码请求和回答报文、路由器询问和通告报文,最常用的是前两类。
PING(应用层)使用了ICMP回送请求和回答报文,Traceroute (Tracert,跟踪分组经过的路由,网络层)使用了ICMP时间超过报文

  • IP分组头中与分片和组装相关的字段是:标识、标志与片偏移
  • 如果分组长度超过MTU,那么当DF=1时,丢弃该分组,并且要用ICMP差错报文向源主机报告
  • 没有对应转发表项时,nat路由器直接丢弃分组
  • 路由器的路由表使用最长前缀匹配原则
  • 由于全0或全1不可作为主机号,主机号至少2位

IPv6

地址从IPv4的32位增大到了128位,拓展性,灵活性,安全性更强,简化了分组头(更多配置可选)首部长度固定40B
其目的地址可以是一台或多台主机,也可以是新增的任播(目的站是一组计算机,交付时只交付任意一台);只有源主机才能分片
地址中的每4位用一个十六进制数表示,并用冒号分隔每16位,可以缩写每个域内开头的0,但每个域必须有一位数字,相邻的0域可以用::缩写,且这种缩写一个地址限一次
IPv6数据报由两部分组成:基本首部和有效载荷(也称净负荷)

基本首部中各字段的含义:

  1. 版本:4位,指明协议的版本,对于IPv6该字段的值是6
  2. 通信量类:8位,区分不同的IPv6数据报的类别或优先级
  3. 流标号:20位,IPv6提出流的抽象概念,指互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音/视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有相同的流标号
  4. 有效载荷长度:16位,指明IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)。这个字段的最大值是65535(单位为字节)
  5. 下一个首部:8位,相当于IPv4首部中的协议字段或可选字段。当IPv6没有扩展首部时,其作用与IPv4的协议字段一样,指明数据报的数据是何种协议数据单元;当IPv6带有扩展首部时,它就标识后面第一个扩展首部的类型
  6. 跳数限制:8位,类似于IPv4首部的TTL字段。源点在每个数据报发出时即设定某个限制值(最大为255)。路由器每次转发时将其值减1,减为零时就将该数据报丢弃
  7. 源地址和目的地址:128位,是数据报的发送端/接收端的IP地址

目的地址的三种基本类型:

  1. 单播
  2. 多播,一点对多点的通信,数据报发送到一组计算机中的每一台。
  3. 任播,IPv6增加的一种类型。只交付一组计算机的其中一台计算机

地址类型(/n表示地址位数为n):

  1. 未指明地址(:: /128):不能用作目的地址,只能用于还未配置IPv6地址的主机作为源地址
  2. 环回地址(::1 /128):作用与IPv4的环回地址相同,但仅此一个
  3. 多播地址(FF00 /8):和IPv4的一样,这类地址占IPv6地址空间的1/256
  4. 本地链路单播地址(FE80::/10):类似于IPv4的私有IP地址
  5. 全球单播地址(上述地址以外的地址):格式为全球路由选择前缀/48 - 子网标识符/16 - 接口标识符/64,其中全球路由选择前缀用于路由选择;子网标识符用于构建子网;接口标识符,用于指明主机或路由器的单个网络接口,相当于v4的主机号

过渡策略:

  • 双协议栈:在一台设备上同时装有IPv4和IPv6协议栈,同时可以使用两种协议通信; 使用应用层的域名系统(DNS)获知目的主机采用的是哪种地址
  • 隧道技术的要点是在IPv6数据报要进入IPv4网络时,把整个IPv6数据报封装到IPv4数据报的数据部分,使IPv6数据报在IPv4网络的隧道中传输,离开IPv4网络时转化成v6数据报运输
  • IPv6支持QoS,以满足实时、多媒体通信的需要,Qos(QualityofService,服务质量)指个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网各延迟和阻寒等问题的一种技术
  • IPv6取消了校验和字段,不允许分片,因此如果路由器发现到来的数据报太大而不能转发到链路上,那么丢弃该数据报,并向发送方发送一个指示分组太大的ICMP报文
  • 首部长度是不可变的因此不需要首部长度字段

自治系统

自治系统 (Autonomous System, AS):单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由,其内部的所有路由器互相连通
自治系统内部的路由选择称为域内路由选择
自治系统之间的路由选择称为域间路由选择

  • 内部网关协议IGP:自治系统内部使用的路由选择协议,如RIP,OSPF
  • 外部网关协议EGP:自治系统边界的协议,如BGP-4

路由信息协议RIP

  1. 每个路由器都要维护从它自身到其他每个目的网络的距离,记为距离向量,规定从一个路由器到直接连接网络的距离(跳数)为1,每经过一个路由器,距离(跳数)加1
  2. 一条路径最多只能包含15跳,16时表示网络不可达
  3. 默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表
  4. 在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同

与OSPF相比:

  • 仅和相邻路由器交换信息
  • 交换全部路由表
  • 交换时间间隔固定

算法步骤:

  1. 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把"下一跳”字段中的地址都改为X,并把所有"距离"字段的值加1
  2. 对报文的每个项目:
    1. 原来的路由表中没有目的网络N时,把该项目添加到路由表
    2. 原来的路由表中有目的网络N,且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目
    3. 原来的路由表中有目的网络N , 且下一跳路由器的地址不是X时,若其中距离d小于路由表中距离,用收到的项目替换原路由表中的项目
  3. 如果180秒(默认超时时间)还没有收到相邻路由器的更新路由表,标记其为不可达路由器,距离设为16

RIP是基于UDP的应用层协议,实现简单,开销小,选择最少路由器的路径;但限制网络规模,且开销随着规模迅速增长,网络故障时慢收敛,更新慢

开放最短路径优先OSPF

OSPF是网络层协议,是使用分布式链路状态路由算法的典型代表,也是内部网关协议(IGP)的一种

  • 仅当链路状态变化时,向本自治系统中的所有路由器发送信息,信息包括与本路由器相邻的所有路由器的链路状态(路由器和哪些路由器相邻及该链路的"度量")
  • OSPF对不同的链路可根据IP分组的不同服务类型(TOS)而设置成不同的代价,更有灵活性
  • 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径(多路径间的负载平衡)
  • OSPF路由器之间需要鉴别,保证安全
  • 支持可变长度的子网划分和无分类编址CIDR
  • 每个链路状态都带上一个32位的序号,序号越大,状态就越新

本质上说,所有路由器建立起一个链路状态数据库,在全网内一致(链路状态数据库的同步),每个路由器根据这个全网结构图,使用Dijkstra最短路径算法计算从自己到各目的网络的最优路径,但表内只存储下一跳
OSPF将一个自治系统再划分为若干更小的范围,称为区域,减少广播的开销,处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域,主干区域中,用于连接主干区域和其他下层区域的路由器称为区域边界路由器。只要是在主干区域中的路由器,就都称为主干路由器,主干路由器可以兼作区域边界路由器

分组类型

  1. 问候分组,用来发现和维持邻站的可达性
  2. 数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
  3. 链路状态请求分组,向对方请求发送某些链路状态项目的详细信息
  4. 链路状态更新分组,用洪泛法对全网更新链路状态
  5. 链路状态确认分组,对链路更新分组的确认

路由器启动时,OSPF让每个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息,随后各自请求一些缺少状态项目的信息。通常每隔10秒 ,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达

规定每隔一段时间(如30分钟)就刷新一次数据库中的链路状态。由于一个路由器的链路状态只涉及与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此,当互联网规模很大时,OSPF要比RIP好得多,而且OSPF协议没有"慢收敛"的问题
OSPF协议使用ip数据报
用UDP传送是指将该信息作为UDP报文的数据部分,而直接使用IP数据报传送是指将该信息直接作为IP数据报的数据部分,RIP报文是作为UDP数据报的数据部分

边界网关协议BGP

基于TCP的应用层协议,不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议,不要求找到最佳路由
流程如下:自治系统管理员选择至少一个路由器(其内部依旧运行自己的网关协议)作为BGP发言人,与其他系统的发言人交换路由信息(通过TCP连接,即BGP报文是TCP报文的数据部分),通过交换能得出到达各个系统的较好路由
在BGP刚运行时,BGP的邻站交换整个BGP路由表,但以后只需在发生变化时更新有变化的部分

BGP简化了寻找路由的成本,且支持CIDR,路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
BGP使用4种报文:

  1. 打开Open,与相邻的BGP发言人建立关系
  2. 更新Update,发送某一路由的信息,或者发送要撤销的路由
  3. 保活Keepalive,确认打开报文,和邻站连接
  4. 通知Notification,发送检测到的差错

  • rip的距离可以超过16,只要超过就表示不可达
  • 收敛,是指当路由环境发生变化后,各路由器调整自己的路由表以适应网络拓扑结构的变化,最终达到稳定状态(路由表与网络拓扑状态保持一致)

IP组播

一些网络应用需要组播机制,让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收
组播仅应用于UDP,有更高的效率,其目的地址是组播地址,网络可以将其发给组内每个主机(主机可以同时属于多个组)
IP组播也使用组播组的概念,每个组都有一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址。
在IPv4中,这些地址在D类地址空间中分配,而IPv6也有一部分地址空间保留给组播组


主机使用一个称为IGMP (因特网组管理协议)加入组播组。主机通过该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。通过扩展路由器的路由选择和转发功能,可以在许多路由器互连的支持硬件组播的网络上面实现因特网组播。
主机只需要发出一份数据,路由器(能够运行组播协议的路由器称为组播路由器)负责对多个分叉转发

地址

D类IP地址:前四位是1110,范围是 224.0.0.0-239.255.255.255
与一般IP数据报不同,组播数据报使用D类IP地址(但不是任何D类地址都可以使用)作为目的地址,且首部的协议字段值为2,表示使用IGMP
组播数据报不保证可靠,不产生ICMP差错报文(无法PING),组播地址只能用于目的地址
以太网组播地址的范围是从01-00-5E-00-00-00到 01-00-5E-7F-FF-FF,即23位,和D类地址的23位一一对应,而D类IP一共有28位可分配,5位需要丢弃
在 48 位的多播地址中,前 25 位都固定不变,只有后 23 位可用作多播
组播IP地址与以太网硬件地址的映射关系不是唯一的,因此收到组播数据报的主机,要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃

算法

连接到局域网上的组播路由器还必须和因特网上的其他组播路由器交流,以将组播数据报用最小代价传送给所有组成员,即需要组播路由选择协议
IGMP让连接到本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组,但不知道具体主机数量,也不知道这些成员都分布在哪些网络上
IGMP的工作流程:

  1. 当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报文 ,声明自己要成为该组的成员。本地的组播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他组播路由器
  2. 本地组播路由器周期性地确认组的成员状态,一个组在经过几次的探询后仍然没有一台主机响应时,则不再将该组的成员关系转发给其他的组播路由器

组播路由选择实际上就是要找出以源主机为根结点的组播转发树,其中每个分组在每条链路上只传送一次。不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树
因特网组播时,主要有三种路由算法:第一种是基于链路状态的路由选择;第二种是基于距离-向量的路由选择;第三种可以建立在任何路由器协议之上,因此称为协议无关的组播(PIM)
特殊机制:

  • 分散响应:在 IGMP 的询问报文中有一个数值N指明一个最长响应时间,收到询问时,主机在 0 到 N之间随机选择发送响应所需经过的时延。若一台主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送
  • 抑制机制:同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就不再发送响应了

移动IP

移动站以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变
定义了三种功能实体:移动节点、本地代理(也称归属代理)和外地代理

  • 移动节点:有永久IP地址的移动站
  • 本地代理:连接在归属网络(原始连接到的网络)上的路由器
  • 外地代理:连接在被访网络(移动到另一地点所接入的网络)上的路由器

每个移动站有一个永久地址(或归属地址),原始连接的网络称为归属网络,归属代理在应用层上完成
移动后接入的网络则是被访网络,需要外地代理(连接被访网络的路由器)
外地代理为移动站创建一个临时地址,称为转交地址,及时把移动站的转交地址告诉其归属代理

基本流程:

  1. 归属网络时,按传统的TCP/IP方式进行通信
  2. 漫游到外地网络时,向外地代理进行登记,以获得一个临时的转交地址,外地代理向移动站的归属代理登记移动站的转交地址
  3. 归属代理构建一条通向转交地址的隧道,将截获的发送给移动站的IP分组进行再封装,通过本地代理发送给被访网络的外地代理
  4. 外地代理把收到的封装的数据报进行拆封,恢复成原始的IP分组,然后发送给移动站
  5. 移动站在被访网络对外发送数据报时,仍然使用自己的永久地址作为数据报的源地址,此时数据直接通过被访网络的外部代理发送
  6. 移动站移动到另一外地网络时,在新外地代理登记后,然后新外地代理将移动站的新转交地址告诉其归属代理。无论如何移动,移动站收到的数据报都是由归属代理转发的
  7. 移动站回到归属网络时,移动站向归属代理注销转交地址

简单地说,移动到其他网络时,该网络路由器分配一个临时的移交ip地址,用于和原来的网络通信,且维持原先的ip地址,对外界网络发送时则直接使用代理服务器发送(地址依旧是最初地址)

网络层设备

  • 冲突域是指连接到同一物理介质上的所有结点的集合,这些结点之间存在介质争用的现象(OSI中只出现在第一层,第二层开始的设备可以划分冲突域)
  • 广播域是指接收同样广播消息的结点集合(OSI中被视为第二层设备,路由器等3层设备可以划分广播域)

路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发 ,路由器用来连接多个广播域
主机发送数据报时,路由器负责按照路由表转发目标主机不在网络中的数据报(间接交付),同一个网络中则是直接交付

路由选择部分也称控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表
分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口,输入端口从物理层的比特流中提取数据链路层帧,再提取网络层数据报,输出相反,交换表进行转发表的管理,查找,选取合适的输出端口发出;
有三种常用的交换方法:通过存储器进行交换、通过总线进行交换和通过互联网络进行交换。交换结构本身就是一个网络
路由器主要完成两个功能:一是分组转发,二是路由计算。前者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等;后者通过和其他路由器进行基于路由协议的交互,完成路由表的计算
与网桥不同,路由器会根据不同层次的协议进行不同操作,路由器有能力对下三层协议的控制信息进行识别、分析以及转换

路由表

标准的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口

转发表基于且简化路由表,一般只包括分组目的地址与其下一跳(MAC),可以设置优先级最低的一个默认路由

路由表是许多路由器协同工作的结果,转发表只包括下一跳,分组的实际转发是靠直接查找转发表

传输层

传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层
应用进程之间的通信又称端到端的逻辑通信,传输层工作在主机中,提供这种通信
其中:

  • 复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据
  • 分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程

网络层也有复用分用的功能,网络层的复用是指发送方不同协议的数据都可以封装成IP数据报发送出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议

传输层对报文进行差错检测(首部和数据部分),网络层只检查IP数据报首部,不检验数据部分是否出错

端口:传输层服务访问点(TSAP),数据链路层的SAP是MAC地址,网络层的SAP是IP地址
硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。传输层使用软件端口。

端口号:端口号16位,能表示65536个数据,表示各个进程,分为:

  • 服务器端使用的端口号
    • 0-1023的常用端口号,IANA (互联网地址指派机构)把这些端口号指派给了 TCP/IP最重要的一些应用程序
    • 1024-49151的其他应用,必须在IANA登记
  • 客户端使用的端口号:49152-65535,称短暂端口号(也称临时端口)

套接字:端口号拼接到IP地址即构成套接字Socket。在网络中采用发送方和接收方的套接字来识别端点,唯一地标识网络中的一台主机和其上的一个应用(进程)
套接字Socket=(IP地址:端口号)
主机A发给主机B的报文段包含目的端口号和源端口号,源端口号是"返回地址”的一部分,即当B需要发回一个报文段给A时,B到A的报文段中的目的端口号便是A到B的报文段中的源端口号

  • 点对点是主机到主机,端对端是进程到进程
  • 同一台计算机中TCP和UDP分别拥有自己的端口号,它们互不干扰

UDP

在IP之上仅提供两个附加服务:多路复用和对数据的错误检查,远程主机的传输层收到UDP报文后,不需要确认
使用UDP的应用主要包括小文件传送协议(TFTP)、DNS、SNMP和实时传输协议(RTP)
开销小于TCP(如首部只需要8B)没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率
处理过程:发送方UDP对应用层交下来的报文,在添加首部后就向下交付给IP层,一次发送一个报文,既不合并,也不拆分;接收方UDP对IP层交上的UDP数据报,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文
报文长度由应用程序控制

UDP首部有8B,由4个字段组成,每个字段的长度都是2B

  1. 源端口号,不需要时全0,需要回信时填充
  2. 目的端口号
  3. 长度,最小值是8
  4. 校验和,可选,可以全0表示不使用

传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用进程,如果接收方UDP发现目的端口号对应的程序不存在,则丢弃报文,ICMP发送端口不可达差错报文

校验

在UDP数据报之前增加12B的伪首部,得到临时UDP数据报,不会像上下层传递
伪首部机制检查源端口号、目的端口号和UDP用户数据报的数据部分以及IP数据报的源IP地址和目的地址
发送方首先把全零放入校验和字段并添加伪首部,然后把UDP数据报视为许多16位的字串接起来。若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾填入一个全零字节(但此字节不发送)。然后按二进制反码计算出这些16位字的和,将此和的二进制反码写入校验和字段,并发送。接收方把收到的UDP数据报加上伪首部(如果不为偶数个字节,那么还需要补上全零字节)后,按二进制反码求这些16位字的和。当无差错时其结果应为全1,否则就表明有差错出现,接收方就应该丢弃这个UDP数据报
校验时,若UDP数据报部分的长度不是偶数个字节,则需填入一个全0字节,错误数据可以附上错误报告后交付

  • UDP数据报首部长度是固定的8B,所以没有必要再设置首部长度字段

TCP

  • TCP连接是逻辑上的,点对点连接
  • 提供可靠服务,无差错无丢失,不重复且有序
  • 提供全双工通信,允许双方任何时间发送数据,即双方都有发送接收缓存
    • 发送缓存:
      1. 发送应用程序传送给发送方TCP准备发送的数据;
      2. TCP已发送但尚未收到确认的数据
    • 接收缓存
      1. 按序到达但尚未被接收应用程序读取的数据;
      2. 不按序到达的数据
  • 面向字节,把应用程序交下来的数据仅视为一连串的无结构的字节流, 报文长度则根据接收方给出的窗口值和当前网络拥塞程度来决定

报文段

TCP传送的数据单元称为报文段。TCP报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答

首部最短为20B,后有4N字节可选字段:

  1. 源端口和目的端口,各占2B
  2. 序号占4B,即 \([0,2^{32}-1]\) 编号的对象是整个连接传输的字节流中的字节,序号字段的值指的是本报文段所发送的数据的第一个字节在字节流中序号
  3. 确认号占4B,期望收到对方下一个报文段的第一个数据字节的序号,可连带确认之前的数据报
  4. 数据偏移,占4位,表示首部长度,即数据段离报文起始地址的长度,其单位是4B,即最大首部长度为60B
  5. 保留位6位,置为0
  6. 紧急位URG,为1时表示有紧急数据,与紧急指针配合使用,第一个字节到紧急指针所指字节是紧急数据
  7. 确认位ACK,为1时确认字段生效,在建立连接后才可以且必须启用
  8. 推送位PSH,为1时需要立即交付,不可等待缓存区满
  9. 复位位RST,为1时表示连接出现差错,需要释放
  10. 同步位SYN,为1时表示连接请求或接受报文(此时ACK=0表示是请求报文,否则是接收报文)
  11. 终止位FIN,为1时表示(发送方)数据传完,需要释放连接
  12. 窗口,占2B,表示允许对方发送的数据量,即接收方剩余缓存大小,单位为B
  13. 校验和,2B,分首部和数据,类似UDP添加12B伪首部(UDP伪首部的协议字段的17改成6,UDP长度字段改成TCP长度,其他的和UDP一样)
  14. 紧急指针,2B,与URG搭配,指出紧急数据有多少字节(紧急数据在报文段数据的最前面)
  15. 选项,如最大报文段长度MSS(数据字段最大长度)
  16. 填充,确保首部长度是4B整数倍

连接管理

每个TCP连接都有三个阶段:连接建立、数据传送和连接释放

  • 每一方都知道对方存在
  • 可以协商参数
  • 能够对运输实体资源进行分配

TCP连接的端口即为套接字(Socket)或插口,每条TCP连接唯一地被通信的两个端点(即两个套接字)确定
建立采用客户/服务器模式。主动发起连接建立的应用进程称为客户(Client), 而被动等待连接建立的应用进程称为服务器(Server)

三次握手建立连接

  1. 服务器进程进入LISTEN状态
  2. 客户机发送连接请求报文段,其SYN置1,并选取一个初始序号seq=x,该报文段不携带数据;客户进程进入SYS-SENT状态
  3. 服务器收到请求,发回确认,为连接分配缓存,确认报文段中,把SYN位和ACK位都置1,确认号是ack=x+1,选取一个初始序号seq=y,TCP服务器进程进入SYN-RCVD状态
  4. 当客户机收到确认报文段后,还要向服务器给出确认,为该TCP连接分配缓存和变量,确认报文段的ACK位置1,确认号ack=y+1,序号seq=x+1,该报文段可以携带数据,不携带则不消耗序号;客户进程进入ESTABLISHED (已建立连接)状态
    服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击

四次握手释放连接

  1. 客户机发送连接释放报文段(FIN=1,序号seq=u,即最后一个数据字节的序号+1),停止发送数据,客户进程进入FIN-WAIT-1状态
  2. 服务器收到连接释放报文段后发出确认,确认号ack=u+1,seq=v(最后一个发送数据字节的序号+1),服务器进入CLOSE-WAIT状态,此时客户机不会继续发数据,但服务器可以单向连接客户机
  3. 服务器发完数据后,发出FIN=1的连接释放报文段。设该报文段的序号为w,需要重复确认号ack=u+1,服务器进入LAST-ACK状态
  4. 客户机收到连接释放报文段后,必须发出确认。把确认报文段中的确认位ACK置1,确认号ack=w+1,序号seq=u+1,计时器设置的最大长报文段寿命的两倍时间后,客户机正式关闭连接

连接的标志位情况如下

连接建立:

  1. SYN = 1, seq = x
  2. SYN = 1, ACK = 1, seq = y, ack = x + 1
  3. ACK = 1, seq = x + 1, ack = y + 1

释放连接:

  1. FIN = 1, seq = u
  2. ACK = 1, seq = v, ack = u + 1
  3. FIN = 1, ACK = 1, seq = w, ack = u + 1
  4. ACK = 1 , seq = u + 1 , ack = w + 1

可靠传输

保证接收方进程从缓存区读出的字节流与发送方发出的字节流一样

  1. 校验机制与UDP校验一样
  2. 序号,编号的对象是传送字节流,而不是报文段,字段的值是指本报文段所发送的数据的第一个字节的序号
  3. 确认,确认号字段值是期望收到对方的下一个报文段的数据的第一个字节的序号,发送方缓存区会继续存储已发送但未收到确认的报文段,以备重传
  4. 重传,分两种情况
    1. 超时,发送报文段后,有计时确认机制,确认超时就要重传;报文段发出的时间与收到相应确认的时间之差称为报文段的往返时间RTT,TCP会保留RTT的一个加权平均往返时间RTTs,计时器时限RTO应当略大于RTTs
    2. 冗余确认,冗余ACK:再次确认某个报文段的ACK,TCP规定每当比期望序号大的失序报文段到达时,就发送一个冗余ACK,规定发送方收到对同一个报文段的3个冗余ACK时,就可以认为跟在这个被确认报文段之后的报文段已经丢失,这时发送方A 可以重传序号最前的未确认帧,这种技术通常称为快速重传

流量控制

依然是使用窗口限制过快的发送速率,接收方根据自己缓存大小,调整发送方发送窗口大小,称为接收窗口rwnd(接收方允许连续接收的最大能力,单位是B),即调整报文段首部的窗口字段,同时发送方也可以自己估计窗口值,称为拥塞窗口cwnd(根据估算的网络拥塞程度而设置的窗口值)
发送方以最新的rwnd,作为未确认数据量的阈值

与数据链路层不同的是,后者定义两个中间的相邻结点的流量控制,前者定义端到端的流量控制,且窗口可以动态变化大小

阻塞控制

防止过多的数据注入网络,保证网络中的路由器或链路不致过载,往往表现为通信时延增加
主要指标有:

  1. 由于缺少缓存空间而被丢弃的分组的百分数
  2. 平均队列长度
  3. 超时重传的分组数
  4. 平均分组时延
  5. 分组时延的标准差

假设接收方缓存足够,发送窗口决定拥塞程度,发送窗口的上限值应取rwnd和cwnd中较小值

  1. 慢开始,先令拥塞窗口cwnd=1,每收到一个对新报文段的确认后,将cwnd加1;由于每次加1次数即是cwnd数,因此会指数增长,一般达到一个阈值ssthresh后改用拥塞避免

  2. 阻塞避免,每经过一个RTT,将cwnd加一,无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(未按时收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方的cwnd值的一半,cwnd置0
    慢开始阶段的指数不会跨过阈值(本质是加一累积起来),一旦碰到阈值就会变成拥塞避免算法

  3. 快重传,发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时

  4. 快恢复,当发送方连续收到三个冗余ACK(即重复确认)时,把慢开始门限ssthresh设置为此时发送方cwnd的一半(此时可能没有严重拥塞,只需要减慢窗口增长速率)并令cwnd减半,跳过了cwnd从1起始的慢开始过程,所以被称为快恢复

在TCP连接建立和网络出现超时时,采用慢开始和拥塞避免算法;当发送方接收到冗余ACK时,采用快重传和快恢复算法,以上基于cwnd足够的假设,实际的发送窗口大小是由rwnd和cwnd中较小值

  • 序号的单位是B
  • SYN,FIN段不能携带数据,但要消耗一个序号
  • 必须使得迟到的TCP报文段的序号不处在新连接所用的序号范围之中,因此,不同的TCP连接不能使用相同的初始序号
  • 服务器端进入CLOSED状态需要经过3次报文段的传输时间,即1.5RTT
  • tcp连接建立和释放过程,除了第一次报文,其他都附带ack,尤其是释放阶段,服务器端需要两次发送相同ack号的报文

应用层

应用模型

  1. C/S模型,客户/服务器(C/S)模型中,服务器始终接收请求,等待客户机发出请求后,进行相关处理并返回结果,客户机相互之间不直接通信
  2. P2P模型,去中心化,任意一对计算机(对等方peer),相互通信,拓展性强,但相对来说,效率更低

域名系统DNS

将易于记忆的网址转化为IP地址,采用客户/服务器模型,其协议运行在UDP之上,使用53号端口
域名,也就是俗称的网址(但不完全等于),是层次树状的,其英文不区分大小写,除了-不可使用其他标点,每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符,从左到右级别递增,如github.com,github低于com
顶级域名一般分为:

  1. 国家(地区)顶级域名(nTLD)国家和某些地区的域名,如".cn”表示中国,".us"表示美国,".uk"表示英国
  2. 通用顶级域名(gTLD)常见的有“.com”(公司)、".net"(网络服务机构)、".org"(非营利性组织)和".gov" (国家或政府部门)等
  3. 基础结构域名。这种顶级域名只有一个,即arpa, 用 于 反向域名解析,因此又称反向域名

域名服务器

域名解析实际是通过域名服务器进行,每个域名服务器管理一个,这些服务器以层次方式组织,一个区中的所有节点必须是能够连通的且区可以小于域,分为:

  1. 根域名服务器,最高层次的域名服务器,每个根域名服务器知道所有顶级域名服务器ip地址,因特网上有13个根域名服务器(实际上是集群),如果本地无法解析,首先求助根服务器,根服务器给出下一步应当找哪一个顶级域名服务器进行查询;根域名服务器采用任播机制,客户请求时只需要得到最近一台服务器响应
  2. 顶级域名服务器,可以给出具体ip,也可以转交下级
  3. 授权/权限域名服务器,负责一个区,每台主机都必须在授权域名服务器处登记,一台主机最好至少有两个授权域名服务器,授权服务可以把管辖的主机名直接转化为Ip地址,若无法给出回答,则转交一个可以给出回答的授权服务器
  4. 本地域名服务器,当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器

域名解析

把域名映射成为IP地址或把IP地址映射成域名的过程,分别叫正向和反向解析
客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器
查询可分为递归和迭代,但递归消耗较大一般不用

比较典型的查询过程:

  1. 客户机向其本地域名服务器发出DNS请求报文(递归查询)
  2. 本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求报文(迭代查询)
  3. 根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器。
  4. 本地域名服务器向顶级域名服务器dns.com发出解析请求报文(迭代查询)
  5. 顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器
  6. 本地域名服务器向授权域名服务器dns.abc.com 发起解析请求报文(迭代查询)
  7. 授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器
  8. 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机

dns广泛使用缓存(有一定生命周期)

  • 多个IP地址,多个主机可以映射到同一个域名上
  • dns可以视为一个联机分布式数据库系统

文件传输协议FTP

提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限,支持异构网络中的任意计算机之间传送文件
功能可分为:

  1. 提供不同种类主机系统(硬 、软件体系等都可以不同)之间的文件传输能力
  2. 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
  3. 以匿名FTP的方式提供公用文件共享的能力

一个FTP服务器进程可同时为多个客户进程提供服务,有一个主进程,负责接收新的请求 :另外有若干从属进程,负责处理单个请求
过程如下:

  1. 打开21端口,等待接收连接
  2. 启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止
  3. 返回等待状态

FTP服务器必须在整个会话期间保留用户的状态信息,追踪用户在远程目录树上的当前位置

FTP在工作时使用两个并行的TCP连接:即控制连接(服务器端口号21)和数据连接(服务器端口号20)

  1. 控制连接:用来传输控制信息(如连接请求、传送请求等),并且控制信息都以7位ASCII格式传送,但不直接传送文件,整个会话常驻打开

  2. 数据连接:服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和"数据连接"
    数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行

  3. 主动模式(PORT):

    • 客户端连接到服务器的21端口;
    • 登陆成功后,客户端随机开放一个端口,并告知服务器该端口号;
    • 服务器通过20端口连接到客户端开放的端口,发送数据。
  4. 被动模式(PASV):

    • 客户端发送PASV命令给服务器;
    • 服务器在本地随机开放一个端口,并告知客户端该端口号;
    • 客户端连接到服务器开放的端口,接收数据。
  5. 区别:

    • 主动模式是服务器连接到客户端的端口;
    • 被动模式是客户端连接到服务器的端口;
    • 选择哪种模式的权利在客户端。

anonymous,即匿名用户,被用作默认的ftp用户名

FTP与网络文件系统NFS的区别:

  1. FTP使用分离的控制连接,控制信息是带外传送(使用独立于常规通道或连接的专门通道进行数据传输,一般用于加急信息)的;
  2. 修改服务器文件时,需先传到本地,修改后再传回服务器,效率低;
  3. NFS允许直接打开远程文件,在特定位置开始读写数据,即NFS可复制大文件中的小片段,无需复制整个文件,效率高。

电子邮件

邮件是一种典型异步通信
三个最主要的组成构件:

  • 用户代理(User Agent),用户与电子邮件系统的接口,如微软的outlook
  • 邮件服务器,收发邮件,同时充当客户和服务器
  • 电子邮件使用的协议,如 SMTP、POP3 (或 IMAP)等,可分为发送(smtp)和读取(pop3)


典型步骤:

  1. 发信人调用用户代理来撰写和编辑要发送的邮件用户代理用SMTP把邮件传送给发送端邮件服务器
  2. 自发送端邮件服务器将邮件放入邮件缓存队列中,等待发送
  3. 运行在发送端邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起建立TCP连接
  4. TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件。当所有待发送邮件发完后,SMTP就关闭所建立的TCP连接
  5. 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取。
  6. 收信人打算收信时 ,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)

格式

一个电子邮件分为信封和内容两大部分,邮件内容又分为首部和主体两部分。邮件内容的首部包含一些首部行,每个首部行格式类似key: value有些关键字是必需的,有些则是可选的。 最重要的关键字是To和Subject
To后填入若干个收件人的地址(邮箱名@邮箱所在主机的域名)
From一般邮件系统自动填入

多用途网际邮件扩充(MIME)沿用SMTP的7位ascii码,但用其来展示其他语言字符集,包括:

  1. 5个新的邮件首部字段,包括MIME版本、内容描迷、内容标识、传送编码和内容类型
  2. 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
  3. 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变

常用协议

  1. SMTP,控制两个相互通信的SMTP进程交换信息,SMTP使用TCP连接,端口号为25
    1. 发件人的邮件发送到发送方邮件服务器的邮件缓存中,smtp客户定时扫描,发现有待发送邮件后,与接收方服务器建立tcp连接
    2. 接收方SMTP服务器发出220 Service ready ( 服务就绪)。然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名
    3. MAIL命令发送邮件,若 SMTP服务器已准备好接收邮件,则回答250 OK
    4. SMTP客户端发送一个或多个RCPT (收件人recipient的缩写)命令,每个命令服务器返回250 OK或550 无此用户
    5. OK后,客户端就使用DATA命令,表示要开始传输邮件的内容。正常情况下,SMTP 服务器回复的信息是 354 Start mail input; end with <CRLF>,<CRLF>, <CRLF>表示回车换行。此 时 SMTP客户端就可开始传送邮件内容,并用<CRLF><CRLF>表示邮件内容的结束。
    6. 客户应发送QUIT命令。SMTP服务器返回的信息是221 (服务关闭),释放连接
  2. POP3,采用Pull通信方式,用户代理向邮件服务器发出请求,拉取邮件;在传输层使用TCP,端口号为110。接收方的用户代理上必须运行POP客户程序,而接收方的邮件服务器上则运行POP服务器程序,两种工作方式:
    1. 下载并保留方式,邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上
    2. 下载并删除方式,邮件一旦被读取,就被从邮件服务器上删除
  3. 因特网报文存取协议(IMAP),维护了会话用户的状态信息,提供创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,允许用户代理只获取报文的某些部分
  4. 基于万维网的电子邮件,如 Hotmail、Gmail等。用户浏览器与Hotmail或 Gmail的邮件服务器之间的邮件发送或接收使用的是HTTP,而仅在不同邮件服务器之间传送邮件时才使用SMTP

万维网WWW

万维网(World Wide Web,WWW)是一个分布式、联机式的信息存储空间,俗称的网页,被称为资源,可以通过统一资源定位符(URL)访问,并通过超文本传输协议(HTTP)传给用户
准确的说有三个组成部分:

  1. 统一资源定位符(URL),全网范围内标识资源,一般格式:<协议>://<主机 >:<端口 >/<路径>
  2. 超文本传输协议(HTTP),使用TCP进行传输的应用层协议
  3. 超文本标记语言(HTML)一种文档结构的标记语言

流程可以被概括如下:

  1. Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求
  2. Web服务器把URL转换为文件路径,并返回信息给Web浏览器
  3. 通信完成,关闭连接

HTTP协议

HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器 ,是应用层协议
域名解析后,浏览器和服务器建立TCP连接,浏览器发送HTTP请求,服务器进行回应,例如返回一个html,浏览器显示这个网页
HTTP有两类报文:请求报文(从Web客户端向Web服务器发送服务请求)和响应报文(从Web服务器对Web客户端请求的回答)

HTTP基于TCP,但自身不需要另外的连接;HTTP无状态,服务器无差别提供服务,但可以通过本地存储的cookie在请求时携带cookie得到个性化服务
HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.0使用非持续连接,而HTTP/1.1的默认方式为持续连接)

  • 非持久连接,每个网页元素对象的传输都需要单独建立一个TCP连接,开销较大
  • 持久连接,是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文
    • 非流水线方式,客户在收到前一个响应后才能发出下一个请求
    • 流水线方式(HTTP/1.1的默认方式),客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有对象的传输共计经历1个RTT延迟+各自传输时间

      HTTP面向文本,报文中的每个字段都是一些ASCII码串,并且每个字段的长度不确定,分为请求和响应报文

      报文的组成:
  1. 开始行:区分是请求报文还是响应报文,在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行(三个字段空格相隔,CRLF分别表示回车和换行),其中请求行分为:方法,请求资源URL,HTTP版本
  2. 首部行:说明浏览器、服务器或报文主体的一些信息
  3. 实体主体:不常用,部分响应报文使用

每次进行TCP三次握手时,前两次握手消耗一个RTT,第3次握手的报文段如果捎带客户对HTML文件的请求,那么建立连接和获取第一个html花费两个RTT

协议 HTTP/2:

  1. 服务器可以并行发回响应
  2. 允许客户复用 TCP 连接进行多个请求
  3. 不发送重复的首部字段

状态码:

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

万维网使用 Cookie 跟踪在 HTTP 服务器和客户之间传递的状态信息
常见的HTTP请求报文方法:

方法(操作) 意义
OPTION 请求一些选项的信息
GET 请求读取由 URL所标志的信息
HEAD 请求读取由 URL所标志的信息的首部
POST 给服务器添加信息(例如,注释)
PUT 在指明的 URL下存储一个文档
DELETE 删除指明的 URL所标志的资源
TRACE 用来进行环回测试的请求报文
CONNECT 用于代理服务器

附录

以太网帧头部格式:

6B 6B 2B
目的 MAC 地址 源 MAC 地址 协议类型

IP 头部格式:

4 bits 4 bits 8 bits 16 bits 16 bits 3 bits 13 bits 8 bits 8 bits 16 bit 32 bits 32 bits
版本 头部长度 服务类型 总长度 标识 标志 片偏移 生存时间 协议 校验和 源 IP 地址 目的 IP 地址

TCP 报文格式:

14B 20B 2B 2B 4B 4B 4bit 6bit 6bit 2B 2B 2B 可变
以太网帧头部(14B) IP 头部(20B) 源端口号 目的端口号 序列号 确认号 数据偏移 保留 标志位 窗口大小 TCP 校验和 紧急指针 数据部分
udp

UDP 用户数据报格式:

14B 20B 2B 2B 2B 2B 可变
以太网帧头部(14B) IP 头部(20B) 源端口号 目的端口号 UDP 长度 UDP 检验和 数据部分

基于UDP的协议:DNS,DHCP,RIP,组播(IGMP)
基于TCP的协议:BGP,FTP,HTTP,SMTP,POP3