admin管理员组

文章数量:1531697

计算机网络学习笔记

一.计算机体系结构

1.1 计算机网络组成

  • 组成部分上看,一个完整的计算机网络主要由硬件软件协议三大部分组成。

硬件主要由主机(端系统)、通信链路(双绞线、光纤)、交换设备(路由器、交换机)和通信处理机(网卡)等组成。

软件主要包括各种实现资源共享的软件和方便用户的工具软件组成,多属于应用层。

协议是计算机网络的核心。

  • 工作方式上看,计算机网络可分为边缘部分核心部分

边缘部分由所有连接到因特网上、供用户直接使用的主机组成,用来通信和资源共享

核心部分由大量的网络和连接这些网络的路由器组成

  • 功能组成上看,计算机网络由通信子网资源子网组成。

通信子网由各种传输介质通信设备和相应的网络协议组成,使网络具有数据传输、交换、控制和存储的能力。

资源子网是实现资源共享功能的设备及软件的集合,向网络用户提供共享其他计算机上的硬件资源、软件资源和数据资源服务。

1.2 计算机网络功能

  • 数据通信
  • 资源共享,可以是软件共享、数据共享、硬件共享
  • 分布式处理
  • 提高可靠性
  • 负载均衡

1.3 计算机网络的分类

1.按分布范围

  • 广域网(WAN):提供长距离通信,是因特网的核心部分,有较大的通信容量
  • 城域网(MAN):可以覆盖几个街区或几个城市,大多采用以太网,因此时常并入局域网讨论
  • 局域网(LAN):传统上,局域网使用广播技术,广域网使用交换技术
  • 个人区域网(PAN):在个人工作的地方将电子设备用无线技术连接起来的网络,也常称无线个人区域网(WPAN)

若中央处理器之间的距离非常近,则一般称为多处理器系统而非计算机网络

2.按传输技术

  • 广播式网络:所有联网计算机都共享一个公共通信通道

局域网、广域网中的无线、卫星通信网络采用广播式通信技术

  • 点对点网络:每条物理线路连接一对计算机

是否采用分组存储转发与路由选择机制是点对点网络与广播式网络的重要区别,广域网基本属于点对点网络

3.按拓扑结构

网络拓扑结构主要指通信子网的拓扑结构。

  • 总线形网络:用单根传输线把计算机连接起来。优点是建网容易、增减结点方便、节省线路。缺点是重负载时通信效率不高、故障敏感。
  • 星形网络:每个终端或计算机都以单独的线路与中央设备相连。优点是便于集中控制和管理。缺点是成本高,中央设备对故障敏感。
  • 环形网络:所有计算机接口设备连成一个环,最经典的例子是令牌环局域网。环可以是单环和双环,环中信号是单向传输的。
  • 网状网络:一般情况下,每个结点至少有两条路径与其他结点相连,多用于广域网中。优点是可靠性高。缺点是控制复杂、线路成本高。

4.按使用者

  • 公用网:指电信公司出资建造的大型网络。
  • 专用网:指某个部门为满足本单位特殊业务的需要而建造的网络。

5.按交换技术

  • 电路交换网路:在源节点和目的结点之间建立一条专用的通路用于数据传输,传统电话网络就是最典型的电路交换网络。优点是数据直接传输、时延小。缺点是线路利用率低、不能充分利用线路容量、不便于进行差错控制。
  • 报文交换网络(存储-转发网络):用户数据加上源地址、目的地址、校验码等辅助信息封装成报文,一直转发到目的结点。优点是可以较为充分地利用线路容量,可以实现不同速率和格式转换,可以实现一对一、一对多访问,可以实现差错控制。缺点是增大了资源开销,增加了缓冲时延,需要额外控制机制,缓冲区难管理。
  • 分组交换网络(包交换网络):将数据分为较短固定长度的数据块,加上辅助信息转发。除报文交换网络的优点外,还缓冲易于管理,时延更小,更易于标准化,更适合应用。

6.按传输介质

分为有线网络和无线网络

1.4 计算机网络的性能指标

1.带宽(Bandwidth):表示网络的通信线路所能传输数据的能力。

2.时延(delay):指数据从网路的一端传送到另一端所需要的总时间,由4部分组成:发送时延传播时延处理时延排队时延

  • 发送时延:发送时延 = 分组长度 / 信道宽度
  • 传播时延:传播时延 = 信道长度 / 电磁波在信道上的传播速率
  • 处理时延:数据在交换结点为存储转发而进行的一些必要出来所花费的时间
  • 排队时延:分组在进入路由器后要现在输入队列排队等待处理,然后再输出队列等待转发

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

做题时若无题目要求一般只考虑发送时延和传播时延

对于高速链路,提高的是数据发送速率,减少的是发送时延

3.时延带宽积:指发送端发送的第一个比特即将到达的终点时,发送端已经发送出了多少个比特。因此又称之为以比特为单位的链路长度,时延带宽积 = 传播时延 X 信道带宽

4.往返时延(Round-Trip Time,RTT):从发送端发出的一个短分组,到发送端收到来自接收端的确认总共经历的时延。

5.吞吐量(Throughput):单位时间通过某个网络的数据量,受网络带宽或网络限定速率的限制

6.速率(Speed)(数据传输率、数据率、比特率):传输数据的速率

7.信道利用率:信道利用率 = 有数据通过时间 / (有 + 无)数据通过时间

1.5 计算机网络分层结构

计算机网络的各层及其协议的集合称为网络的体系结构,通常具有可分层的特性,将复杂的大系统分成若干较容易实现的层次。

第n层中的活动元素通常为第n层实体。不同机器上的同一层称为对等层,同一层的实体称为对等实体

每个报文都分为两部分:一个是数据部分SDU,二个是控制信息部分PCI,共同组成PDU。

服务数据单元(SDU):为完成用户所要求的功能而应传送的数据

协议控制单元(PCI):控制协议操作的信息

协议数据单元(PDU):对等层次之间传送的数据单位称为该层的PDU

OSI参考模型中,在对等层之间传送的数据的单位都称为协议数据单元(PDU),传输层称为报文段(TCP)用户数据报(UDP),在网络层称为分组数据报,在数据链路层称为,在物理层称为比特

1.6 协议、接口、服务

协议就是规则的集合。为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(Network Protocol)。一个完整的协议通常应具有线路管理(建立、释放连接)差错控制数据转换等功能

接口是同一结点内相邻两层间交换信息的连接点,是一个系统的内部规定。每层只能为紧邻的层次之间定义接口,不能跨层定义。同一结点相邻两层的实体通过服务访问点(Service Access Point, SAP)进行交互。

服务是指下层为紧邻上层提供的功能调用,它是垂直的。

上层使用下层所提供服务时必须与下层交换一些命令,在OSI参考模型中称为服务原语,分为四类

  • 请求(Request):由服务用户发往服务提供者,请求完成某项工作
  • 指示(Indication):由服务提供者发往服务用户,指示用户做某件事情
  • 响应(Response):由服务用户发往服务提供者,作为对请求的响应
  • 证实(Confirmation):由服务提供者发往服务用户,作为对请求的证实

有应答服务包括全部四种原语,而无应答服务只有请求和指示两种

只有本层协议的实现才能保证向上一层提供服务。只有那些能被高一层实体看见的功能才能称为服务。

服务有三种分类:

  • 面向连接服务与无连接服务

面向连接服务通信前双方必须先建立连接,分配相应的资源,结束后释放资源

无连接服务则直接发送

  • 可靠服务与不可靠服务

可靠服务具有纠错、检错、应答机制,能保证数据正确可靠的传送到目的地

不可靠服务时尽力而为的服务

  • 有应答服务和无应答服务

有应答服务在接收方收到数据后向发送方给出相应的应答。并非由用户实现

无应答服务不会自动应答,想要应答则需要高层用户实现。

1.7 ISO/OSI参考模型

OSI参考模型有7层,自下而上为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。第三层统称通信子网,高三层统称资源子网,传输层承上启下。

1.物理层(Physical Layer)

物理层的传输单位是比特,任务是透明的传输比特流,功能是在物理媒体上为数据端设备透明的传输原始比特流。

物理层主要定义数据终端设备(DTE)和数据通信设备(DCE)的物理与逻辑连接方法,所以物理层协议也称为物理层接口标准。

物理层接口标准有EIA-232C,EIA/TIA RS-449,CCITT的X.21等

2.数据链路层(Data Link Layer)

数据链路层的传输单位是帧,任务是将网络层传来的IP数据报组装成帧。数据链路层的功能可以概括成帧、差错控制、流量控制和传输管理等。

差错控制是把接收到的数据检测出差错,然后丢掉错误信息

流量控制是协调两个结点的速率使双方相等

数据链路层是点到点通信

数据链路层协议有SDLC、HDLC、PPP、STP和帧中继等

3.网络层(Network Layer)

网络层的传输单位是数据报,关心的是通信子网的运行控制,主要任务是把网络层的协议数据单元(分组)从源端传到目的端,并实现流量控制、拥塞控制、差错控制和网际互联等功能

拥塞控制是要缓解结点因来不及接受分组而要丢弃大量分组的情况

网络层的协议有IP、IPX、ICMP、IGMP、ARP、RARP和OSPF

4.传输层(Transport Layer)

传输层也称运输层,传输单位是报文段(TCP)或用户数据报(UDP),传输层负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务。

传输层是第一个开始端到端的层

由于一台主机可同时运行多个进程,因此传输层具有复用和分用的功能。

复用是指多个应用层进程可同时使用下面传输层的服务,分用是指传输层把收到的信息分别交付给上面应用层中相应进程。

传输层的协议有TCP、UDP

5.会话层(Session Layer)

会话层允许不同主机上的各个进程之间进行会话。会话层利用传输层提供的端到端的服务,向表示层提供它的增值服务。这种服务主要为表示层实体或用户进程建立连接并在连接上有序的传输数据,这就是会话,也称为同步(SYN)

会话层负责管理主机间的会话进程,包括建立、管理及终止进程间的会话。会话层可以使用校验点使通信会话在通信失效时从校验点继续恢复通信,实现数据同步。

6.表示层(Presentation Layer)

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

7.应用层(Application Layer)

应用层是用户与网络的界面,是最复杂的一层。

典型协议有FTP、SMTP、HTTP

1.8 TCP/IP 模型

TCP/IP模型从低到高依次为网络接口层(对应OSI参考模型中的物理层和数据链路层)、网际层、传输层和应用层(对应会话层、表示层和应用层)

1.9TCP/IP模型与OSI参考模型的比较

相似之处:二者都采用分层的体系结构,都是基于独立的协议栈概念,都可以解决异构网络的互联

差别:OSI精准定义了服务、协议、接口的概念,通用性良好,网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信,TCP/IP考虑到了多种异构网的互联问题,并将网际协议(IP)作为一个单独的重要层次,在网际层仅有一种无连接的通信模式,但传输层支持无连接和面向连接两种模式。

二.物理层

2.1 数据、信号、码元

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

连续变化的数据(或信号)称为模拟数据(或模拟信号)

取值仅允许为有限的几个离散数值的数据(或信号)称为数字数据(或数字信号)

数据的传输方式可分为串行和并行

码元是指用一个固定时长的信号波形(数字脉冲)表示一位K进制数字,代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为k进制码元,而该时长称为码元宽度。

2.2 信源、信道、信宿

信源是产生和发送数据的源头,信道是信号的传输媒介,信宿是接收数据的终点

噪声源是信道上的噪声及分散在通信系统其它各处的噪声的集中表示

信道按传输信号形式的不同,可分为传送模拟信号的模拟信道和传送数字信号的数字信道两大类

信道按传输介质的不同,可分为无线信道和有线信道。

基带信号将数字信号1和0直接用两种不同的电压表示,然后送到数字信道上传输(基带传输)

宽带信号将基带信号进行调制后形成频分复用模拟信号,然后送到模拟信道上传输(宽带传输)

从通信双方信息的交互方式上可分为单向通信(一条信道)、半双工通信(两条信道)、全双工通信(两条信道)

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

2.3 速率、波特、带宽

速率也称数据率,指的是数据传输速率,表示单位时间内传输的数据量,可用码元传输速率和信息传输速率表示

码元传输速率,又称波特率,表示单位时间内数字通信系统所传输的码元个数(也可称为脉冲个数或信号变化次数),单位是波特(1波特表示每秒传输1个码元)。码元速率与进制数无关。

信息传输速率,又称信息速率、比特率,表示单位时间内数字通信系统传输的二进制码元个数(比特数),单位是比特/秒(b/s)

码元传输速率也称调制速率、波形速率或符号速率

若一个码元携带n比特的信息量,则M波特率的码元传输速率所应的信息传输速率为Mn比特/秒

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

2.4 奈奎斯特定理和香农定理

码间串扰:信号中的许多高频分量往往不能通过信道,否则在传输中会衰减,导致接收端收到的信号波形失去码元之间的清晰界限。

码元的离散电平数目是指有多少种不同码元。如16种不同码元,则需要4个二进制位,因此数据传输速率是码元传输速率的4倍

2.4.1 奈奎斯特定理

奈奎斯特定理又称奈式准则,在理想低通(没有噪声、带宽有限)的信道中,为了避免码间串扰,极限码元传输速率为2W波特,其中W是理想低通信道的带宽。用V表示每个码元离散电平的数目,则极限数据率为理想低通信道下的极限数据传输速率 = 2Wlog2V(单位b/s)

由奈式准则得出结论:

1.在任何信道中,码元的传输速率是有上限的。若超过此上限则会出现严重的码间串扰。

2.信道的频带越宽(即通过的信号高频分量越多),就可用更高的速率进行码元的有效传输。

3.奈式准则只给出了码元传输速率的限制,但并未对信息传输速率给出限制。

因受奈式准则的制约,所以要提高数据传输率,就必须设法使每个码元携带更多比特的信息量,此时就需要采用多元制的调制方法。

2.4.2 香农定理

香农定理给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率,当用此速率进行传输时,可以做到不产生误差。信道的极限数据传输速率 = Wlog2(1 + S/N) 单位b/s,式中W为信道的带宽,S为信道所传输信号的平均功率,N为信道内部的高斯噪声功率。S/N为信噪比(信号的平均功率与噪声的平均功率之比)

由香农定理得出结论:

1.信道的带宽或信道中的信噪比越大,信息的极限传输速率越高

2.对一定的传输带宽和一定的信噪比,信息传输速率的上限时确定的

3.只要信息传输速率低于信道的极限传输速率,实际信道能达到的传输速率要比它低不少

一个码元对应的二进制位数是有限的

2.5 编码与调制

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

2.5.1 数字数据编码为数字信号

1.归零编码(RZ):高电平代表1、低电平代表0(或相反),每个时钟周期的中间均跳变到低电平(归零),接收方根据该跳变调整本方时间基准。为双方提供了自同步进制。由于归零占用部分带宽,所以传输速率受到了一定影响。

2.非归零编码(NRZ):一个周期全部用来传输数据,想要高速同步数据,则需要都带有时钟线。

3.反向非归零编码(NRZI):用信号的翻转代表0、不变代表1。翻转信号本身作为通知机制,既能传输时钟信号,又能尽量不损失带宽。USB2.0就是这个编码。

4.曼彻斯特编码(Manchester Encoding)将一个码元分为两个相等的间隔,前一个间隔为高电平而后一个为低电平表示1,0反之。位中间的跳变既作为时钟信号(可用于同步),又作为数据信号,但占的频带宽度是原始基带宽度的两倍。以太网就是该编码。

5.差分曼彻斯特编码。常用于局域网传输。若码元为1,则前半个码元的电平与上一个码元的后半个码元的电平相同。0反之。特点是可以实现自同步且抗干扰性较好。

6.4B/5B编码。将欲发送的数据流的每4位作为一组,按照编码规则将其转换为对应的5位码。

2.5.2 数字数据调制为模拟信号

1.幅移键控(ASK)。通过改变载波信号的振幅来表示数字信号1和0,而载波的频率和相位都不改变。容易实现,抗干扰能力差。

2.频移键控(FSK)。通过改变载波信号的频率来表示数字信号1和0,而载波的振幅和相位都不改变。容易实现,抗干扰能力强,应用较广泛。

3.相移键控(PSK)。通过改变载波信号的相位来表示数字信号1和0,而载波的振幅和频率都不改变。又分为绝对调相和相对调相。

4.正交振幅调制(QAM)。在频率相同的前提下,将ASK与PSK结合起来,形成叠加信号。设波特率为B,采用m个相位,每个相位有n种振幅,则传输速率为R = Blog2(mn) 单位b/s

2.5.3 模拟数据编码为数字信号

这种编码方式最典型的例子是常用于对音频信号进行编码和脉码调制(PCM),主要包括采样、量化、编码。

采样定理(奈奎斯特定理),在通信领域是指信号最高频率和最低频率之差。假设原始信号中的最大频率为f,那么采样频率为f(采样)必须大于等于最大频率f的两倍,才能保证采样后的数据信号完整保留原始模拟信号的信息。

1.采样是指对模拟信号进行周期性扫描,把时间上练习的信号变成时间上离散的信号。

2.量化是把采样取得的电平幅值按照一定的分级标度转化为对应的数字值并去取整数,这样就是把连续的电平幅值转换位了离散的数字量。采样和量化的实质就是分割和转换。

3.编码是把量化的结果转换为与之对应的二进制编码。

2.5.4 模拟数据调制为模拟信号

电话机和本地局交换机采用模拟信号传输模拟信号的编码方式

2.6 电路交换、报文交换、分组交换

2.6.1 电路交换

电路交换在进行数据传输前,两个结点之间必须先建立一条专用(双方独占)的物理通信路径,直到通信结束后才释放。分为连接建立、数据传输、连接释放三个阶段。

从通信资源的分配角度来看,“交换”就是按照某种方式动态的分配传输线路的资源。电路交换的关键点是,在数据传输过程中,用户始终占用端到端的固定传输带宽。

优点是:通信时延小、有序传输、没有冲突、适用范围广、实时性强、控制简单。

缺点是:建立连接时间长、线路独占、灵活性差、难以规格化。

电路建立后,除源结点和目的结点外,电路上的任何结点都采取“直通方式”接受数据和发送数据,即不会存在存储转发所耗费的时间。

2.6.2 报文交换

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

优点是:无须建立连接、动态分配路线、提高线路可靠性、提高线路利用率、提供多目标服务。

缺点是:有转发时延、要求网络结点有较大的缓存空间

2.6.3 分组交换

分组交换限制了每次传送的数据块大小的上限,把大的数据块划分为合理的小数据块,再加上一些必要的控制信息,构成分组(Packet)。

优点是:无建立时延、线路利用率高、简化了存储管理、加速传输、减少了出错概率和重发数据量

缺点是:存在时延、需传输额外信息、采用数据报时可能会失序、丢失或重复分组

要传送的数据量很大且其传送时间远大于呼叫时间时,采用电路交换较为合适;

端到端的通路由多段链路组成时,采用分组交换更为合适;

从提高整个网络的信道利用率上看,报文交换和分组交换优于电路交换。

2.7 数据报与虚电路

分组交换根据其通信子网向端点系统提供的网络层服务,还可进一步分为面向连接的虚电路方式和无电路的数据报方式

2.7.1 数据报

在端系统中实现的高层协议先把报文拆分成若干带有序号的数据单元,并在网络层加上地址等控制信息后形成数据报分组(网络层的PDU)。中间结点存储分组很短一段时间,找到最佳路由后,尽快转发每个分组。不同的分组可以走不同的路径,也可以按不同的顺序到达目的结点。

2.7.2 虚电路

分组发送前,要求发送方和接收方建立一条逻辑上相连的虚电路,并且一旦连接就固定了虚电路所对应的物理路径,分为三个阶段:虚电路建立、数据传输和虚电路释放

在传送数据时,每个数据分组不仅要有分组号、校验和等控制信息还要有它要通过的虚电路信号,以区别于其它虚电路上的分组。

数据报服务虚电路服务
连接的建立不需要必须有
目的地址每个分组都有完整的目的地地址仅在建立连接阶段使用,之后每个分组使用长度较短的虚电路号
路由选择每个分组独立地进行路由选择和转发属于同一条虚电路的分组按照同一路由转发
分组顺序不保证分组的有序到达保证分组的有序到达
可靠性不保证可靠通信,可靠性由用户主机来保证可靠性由网络保证
网络故障的适应性出故障的结点丢失分组,其他分组路径选择发生变化时可以正常运输所有经过故障结点的虚电路均不能正常工作
差错处理和流量控制由用户主机进行流量控制,不保证数据报的可靠性可由分组交换网负责,也可由用户主机负责

2.8 双绞线、同轴电缆、光纤、无线传输介质

传输介质也称传输媒介,它是数据传输系统中发送设备和接受设备之间的物理通路。导向传输介质中,电磁波沿着固体媒介传播,而非导向传输介质可以是空气、真空、水等。

双绞线由两根并排绞合、相互绝缘的铜导线组成,减少对相邻导线的电磁干扰。价格便宜,广泛用于局域网和传统电话网中。其带宽取决于铜线的粗细和传输的距离。远距离时,模拟传输用放大器放大衰减的信号,数字传输用中继器将失真的信号整形。

50欧同轴电缆主要用于传送基带数字信号,又称基带同轴电缆,它在局域网中应用广泛。75欧同轴电缆主要用于传送宽带信号,又称宽带同轴电缆,主要用于有线电视系统。具有良好的抗干扰特性,被广泛用于传输较高速率的数据,传输距离更远,但比双绞线贵。

光纤利用光导纤维传递光脉冲来进行通信。多模光纤只适合于近距离传输,传输损耗小,抗雷电和电磁干扰性好,无串音干扰,保密性好,体积小质量轻。

2.8 物理层接口特性

1.机械特性。指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等

2.电气特性。指明在接口电缆的各条线上出现的电压的范围

3.功能特性。指明某条线上出现的某一电平的电压表示何种意义

4.过程特性(规程特性)。指明对于不同功能的各种可能时间的出现顺序。

2.9 中继器、集线器

中继器的主要功能是将信号整形并放大再转发出去,以消除信号经过一长段电缆后产生的失真和衰减,使信号的波形和强度达到所需要的要求,进而扩大网络传输的距离。其原理是信号的再生。是用来扩大网络规模的最简单廉价的互联设备。

中继器连接的几个网段仍是一个局域网,不能连接不同速率的局域网。

要某个网络设备能连接两个不同协议,则要有存储转发功能。

5-4-3规则:在采用粗同轴电缆的10BASE5以太网规范中,互相串联的中继器个数不能超过4个,而且用4个中继器串联的5段通信介质中只有3段可以挂接计算机,其余两段只能用作扩展通信范围的链路段,不能挂接计算机。

集线器实质上是一个多端口的中继器,它在网络中只起信号放大和转发的功能,目的是扩大网络的传输范围,而不具备信号的定向传送能力,是一个标准的共享式设备,主要使用双绞线组建共享网络,是从服务器连接到桌面最经济的方案。所有集线器端口都属于一个冲突域。

三.数据链路层

3.1 为网络层提供服务、链路管理

1.无确认的无连接服务。源机器发送数据帧时不需先建立链路连接,目的机器收到数据帧时不需发回确认。适用于实时通信或误码率较低的通信信道,如以太网。

2.有确认的无连接服务。源机器发送数据帧时不需先建立链路连接,目的机器收到数据帧时必须发回确认。适用于误码率较高的通信信道,如无线通信。

3.有确认的面向连接服务。帧传输分为建立数据链路、传输帧、释放数据链路三个阶段,目的机器必须发回确认。适用于通信要求(可靠性、实时性)较高的场合。

有连接就一定要有确认

数据链路层连接的建立、维持和释放过程称为链路管理,主要用于面向连接的服务。

3.2 组帧

两台主机之间传输信息时,必须将网络层的分组封装成帧,以帧的格式进行传送。将一段数据的前后分别添加首部和尾部,就构成了帧。因此帧长等于数据部分的长度加上首部和尾部的长度。

首部和尾部的一个重要作用就是确定帧的界限,即帧定界。

帧同步指的是接收方应能从接收到的二进制比特流中区分出帧的起始与终止。

如果再数据中恰好出现与帧定界符相同的比特组合,那么就要采取有效的措施解决该问题,即透明传输。

为了使接收方能正确的接受并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。组帧主要解决帧定界、帧同步、透明传输问题。

组帧时既要加首部也要加尾部,分组仅是包含在帧中的数据部分,所以不需要加尾部来定界。

1.字符计数法是指在帧头部使用一个计数字段来标明帧内字符数。这种方法的最大问题在于如果计数字段出错,就将失去同步。

2.字符填充法使用特定字符来定界一帧的开始与结束

3.零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。它使用01111110这个特殊的比特模式来标志一帧的开始与结束。为了不使信息位中出现的比特流01111110被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到5个连续的1时将自动在后面插入一个0。而接收方做逆操作。零比特填充法很容易由硬件实现,性能优于字符填充法。

4.违规编码法借由违规的编码来定界帧的起始与终止。局域网IEEE802就是此种方法。该方法不需要采用任何填充技术便能实现数据传输的透明性,但只适合采用冗余编码的特殊编码环境。

3.3 差错控制

比特差错是指比特在传输过程中可能产生差错,1可能变成0,0可能变成1.

用以使发送方确定接收方是否正确收到由其发送的数据的方法称为差错控制

自动重传请求(ARQ): 接收端检测到差错时,就设法通知发送端重传,直到接收到正确的码字为止

前向纠错(FEC):接收端不仅能发现差错还能确定错误位置进行纠正

位错指帧中某些位出现了差错。通常用循环冗余校验(CRC)发现位错,通过自动重发请求(ARQ)重传出错帧。

帧错指帧的丢失、重复或失序等错误

3.3.1检错编码

这里的检错与下面的纠错编码具体的请去看计算机组成原理相关部分,这里就不做详细阐述

1.奇偶校验码

奇校验码在附加一位校验元后,码长为n的码字中1的个数为奇数个。偶校验码反之。智能检测奇数位的出错情况,并不知道哪些位错了。

2.循环冗余码

循环冗余码(CRC)又称多项式码,任何一个由二进制数位串组成的代码都可以与一个只含有0和1两个系数的多项式建立一一对应关系。

给定一个m bit的帧或报文,发送器生成一个r bit的序列,称为帧检验序列(FCS)。这样所形成的帧将由m + r比特组成。发送方和接收方事先商定一个多项式G(x)(最高低位必须为1),使这个带检验码的帧刚好能被预先确定的多项式G(x)整除。接收方用相同的多项式去除收到的帧,如果无余数,那么无差错

步骤:

  • 加0.假设G(x)的阶为r,在帧的低位端加上r个0
  • 模2除。利用模2除法,用G(x)对应的数据串除去上一步中计算出的数据串,得到的余数即冗余码

CRC具有纠错功能,但在数据链路层仅使用了其检错功能

3.3.2纠错编码

海明码在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。

  • 确定海明码位数
  • 确定校验位分布
  • 分组以形成校验关系
  • 校验位取值
  • 海明码的校验原理

3.4流量控制、可靠传输、滑动窗口

流量控制实际上就是限制发送方的数据流量,使其发送速率不超过接收方的接受能力。

停止-等待流量控制基本原理:发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧。

滑动窗口流量控制基本原理:在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口,用来对发送方进行流量控制,而发送窗口的大小代表在还未接收到对方确认消息的情况下发送方最多还可以发送多少个数据帧。同时接受方维持接受窗口,控制可以接受哪些数据帧。

在后退N帧式ARQ中,发送方无须在收到上一帧的ACK后才能开始发送下一帧,而是可以连续的发送帧,当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后所有未被确认的帧若采用n比特对帧编号,则其发送窗口的尺寸应满足1<=WT<=2^n-1.若发送窗口尺寸大于最大值则会造成接收方无法分别旧帧和新帧。若信道的传输质量很差导致误码率较大时,后退N帧协议不一定优于停止-等待协议

选择重传协议SR设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便先收下发送序号不连续但仍在接受窗口的那些数据帧。其接受窗口与发送窗口的大小相同,且最大值都为序号范围的一半,若采用n比特对帧编号,则需要满足:WTmax=Wmax=2^(n-1)

数据链路层的可靠传输通常使用确认和超时重传两种机制来完成。确认是一种无数据的控制帧,有些情况下将确认捎带在一个回复帧中,称为捎带确认。超时重传是指发送方在发送某个数据帧后就开始计时,超时就重发直到成功为止。

滑动窗口的特性:

1.只有接受窗口向滑动时,发送窗口才有可能向前滑动。

发送窗口大小接收窗口大小
停止-等待协议11
后退N帧协议(GBN)>11
选择重传协议(SR)>1>1

3.接受窗口大小为1时可保证帧的有序传输

4.数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的。

3.5 介质访问控制

介质访问控制所要完成的任务是,为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,以协调活动结点的传输。用来决定广播信道中信道分配的协议属于数据链路层的一个子层,称为介质访问控制(Medium Access Control,MAC)子层。

3.5.1 信道划分介质访问控制

信道划分介质访问控制将使用介质的每个设备与来自同一通信信道上的其他设备的通信隔离开来,把时域和频域资源合理地分配给网络上的设备。其实质就是通过分频、分时、分码等方法把原来的一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道转变为点到点信道。

多路复用技术:当传输介质的带宽超过传输单个信号所需的带宽时,人们就通过在一条介质上同时携带多个传输信号的方法来提高传输系统的利用率。

频分多路复用(FDM)是一种将多路基带信号调制到不同频率的载波上,再叠加形成一个复合信号的多路复用技术。实际应用中为防止子信道之间的干扰,相邻信道之间需加入保护频带。优点是充分利用了传输介质的带宽,系统效率较高,技术成熟易实现。

时分多路复用(TDM)是将一条物理信道按时间分成若干时间片,轮流的分配给多个信号使用。但由于计算机数据的突发性,一个用户对已经分配到的信道利用率一般不高。统计时分多路复用(STDM,异步时分复用)采用STDM帧,STDM帧并不固定分配时隙,而按需动态的分配时隙,当终端有数据要传送时,才会分配到时间片,因此可以提高线路的利用率。

波分多路复用(WDM)即光的频分多路复用,它在一根光纤中传输多种不同波长的光信号,最后用波长分解复用器将各路波长分解出来。

码分多路复用(CDM)采用不同的编码来区分各路原始信号的一种复用方式。既共享信道的频率又共享时间。码分多址(Code Division Multiple Access,CDMA)原理是每个比特时间再划分成m个短的时间槽,称为码片(Chip),通常m的取值是64或128.每个站点被指派一个唯一的m位码片序列。发送1时站点发送它的码片序列,0时发送序列反码。当两个或多个站点同时发送时,各路数据在信道中线性相加,要求各序列相互正交以便分离信号。令向量S表示A站的码片向量,令T表示B站的码片向量。两个不同站的码片序列正交,即向量S和T的规格化内积(Inner Product)为0: S ⋅ T = 1 m ∑ i = 1 m S i T i = 0 S·T = \frac{1}{m}\sum^{m}_{i=1}S_iT_i = 0 ST=m1i=1mSiTi=0。任何一个码片向量和该码片向量自身的规格化内积都是1,任何一个码片向量和该码片反码的向量的规格化内积是-1,如 S ⋅ S = 1 m ∑ i = 1 m S i S i = 1 S·S = \frac{1}{m}\sum^{m}_{i=1}S_iS_i=1 SS=m1i=1mSiSi=1。码分多路复用技术具有频谱利用率高、抗干扰性强、保密能力强、语音质量好,减少投资运营成本,主用于无线通信系统,特别是移动通信系统。

3.5.2 随机访问介质访问控制

在随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户能根据自己的意愿随机的放松信息,占用信道全部速率。为了解决随机接入发生的碰撞,每个用户需要按照一定的规则反复地重传它的帧,直到该帧无碰撞地通过。核心思想是:胜利者通过征用获取信道,从而获得信息的发送权。因此该协议又称争用型协议。

纯ALOHA协议基本思想是,当网络中任何一个站点需要发送数据时,可以不进行任何检测就发送数据。如果再一段时间内未收到确认,就认为发生冲突,就过一会重发数据直到成功。

时隙ALOHA协议把所有各站在时间上同步起来,并将时间划分为一段等长的时隙(Slot),规定只能在每个时隙开始时才能发送一个帧。从而避免了用户发数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率。

载波侦听多路访问(Carrier Sense Multiple Access,CSMA)的思想是若每个站点在发送前都先侦听一下共用信道,发现信道空闲再发送,则会大大降低冲突的可能性,从而提高信道的利用率。

信道状态1-坚持非坚持p-坚持
空闲立即发送数据立即发送数据以概率p发送数据,以概率1-p推迟到下一时隙
继续坚持侦听放弃侦听,等待一个随机的时间后再侦听持续侦听,直至信道空闲

载波侦听多路访问/碰撞检测(CSMA/CD)协议是改进方案,适用于总线形或半双工网络环境。可简单概括为"先听后发,边听边发,冲突停发,随机重发",其协议的以太网只能进行半双工通信。CSMA/CD总线网中的所有数据帧都必须要大于一个最小帧长。任何站点收到帧长小于最小帧长的帧时,就把它当做无效帧立即丢弃。计算公式为最小帧长 = 总线传播时延 X 数据传输速率 X 2。使用截断二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大(动态退避),能降低发生碰撞的概率,有利于整个系统的稳定。

CSMA/CA把碰撞检测改成了碰撞避免,规定所有的站完成发送后,必须再等待一段很短的时间才能发送下一帧,这段时间称为帧间间隔(IFS),当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时才不适用退避算法。

为了解决隐蔽站问题,源站要发送数据帧之前先广播一个很短的请求发送RTS(Request To Send)控制帧,包括源地址、目的地址和这次通信的持续时间。若信道空闲则AP广播一个允许发送CTS(Clear To Send)控制帧,包括所需时间。其他站点听到后这段时间将抑制发送。但是当数据帧长度超过某一数值时使用RTS和CTS才比较有利

3.5.3 轮询介质控制访问

在轮询访问中,用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配。典型的轮询访问介质控制协议是令牌传递协议,主要应用于令牌环局域网中。令牌是一个特殊的MAC控制帧,本身并不包含信息,仅控制信道的使用,确保同一时刻只有一个站点独占信道。轮询介质控制访问非常适合负载很高的广播信道。

3.6 局域网

局域网(Local Area Network, LAN)是指在一个较小的地理范围内,将各种计算机、外部设备和数据库系统等通过双绞线、同轴电缆等连接介质互相连接起来,组成资源和信息共享的计算机互联网络。

特点:

1.为一个单位所有,且地理范围和站点数目均有限。

2.所有站点共享较高的总宽带

3.较低的时延和较低的误码率

4.各站为平等关系而非主从关系

5.能进行广播和组播

三种特殊的局域网拓扑实现:

1.以太网。逻辑拓扑是总线形,物理拓扑是星形或拓展星形。

2.令牌环。逻辑拓扑是环形结构,物理拓扑是星形结构。

3.FDDI。逻辑拓扑是环形结构,物理拓扑是双环结构。

IEEE 802.3标准是一种基带总线型的局域网标准,它描述物理层和数据链路层的MAC子层的实现方法。

参数10BASE510BASE210BASE-T10BASE-FL
传输媒体基带同轴电缆(粗缆)基带同轴电缆(细缆)非屏蔽双绞线光纤对
编码曼彻斯特编码曼彻斯特编码曼彻斯特编码曼彻斯特编码
拓扑结构总线形总线形星形点对点
最大段长500m185m100m2000m
最多结点数目1003022

10BASE-T非屏蔽双绞线以太网拓扑结构为星形网,星形网中心为集线器,但使用集线器的以太网在逻辑上仍然是一个总线形网,属于一个冲突域。

每块网卡中的MAC地址也称物理地址,MAC地址长6字节。MAC帧不需要帧结束符,因为以太网在传送帧时,各帧之间必须有一定的间隙。

速率达到或超过100Mb/s的以太网称为高速以太网

100BASE-T以太网是在双绞线上传输100Mb/s基带信号的星形拓扑结构以太网。使用CSMA/CD协议。既支持全双工又支持半双工。

吉比特以太网又称千兆以太网,允许在1Gb/s速率下用全双工和半双工两种方式工作。

10吉比特以太网与10Mb/s、100Mb/s、1Gb/s以太网的帧格式完全相同,只工作在全双工环境。

虚拟局域网可以把一个较大的局域网分割成一些较小的与地理位置无关的逻辑上的VLAN,每个VLAN是一个较小的广播域,VLAN只是局域网提供给用户的一个服务,并不是一种新型局域网

3.7 广域网

广域网值覆盖范围很广的长距离网络,是因特网的核心部分。

广域网局域网
覆盖范围很广,通常跨区域较小,通常在一个区域内
连接方式结点之间都是点到点连接,但为了提高网络的可靠性,一个结点交换机往往与多个结点交换机相连普遍采用多点接入技术
OSI参考模型层次物理层、数据链路层、网络层物理层、数据链路层
联系和相似点1.广域网和局域网都是互联网的重要组成构件,从互联网角度上看二者平等2.连接到一个广域网或一个局域网上的主机在该网内进行通信时,只需要使用其网路的物理地址
着重点强调资源共享强调数据传输

PPP(Point-to-Point)是使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上。设计的目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。它提供差错检测但不提供纠错功能,仅支持点对点的链路通信,仅支持全双工,两端可以运行不同的网络层协议,是面向字节的,异步线路用字节填充法,同步线路用比特填充。

3.8 局域网交换机

局域网交换机又称以太网交换机,本质上是一个多端口的网桥。原理是检测从以太端口来的数据帧的源和目的地的MAC(介质访问层)地址,然后与系统内部的动态查找表进行比较,若数据帧的源MAC地址不在查找表中,则将该地址加入查找表,并将数据帧发送给相应的目的端口。

四.网络层

4.1 网络层的功能

互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。采取这种思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。

网络互联是指将两个以上的计算机网络,通过一定的方法,用一些中间设备(中继系统)相互连接起来,以构成更大的网络系统。根据所在层次,中继系统分为以下4种:

1.物理层:转发器,集线器

2.数据链路层:网桥或交换机

3.网络层:路由器

4.网络层以上:网关

使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看仍然是同一个网络,一般不成为网络互联,因此网络互联通常是指用路由器进行网络互联和路由选择

虚拟互联网络也就是逻辑互联网络,其意思是互联起来的各种物理网络的异构性本来就是客观存在的,但是通过IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP协议的虚拟互联网络可简称为IP网络。使用IP网络的好处是:当互联网上的主机进行通信时,就好像在一个单个网络上通信一样,而看不见互联的各网络的具体异构细节。

路由器主要完成两个功能:一个是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时采取的动作)。路由选择指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态的改变所选择的路由。分组转发指路由器根据转发表将用户IP数据报从合适的端口转发出去。

网络层可以抽象的划分为数据层面和控制层面,转发是数据层面实现的功能,路由选择是控制层面实现的功能。软件定义网络(SDN)采用集中式的控制层面和分布式的数据层面,两个层面相互分离,控制层面利用控制-数据接口对数据层面上的路由器进行集中式控制,方便软件来控制网络。优点是:全局集中式控制和分布式高速转发既利于控制层面的全局优化,又利于高性能的网络转发,灵活可编程与性能的平衡,降低成本。问题:集中管理易受攻击,如果崩溃整个网络都会受影响,随着网络规模扩大,控制器可能成为网络性能的瓶颈。

4.2 路由算法

静态路由算法(非自适应路由算法)。指由网络管理员手工配置的路由信息。特点是简便和开销小,在拓扑变化不大的小网络运行效果很好。

动态路由算法(又称自适应路由算法)。指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果。能改善网络的性能并有助于流量控制,但是算法复杂,会增加网络的负担,有时因对动态变化的反应太快而引起震荡,或因反应太慢而影响网络路由的一致性。

距离-向量路由算法,所有结点都定期的将它们的整个路由选择表传送给所有与之直接相邻的结点。选择表包含每条路径的目的地和路径的代价。该算法中,所有结点都必须参与距离向量交换,以保证路由的有效性和一致性,并在被通告一条新的路由或发来的路由信息中有代价更小的情况下更新路由选择表。其实质是迭代计算每一条路由中的站段数或延迟时间,从而得到到达一个目标的最短通路。更新报文的大小与通信子网的结点个数成正比,大的通信子网将导致很大的更新报文。最常见的距离-向量路由算法是RIP算法,采用调数作为距离的度量。

链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息,主动测试所有邻接点的状态并定期将链路状态传播给其他结点。典型的链路状态算法是OSPF算法。一旦链路状态发生变化,就会用Dijkstra最短路算法重新计算路由。当链路状态发生改变时,向本自治系统中所有路由器用泛洪法发送与路由器相邻的所有路由器的链路状态信息。链路状态路由算法可以用于大型或路由交换信息变化聚敛的互联网环境。优点是每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间结点的计算。链路状态报文不加改变的传播,利于查找故障,其大小与网络中的路由大小数目无关具有更好规模可伸缩性。

4.3 层次路由

因特网将整个互联网划分为许多较小的自治系统,一个自治系统内部所使用的的路由选择协议称为内部网关协议(IGP),也称为域内路由选择,具体的协议有RIP和OSPF等。自治系统之间所使用的路由选择协议称为外部网关协议(EGP),也称为域间路由选择,用在不同的自治系统的路由器之间交换路由信息,并负责为分组在不用自治系统之间选择最优路径,具体协议有BGP。

4.4 IPv4

一个IP分组由首部和数据部分组成。首部前一部分的长度固定,共20B,是所有IP分组中必须有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。IP首部部分重要字段有:版本、首部长度(4位)、总长度(16位,不能超过下面数据链路层的MTU值)、标识(16位,当一个数据报长度超过MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报)、标志(3位,标志字段最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间一位是DF,只有当DF=0时才允许分片)、片偏移(13位,指出在较长的分组分片后,某片在原分组中的相对位置)、生存时间TTL(8位,数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,确保分组不会在网络中永远循环)、协议(8位,指出此分组携带的数据使用何种协议,即分组的数据部分应上交给哪个协议进行处理)、首部校验和(16位,只校验分组的首部)、源地址字段(4B)、目的地址字段(4B)。

首部长度、总长度、片偏移的基本单位分别为4B、1B、8B

连接到因特网上的每台主机(或路由器)都分配一个32比特的全球唯一标识符,即IP地址。IP地址由互联网名字和数字地址分配机构ICANN进行分配。

特殊IP地址:

  • 主机号全为0表示网络本身
  • 主机号全为1表示本网络的广播地址,又称直接广播地址
  • 127.x.x.x保留为环回自检(Loopback Test)地址,此地址表示任意主机本身
  • 32位全为0表示本网络上的本主机
  • 32位全为1表示整个TCP/IP网络的广播地址,又称受限广播地址,实际使用时,由于路由器对广播域的隔离,等效为本网络的广播地址

常用IP地址使用范围表

网络类别最大可用网络数第一个可用的网络号最后一个可用的网络号每个网络中的最大主机数
A2^7-211262^24-2
B2^14128.0191.2552^16-2
C2^21192.0.0223.255.2552^8-2

每个IP地址都由网络号和主机号组成,是一种分等级的地址结构。好处是方便了IP地址的管理和减小了路由表所占的存储空间。IP地址是标志一台主机或路由器和一条链路的接口。用转发器或桥接器(网桥)连接的若干LAN仍然是同一个网络。所有IP号都是平等的。

网络地址转换(NAT)是指通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址。

采用私有IP地址的互联网络称为专用互联网或本地互联网,私有IP地址也称可重用地址。

使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表进行本地IP地址和全球IP地址的转换。通过这种映射方式可以让多个私有IP映射到一个全球IP地址。

4.5 子网划分、子网掩码、CIDR

两级IP地址的缺点:IP地址空间的利用率有时很低,给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏,不够灵活。

在IP地址中又增加了一个“子网号字段”,使二级IP地址变成了三级IP地址,称为子网划分。基本思路为:子网划分纯属一个单位内部的事情,从主机号借用若干比特作为子网号、凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。

子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位与,就可得出相应子网的网络地址。

无分类域间路由选择CIDR是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址划分方法。使用网络前缀的概念代替子网络的概念,区别是位数不固定,记法是网络前缀+主机号。还使用斜线记法,即IP地址/网络前缀所占比特数,其中网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分。CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的组织,仍可以在本组织内根据需要划分出一些子网。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的 路由,有利于减少路由器之间的信息的交换,从而提高网络性能。CIDR的优点在于网络前缀长度的灵活性。

最长前缀匹配(最佳匹配):使用CIDR时,路由表中的每一个项目由网络前缀和下一跳地址组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由越具体。

CIDR查找路由的方法:为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找。其中最常用的就是线索二叉树。

路由器进行分组转发算法:

  • 从收到的IP分组的首部提取目的主机的IP地址D(即目的地址)
  • 若查找到特定主机路由(目的地址为D),就按照这条路由的下一条转发分组;否则从转发表中的下一条(即按前缀长度的顺序)开始检查,执行下一步
  • 将这一行的子网掩码与目的地址D进行按位与运算。若运算结果与本行的前缀匹配,则查找结束,按照“下一跳”指出的进行处理。否则,若转发表还有下一行,则对下一行进行检查重复本步骤,否则执行下一步骤。
  • 若转发表中有一个默认路由,则把分组传送给默认路由;否则,报告转发分组出错。

得到下一跳路由器的IP地址后,并不是直接将该地址填入待发送的数据报,而是将该IP地址转换成MAC地址(通过ARP),将此MAC地址放到MAC帧首部中,最后根据这个MAC地址找到下一跳路由。

4.6 ARP、DHCP、ICMP

地址解析协议(Address Resolution Protocol,ARP)用来完成IP地址到MAC地址的映射,工作在网络层。每台主机都有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护此ARP表。

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配IP地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。工作在应用层,基于UDP协议。工作原理是使用客户/服务器模式。需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这是该主机就成为DHCP客户。DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP,称之为租用期。

为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol, ICMP)来让主机或路由器报告差错和异常情况。ICMP差错报告报文用于目标主机或目标主机路径上的路由器向源主机报告差错和异常情况。类型有:终端不可达、源点控制、时间超过、参数问题、重定向。

PING工作在应用层,直接使用网络层的ICMP。Traceroute/Tracert工作在网络层。

4.7 IPv6

IPv6的主要特点:更大的地址空间、扩展的地址层次结构、灵活的首部格式、改进的选项、允许协议继续扩充、支持即插即用、支持资源的预分配、只有在包的源结点才能分片,是端到端的、首部长度必须是8B的整数倍、增大了安全性。

IPv6地址支持单播、广播、任播。把地址中的每4位用一个十六进制数表示,并用冒号分割每16位。当有相继的0值域时,可以用::缩写。

IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略。

4.8 自治系统

自治系统(Autonomous System,AS):单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由。一个自治系统内的所有网络都由一个行政单位管辖,一个自治系统的所有路由器在本自系统内部必须是连通的。

自治系统内部的路由选择称为域内路由选择,自治系统之间的路由选择称为域间路由选择。内部网关协议(Interioir Gateway Protocol,IGP)即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如RIP和OSPF。外部网关协议(External Gateway Protocol,EGP)用来将路由选择信息传递到另一个自治系统中。使用得最多的是BGP-4。

4.9 路由信息协议(RIP)

路由信息协议(Routing Information Protocol,RIP)是一种分布式的基于距离向量的路由选择协议,优点是简单、开销小、收敛快,缺点是限制了网络的规模、网络规模越大开销越大、网络故障时会慢收敛。

规定:

1.网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(距离向量)

2.距离也称跳数(Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1.而每经过一个路由器,距离加一。

3.RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径

4.RIP允许一条路径最多只能包含15个路由器,因此距离等于16时,表示网络不可达。可见RIP只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上,减少网络拥塞的可能性。

5.RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)

6.在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。但更新的RIP2中,支持变长子网掩码和CIDR。

特点:仅和相邻路由器交换信息,路由器交换的信息时当前路由器所知道的全部信息,即自己的路由表,按固定的时间间隔交换路由信息,如每隔30秒。

RIP通过距离向量算法完成路由表的更新,每个路由表项目都有三个关键数据:<目的网络N,距离d,下一跳路由器地址X>,对于每个相邻路由器发送过来的RIP报文,执行如下步骤:

1.对地址X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把下一跳字段中的地址都改为X,并把所有距离字段的值加一。

2.对修改后的RIP报文中的每个项目:

  • 当原来的路由表中没有目的网络N时,把该项目添加到路由表中
  • 当原来的路由表中有目的网络N,且下一跳路由器的地址X时,用收到的项目替换原路由表中的项目
  • 当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目,否则什么都不做

3.如果180秒还没有收到相邻路由器的更新路由表,那么把此相邻路由器标记为不可达路由器。

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

开放最短路径优先(OSPF)协议是使用分布式链路状态路由算法的典型代表,也是内部网关协议(IGP)的一种。为使OSPF能够用于规模很大的 网络,OSPF将一个自治系统再划分为若干更小的范围,称为区域。划分区域的好处,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。有问候分组、数据库描述分组、链路状态请求分组、链路状态更新分组、链路状态确定分组。在网络运行过程中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。

4.11 边界网关协议(BGP)

边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。力求寻找一条能够到达目的网络且比较好的路由,而并非寻找一条最佳路由。BGP采用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP是应用层协议,基于TCP。工作原理是每个自治系统的管理员要选择至少一个路由器作为该自治系统的BGP发言人。一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息。当有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的较好路由。BGP-4使用四种报文:打开报文、更新报文、保活报文、通知报文

协议RIPOSPFBGP
类型内部内部外部
路由算法距离-向量链路状态路径-向量
传递协议UDPIPTCP
路径选择跳数最少代价最低较好,非最佳
交换结点和本结点相邻的路由器网络中的所有路由器和本结点相邻的路由器
交换内容当前本路由器知道的全部信息,即自己路由表与本路由器相邻的所有路由器的链路状态首次-整个路由表,非首次-有变化的部分

4.12 网络层设备

冲突域是指连接到同一物理介质上的所有结点的集合,这些结点之间存在介质争用的现象

广播域是指接受同样广播消息的结点集合

路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络并完成路由转发。从结构上看,路由器由路由选择和分组转发构成。从模型上,是网络层设备,实现了网络模型的下三层:物理层、数据链路层、网络层。

五.传输层

5.1 传输层功能

传输层提供应用进程之间的逻辑通信(即端到端通信),以及复用和分用,还要对收到的报文进行差错检测,提供两种不同的传输协议。复用是指发送方不同的应用进程都可使用同一传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。

端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。应用进程通过端口号进行标识,端口号长度为16bit,能够表示2^16个不同的端口号。端口号拼接到IP地址即构成套接字Socket,即套接字Socket = (IP地址:端口号)

数据链路层的SAP是MAC地址,网络层的SAP是IP地址,传输层的SAP是端口

面向连接服务就是在通信双方进行通信前,必须先建立连接,在通信过程中,整个连接的情况一直被实时地监控和管理。通信结束后,应该释放这个连接。无连接服务是指两个实体之间的通信不需要先建好连接,需要通信时,直接将信息发送到网络中,让该信息的传递在网上尽力而为的往目的地传送。

5.2 UDP

UDP(User Datagram Protocol,用户数据报协议)是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用分用以及差错检测

UDP的优点为无须建立连接,不会引入建立连接的时延,无连接状态,分组首部开销更小,应用层能更好地控制要发送的数据和发送时间,支持一对一、一对多、多对一和多对多的交互通信。常用于一次性传输较少数据的网络应用。

UDP数据报包含两部分:UDP首部和用户数据。UDP首部有8B。由4个字段组成。每个字段的长度都是2B。包含源端口、目的端口、长度、校验和。

UDPServer.py

from socket import *

serverPort = 12000  # 指定端口
serverSocket = socket(AF_INET, SOCK_DGRAM)  # 创建套接字
serverSocket.bind(('', serverPort))
print("The server is ready to receive")
while True:
    message, clientAddress = serverSocket.recvfrom(2048)
    modifiedMessage = message.decode().upper()
    serverSocket.sendto(modifiedMessage.encode(), clientAddress)

UDPClient.py

from socket import *  # 导入socket模块

serverName = 'localhost'  # 指定主机名
serverPort = 12000  # 指定端口
clientSocket = socket(AF_INET, SOCK_DGRAM)  # 创建客户的套接字
message = input('Input lowercase sentense:')  # 输入信息
clientSocket.sendto(message.encode(), (serverName, serverPort))  # 发送给服务器
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)  # 接受服务器发来的信息
print(modifiedMessage.decode())  # 打印
clientSocket.close()  # 关闭

5.3 TCP

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,不提供广播或组播服务。正常情况下, tcp需要经过三次握手建立连接, 四次挥手断开连接.但是服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。

每个请求/响应对如果是经一个单独的TCP连接发送,则称为非持续连接。如果是所有的请求及响应经相同的TCP连接发送则称为持续连接

TCP的字段包含源端口和目的端口、序号、确认号、数据偏移、保留、紧急位URG、确认位ACK、推送位PSH(push)、复位位RST(Reset)、同部位SYN、终止位FIN(Finish)、窗口、校验和、紧急指针、选项、填充。

TCP首部的序号字段用来保证数据能有序提交给应用层,TCP把数据视为一个无结构但有序的字节流,序号建立在传送的字节流之上,而不建立在报文段之上。TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。超时和冗余ACK会导致TCP对报文段进行重传。TCP提供一种基于滑动窗口协议的流量控制机制。TCP拥塞控制有慢启动和拥塞避免算法,基于此的改进方法是快重传和快恢复。

TCPServer.py

from socket import *

serverPort = 12000
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('', serverPort))
serverSocket.listen(1)
print('The server is ready to recv')
while True:
    connectionSocket, addr = serverSocket.accept()
    sentence = connectionSocket.recv(1024).decode()
    capitalizedSentence = sentence.upper()
    connectionSocket.send(capitalizedSentence.encode())
    connectionSocket.close()

TCPClient.py

from socket import *

serverName = 'localhost'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
sentence = input('input lowercase sentense:')
clientSocket.send(sentence.encode())
modifiedSentence = clientSocket.recv(1024)
print(modifiedSentence.decode())
clientSocket.close()

六.应用层

6.1 客户/服务器模型

在客户/服务器模型(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求,特征是客户是服务请求方,服务器是服务提供方。网络中的计算机地位不平等,客户机相互之间不直接通信。可拓展性不佳。

6.2 P2P模型

P2P模型的思想是整个网络中的传输内容不再被保存再中心服务器上,每个结点都同时具有下载、上传的功能,其权利和义务都是大体对等的。任一对计算机称为对等方,直接互相通信。优点在于减轻了服务器的计算压力,消除了对某个服务器的完全依赖,因此大大提高了系统效率和资源利用率,多个客户机之间可以直接共享文档,可拓展性好,网络健壮性强。缺点是在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机的速度。

6.3 域名系统(DNS)

域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特殊含义的主机名转换成便于机器处理的IP地址,其协议运行在UDP之上,使用53端口。

因特网采用层次树桩结构的命名方法,任何一个连接到因特网的主机或路由器,都有唯一的层次结构名称,即域名。域是名字空间中一个可被管理的划分。

域名到IP地址的解析是由运行在域名服务器上的程序完成的。根域名服务器是最高层次的域名服务器,所有根域名服务器都知道所有的顶级域名服务器的IP地址,顶级域名服务器负责管理在该顶级域名服务器注册的所有二级域名,每台主机都必须在授权域名服务器处登记,本地域名服务器对于域名系统十分重要。

域名解析是指把域名映射称为IP地址或把IP地址映射成域名的过程,前者称为正向解析,后者称为反向解析。域名解析有递归查询和递归和迭代相结合的查询。实际中递归查询几乎不用。递归和迭代相结合的查询分为两部分:主机向本地域名服务器的查询采用的是递归查询,本地域名服务器向根域名服务器的查询采用迭代查询。

6.4 文件传输协议(FTP)

文件传输协议(File Transfer Protocol ,FTP)是因特网上使用得最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存储权限。屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。提供的功能有:提供不同种类的主机系统之间的文件传输能力,以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力,以匿名FTP的方式提供文件共享的能力。FTP采取的是C/S工作方式,使用TCP服务。一个FTP进程可同时为多个客户进程提供服务。FTP的进程由两大部分组成,一个主进程,负责接收新的请求,另外有若干从属进程,负责处理单个请求。有控制连接和数据连接两个并行的TCP连接。

6.5 电子邮件

一个电子邮件系统应具有三个最主要的组成构件:用户代理(User Agent)、邮件服务器和电子邮件使用协议。用户代理是用户与电子邮件系统的接口,邮件服务器的功能是收发邮件,同时还要向发信人报告邮件传送的情况,邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP,邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3。一个邮件分为信封和内容两大部分,内容又分为首部和主体两部分。由于SMTP只能传送一定长度的ASCII码邮件,且无法传送可执行文件及其他二进制对象,因此提出了多用途网际邮件扩充(MIME)

6.5.1 SMTP协议

全称为 Simple Mail Transfer Protocol,简单邮件传输协议,属于 TCP/IP 协议簇(默认端口25)。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则。SMTP是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。

步骤

1.和SMTP服务器建立连接,telnet smtp.163 25。这条命令是和163邮箱建立连接,如果是和QQ,那么将163换成qq即可,同理别的邮箱也是一样。后面的数字25表示SMTP服务器的端口号。
2.ehlo 发件人用户名。这没什么好说的,就是告诉SMTP服务器发送者的用户名。
3.选择登录认证方式,一般我们在第二步执行完后,会提示有几种认证方式,我们一般选择的是login。即输入命令:auth login
4.分别输入经过Base64加密后的用户名和密码。注意必须是要经过 Base64加密后的用户名和密码,大家可以网上在线转,也可以用后面给的代码进行转换。
5.指明邮件的发送人和收件人
  mail from:xxx@163
  rcpt to:xxx@qq
6.输入data命令,然后编写要发送的邮件内容,邮件的编写格式规则如下:
    第一步:输入data
    第二步:输入邮件内容

from:xxx@163    ----邮件头发件人地址
to:xxx@qq      ----邮件头收件人地址
subject:hello world    ----邮件头主题
               -----空行
This is the first email sent by hand using the SMTP protocol  ----邮件的具体内容
7.输入“.”表示邮件内容输入完毕
8.输入quit命令断开与邮件服务器的连接

POP3协议

邮局协议全称为 Post Office Protocol,是TCP/IP协议族中的一员(默认端口是110),它定义了邮件客户端软件和POP3邮件服务器的通信规则,主要用于支持使用客户端远程管理在服务器上的电子邮件。

IMAP协议

因特网报文存取协议全称为 Internet Message Access Protocol,Internet消息访问协议,是一个应用层协议(端口是143),它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则,主要用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,另一特性是允许用户代理只获取报文的某些部分,适用于低宽带的情况。

代码

import sys 
import time 
import poplib 
import smtplib 
#邮件发送函数
def send_mail(): 
     try: 
        handle= smtplib.SMTP('smtp.126',25) 
        handle.login('XXXX@126','**********') 
        msg= 'To: XXXX@qq\r\nFrom:XXXX@126\r\nSubject:hello\r\n'
        handle.sendmail('XXXX@126','XXXX@qq',msg) 
        handle.close() 
        return 1
    except: 
        return 0
#邮件接收函数
def accpet_mail(): 
    try: 
        p=poplib.POP3('pop.126') 
        p.user('pythontab@126') 
        p.pass_('**********') 
        ret= p.stat()#返回一个元组:(邮件数,邮件尺寸) 
       #p.retr('邮件号码')方法返回一个元组:(状态信息,邮件,邮件尺寸)   
    except poplib.error_proto,e: 
        print "Login failed:",e 
        sys.exit(1)
    
#运行当前文件时,执行sendmail和accpet_mail函数
if __name__== "__main__": 
    send_mail() 
    accpet_mail()

6.6 万维网(WWW)

万维网(World Wide Web,WWW)是一个分布式、联机式的信息存储空间,在这个空间中,一样有用的事物称为一样的资源,并由一个全域“统一资源定位符URL”标识。这些资源通过超文本传输协议HTTP传送给使用者,而后者通过单击链接来获取资源。万维网的内核部分是由三个标准构成:统一资源定位符URL、超文本传输协议HTTP、超文本标记语言HTML。

6.6.1HTTP

Web的应用层协议是超文本传输协议(HyperText Transfer Protocol, HTTP),HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。

HTTP使用TCP作为它的支撑运输协议,同时HTTP是一个无状态协议(stateless protocol)

HTTP 协议主要由三大部分组成:

起始行(start line):描述请求或响应的基本信息;
头部字段(header):使用 key-value 形式更详细地说明报文;
消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。
其中起始行和头部字段并成为 请求头 或者 响应头,统称为 Header;消息正文也叫做实体,称为 body。HTTP 协议规定每次发送的报文必须要有 Header,但是可以没有 body,也就是说头信息是必须的,实体信息可以没有。而且在 header 和 body 之间必须要有一个空行(CRLF)

起始行
请求头部
空行
实体

请求行

第一行叫做请求行,其后继的行叫作首部行。请求行有3个字段:方法字段URL字段HTTP版本字段

方法字段空格URL空格HTTP版本字段回车换行

1.方法字段

方法字段可以取几种不同的值,包括GETPOSTHEADPUTDELETE,绝大部分的HTTP请求报文使用的是GET方法

GET 获取资源,GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器端解析后返回响应内容。也就是说,如果请求的资源是文本,那就保持原样返回;

POST 传输实体,虽然 GET 方法也可以传输主体信息,但是便于区分,我们一般不用 GET 传输实体信息,反而使用 POST 传输实体信息,

PUT 传输文件,PUT 方法用来传输文件。就像 FTP 协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。

但是,鉴于 HTTP 的 PUT 方法自身不带验证机制,任何人都可以上传文件 , 存在安全性问题,因此一般的 W eb 网站不使用该方法。若配合 Web 应用程序的验证机制,或架构设计采用REST(REpresentational State Transfer,表征状态转移)标准的同类 Web 网站,就可能会开放使用 PUT 方法。

HEAD获得响应首部,HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等。

DELETE 删除文件,DELETE 方法用来删除文件,是与 PUT 相反的方法。DELETE 方法按请求 URI 删除指定的资源。

OPTIONS询问支持的方法,OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。

TRACE 追踪路径,TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方法。

CONNECT 要求用隧道协议连接代理,CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加 密后经网络隧道传输。

2.URL字段

**URL组成:**protocol + domain name + port + path to file + parameters + anchor

3.HTTP版本字段

表示报文使用的 HTTP 协议版本

请求头部

HTTP 的请求标头分为四种: 通用标头请求标头响应标头实体标头

通用标头

通用标头主要有三个,分别是 DateCache-ControlConnection

响应标头

响应标头是可以在 HTTP 响应种使用的 HTTP 标头

实体标头

实体标头是描述消息正文内容的 HTTP 标头。实体标头用于 HTTP 请求和响应中。头部Content-LengthContent-LanguageContent-Encoding 是实体头。

请求标头

Host

Host 请求头指明了服务器的域名(对于虚拟主机来说),以及(可选的)服务器监听的TCP端口号。如果没有给定端口号,会自动使用被请求服务的默认端口(比如请求一个 HTTP 的 URL 会自动使用80作为端口)

Referer

HTTP Referer 属性是请求标头的一部分,当浏览器向 web 服务器发送请求的时候,一般会带上 Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。

Upgrade-Insecure-Requests

Upgrade-Insecure-Requests 是一个请求标头,用来向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应。

If-Modified-Since

HTTP 的 If-Modified-Since 使其成为条件请求:

返回200,只有在给定日期的最后一次修改资源后,服务器才会以200状态发送回请求的资源。
如果请求从开始以来没有被修改过,响应会返回304并且没有任何响应体
If-Modified-Since 通常会与 If-None-Match 搭配使用,If-Modified-Since 用于确认代理或客户端拥有的本地资源的有效性。获取资源的更新日期时间,可通过确认首部字段 Last-Modified 来确定。

如果在 Last-Modified 之后更新了服务器资源,那么服务器会响应200,如果在 Last-Modified 之后没有更新过资源,则返回 304。

If-None-Match

If-None-Match HTTP请求标头使请求成为条件请求。 对于 GET 和 HEAD 方法,仅当服务器没有与给定资源匹配的 ETag 时,服务器才会以200状态发送回请求的资源。 对于其他方法,仅当最终现有资源的ETag与列出的任何值都不匹配时,才会处理请求。

内容协商

内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的标准。

内容协商主要有以下3种类型:

服务器驱动协商(Server-driven Negotiation)
这种协商方式是由服务器端进行内容协商。服务器端会根据请求首部字段进行自动处理

客户端驱动协商(Agent-driven Negotiation)
这种协商方式是由客户端来进行内容协商。

透明协商(Transparent Negotiation)
是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法。

内容协商的分类有很多种,主要的几种类型是 AcceptAccept-CharsetAccept-EncodingAccept-LanguageContent-Language

HTTP 的优点

简单灵活易扩展
HTTP 最重要也是最突出的优点是 简单、灵活、易于扩展。

HTTP 的协议比较简单,它的主要组成就是 header + body,头部信息也是简单的文本格式,而且 HTTP 的请求报文根据英文也能猜出来个大概的意思,降低学习门槛,能够让更多的人研究和开发 HTTP 应用。

所以,在简单的基础上,HTTP 协议又多了灵活 和 易扩展 的优点。

HTTP 协议里的请求方法、URI、状态码、原因短语、头字段等每一个核心组成要素都没有被制定死,允许开发者任意定制、扩充或解释,给予了浏览器和服务器最大程度的信任和自由。

应用广泛、环境成熟
因为过于简单,普及,因此应用很广泛。因为 HTTP 协议本身不属于一种语言,它并不限定某种编程语言或者操作系统,所以天然具有跨语言、跨平台的优越性。而且,因为本身的简单特性很容易实现,所以几乎所有的编程语言都有 HTTP 调用库和外围的开发测试工具。

随着移动互联网的发展, HTTP 的触角已经延伸到了世界的每一个角落,从简单的 Web 页面到复杂的 JSON、XML 数据,从台式机上的浏览器到手机上的各种 APP、新闻、论坛、购物、手机游戏,你很难找到一个没有使用 HTTP 的地方。

无状态
无状态其实既是优点又是缺点。因为服务器没有记忆能力,所以就不需要额外的资源来记录状态信息,不仅实现上会简单一些,而且还能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。

HTTP 的缺点

无状态
既然服务器没有记忆能力,它就无法支持需要连续多个步骤的事务操作。每次都得问一遍身份信息,不仅麻烦,而且还增加了不必要的数据传输量。由此出现了 Cookie 技术。

明文
HTTP 协议里还有一把优缺点一体的双刃剑,就是明文传输。明文意思就是协议里的报文(准确地说是 header 部分)不使用二进制数据,而是用简单可阅读的文本形式。

对比 TCP、UDP 这样的二进制协议,它的优点显而易见,不需要借助任何外部工具,用浏览器、Wireshark 或者 tcpdump 抓包后,直接用肉眼就可以很容易地查看或者修改,为我们的开发调试工作带来极大的便利。

当然缺点也是显而易见的,就是不安全,可以被监听和被窥探。因为无法判断通信双方的身份,不能判断报文是否被更改过。

性能
HTTP 的性能不算差,但不完全适应现在的互联网,还有很大的提升空间。

本文标签: 计算机网络学习笔记