目录

第一章 计算机网络概述

1.1 计算机网络的分类 

1.2 因特网发展的三个阶段

1.3 因特网的组成

1.4 三种交换方式

1.4.1 电路交换

1.4.2 报文交换 

1.4.3 分组交换 

1.5 计算机网络主要性能指标

1.5.1 速率

1.5.2 带宽

1.5.3 吞吐量

1.5.4 时延

1.5.5 丢包率***

1.5.6 利用率***

1.6 计算机网络体系结构

1.6.1 网络协议

1.6.2 OSI参考模型 与 TCP/IP参考模型

1.6.3 五层协议模型

1.7 两个重要的新兴网络技术***

1.7.1 云计算

1.7.2 物联网

第二章 物理层

2.1 基本概念

2.1.1奈氏准则(奈奎斯特定理)

2.1.2 香农定理

2.2 编码&调制 

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

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

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

2.3 传输介质及物理层设备

2.3.1 传输介质

2.3.2 物理层设备 

第三章 数据链路层

3.1 封装成帧

3.1.1 字符计数法

3.1.2 字符填充法

3.1.3 零比特填充法

3.2.3 汉明码

3.3 可靠传输

3.3.1 停止等待协议 Stop-and-Wait

1.4.2 回退 N 帧协议 Go-back-N

1.4.3 选择重传协议 Selective Repeat

3.4 介质访问控制

3.4.1 静态划分信道

3.4.2 动态划分信道

3.5 局域网(Local Area Network)

3.5.1 以太网

3.5.2 无线局域网 

3.5.3 虚拟局域网VLAN

3.6 广域网

3.6.1 ppp协议

3.6.2 HDLC协议***

3.7 数据链路层设备

第四章 网络层

4.1 网络层概述

4.1.1 网络层提供的两种服务

4.1.2 路由器

4.1.3 软件定义网络SDN

4.2 IPV4与IPV6及其相关协议

4.2.1 IPV4       

4.2.2 IP地址及编址方式

4.2.3 地址解析协议 ARP (Addresss Resolution Protocol)

4.2.4 网际控制报文协议 ICMP (Internet Control Message Protocol)

4.2.5 IPV6

4.3 路由算法及其相关协议

 4.3.1 RIP (Routing Information Protocol)

4.3.2 OSPF (Open Shortest Path First)

4.3.3 外部网关协议 BGP (Broder Gateway Protocol)

4.4 IP组播与移动IP

4.4.1 IP组播

4.4.2 移动IP

第五章 传输层

5.1 UDP

5.2 TCP

5.2.1 TCP报文段首部格式

5.2.2 TCP连接管理

5.2.3 TCP可靠传输

5.2.4 TCP流量控制

5.2.5 TCP拥塞控制

第六章 应用层

6.1 网络应用体系结构

6.1.1 客户端/服务器结构

6.1.2 对等体结构

6.2 域名系统 DNS (Domain Name System)

6.3 文件传送协议 FTP (File Transfer Protocol)

6.4 电子邮件 

6.5 万维网 WWW (World Wide Web)


第一章 计算机网络概述

        国际标准化组织(ISO): International Organization for Standardization, 制定OSI参考模型

        OSI: 开放系统互连参考模型(Open Systems Interconnection Reference Model)

        国际电气电子工程师: 世界上最大的专业技术团体 

        网络: 由若干结点(计算机、集线器、交换机、路由器等)和连接这些结点的链路组成。

        互联网(internet): 网络的网络。通过路由器将网络互连起来,构成一个覆盖范围更大的网络。

        因特网(Internet): 世界上最大的互联网。网络把许多计算机连接在一起, 互联网把许多网络连接在一起

        客户机(Client) 与 服务器(Server)方式: 简称C/S方式, 是因特网应用最常使用方式。

        对等方式(peer to peer): 简称p2p方式。

计算机网络的功能:

  • 数据通信 (最基本)
  • 资源共享
  • 分布式处理: 提高可靠性, 负载均衡

1.1 计算机网络的分类 

按分布范围分类

  • 广域网(WAN): 也称远程网, 使用点对点网络 
  • 城域网
  • 局域网: 使用广播技术, 广域网使用交换技术, 两者协议不同
  • 个人区域网 

按网络的拓扑结构

  • 总线型网络: 增减结点方便, 重负载时通信效率不高, 总线任意一处故障敏感
  • 星形网络: 便于集中控制管理, 中央设备对故障敏感
  • 环形网络: 如令牌缓局域网
  • 网状网络: 可靠性高, 成本高, 多用在广域网中

分类图:

1.2 因特网发展的三个阶段

        第一阶段: 1969年,第一个分组交换网ARPANET。从单个网络向互联网发展。1983年,TCP/IP协议成为ARPANET的标准协议(因特网诞生时间)。

        第二阶段: 1985年 NSF围绕六个大型计算机中心建设NSFNET(主干网、地区网、校园网),逐步建成三级结构的因特网

 ISP三层结构因特网:

        第三阶段:1993年,NSFNET逐渐被若干个商用因特网主干网替代,由因特网服务提供商ISP来运营,逐步形成了多层次ISP结构的因特网。
 ISP(Internet Service Provider):

1.3 因特网的组成

        网络边缘: 用户直接使用的,由所有连接在因特网上的主机组成。

        网络核心: 为边缘部分提供服务的, 由大量网络和网络的路由器组成。

工作方式图:

        通信子网: 实现数据通信

        资源子网: 实现资源共享/数据处理

功能组成图:

1.4 三种交换方式

1.4.1 电路交换

        建立连接-->通话-->释放连接, 在通话的全部时间内,建立了一条专用的物理通路, 通话的两个用户始终占用端到端的通信资源。

电话交换图:

        特点: 通信时延小, 有序传输, 没有冲突, 控制简单, 但建立时间长, 独占线路。

1.4.2 报文交换

        整个报文先传送到相邻结点, 全部存储下来后查找转发表,转发到下一个结点。

        存储转发: 先暂时存储下来, 检查首部, 按首部中的目的地址查找转发表, 找到合适的接口转发出去,交给下一个分组交换机。 

1.4.3 分组交换

        同报文交换一样, 采用了存储转发方式, 但解决了报文交换中大报文的传输问题, 可分为面向连接的虚电路方式和无连接的数据报方式, 这两者方式都由网络层提供。 

        分组交换: 将一个数据报文划分成一个个更小的等长数据段,每个数据段前加上必要的控制信息,构成分组, 通过路由器以存储转发方式,发送到目标主机。

数据报分组交换图:

        数据报特点: 无建立时延, 线路利用率高, 动态分配线路, 相比报文交换, 减少了出错概率和重发数据量, 但存在存储转发时延。 

三种交换比较图:

1.5 计算机网络主要性能指标

1.5.1 速率

        速率就是数据的传送率,它也称为数据率比特率, 单位是bit/s (bps)

速率:

        千 1kb/s=10^{3}b/s

        兆 1Mb/s=10^{3}kb/s

        吉 1Gb/s=10^{3}Mb/s

        太 1Tb/s=10^{3}Gb/s

存储容量:

        1KB=2^{10}B=1024B

        1MB=2^{10}KB

        1GB=2^{10}MB

        1TB=2^{10}GB

1.5.2 带宽

        在计算机中,带宽用来表示网络的通信线路所能传送数据的能力, 即单位时间从网络中的某一点到另一点所能通过的"最高数据率",单位是bit/s

1.5.3 吞吐量

         也称吞吐率, 表示在单位时间内通过某个网络(或信道,接口)的数据量。吞吐量受网络的带宽或网络的额定速率的限制。

1.5.4 时延

        时延是指数据从网络的一端传送到另一端所需的时间,也称延迟或迟延。

        传输时延: 主机或路由器将分组发送到通信线路上所需的时间,从发送分组的第一个比特算起,到该分组的最后一个比特发送到线路上所需的时间,也称传输时延。公式是:

发送时延=数据长度/发送速率 (信道带宽)

        传播时延: 电磁波在信道中需要传播一定的距离而花费的时间, 公式是:

传播时延=信道长度/电磁波在信道上的传播速率

        处理时延: 主机或路由器收到分组时要花费一定的时间进行处理(分析分组首部、提取数据、差错检验、查找路由等)

        排队时延: 在网络传输时, 经过许多路由器的缓存队列中排队的时间。

        时延带宽积: 某段链路现在有多少比特 (容量)

        往返RTT: 从发送数据开始, 到收到接收方确认的时间

        备注: 所谓高速网络链路,提高的仅仅是数据的发送速率而不是比特在链路上的传播速率 。提高发送速率只是减少了数据的传输时延

示例图:

1.5.5 丢包率***

        即分组丢失率, 指在一定时间范围内, 分组在传输过程总丢失的分组数量与总的分组数量的比率。丢包率高,用户感觉往往是网络时延变大, 而不是信息丢失。

分组丢失的两种情况:

  • 在传输过程中出现了比特级差错, 被结点丢弃
  • 分组交换机队列已满,被抛弃

1.5.6 利用率***

        信道利用率: 信道利用率指出某信道有百分之几的时间是被利用的。根据排队理论, 信道利用率过高会产生非常大的时延

        网络利用率: 全网络的信道利用率的加权平均值

1.6 计算机网络体系结构

1.6.1 网络协议

        协议明确规定了所交换的数据的格式和时序, 以及在发送或接受数据时要采取的动作,为进行网络中的数据交换而建立的规则、标准或约定, 简称协议

协议三要素:

  • 语法: 数据与控制信息的结构或格式
  • 语义: 各个控制信息的具体含义, 完成何种动作及做出何种响应。
  • 同步(时序): 数据应该在何时发送出去, 以什么速率发送。

1.6.2 OSI参考模型 与 TCP/IP参考模型

        表示层: 用于处理在两个通信系统中交换信息的表示方式, 如: 数据格式变换 (语法和语义), 数据加密解密, 数据压缩和恢复

        会话层: 向表示层实体/用户进程提供建立连接并在连接上有序地传输数据。

与TCP/IP的区别:

1.6.3 五层协议模型

应用层

        任务: 通过进程间的交互来完成特定的网络应用

        协议: 如HTTP协议, SMTP协议, FTP协议等

        数据单元: 报文

传输层

        任务: 向两台主机中进程(端到端)之间的通信提供的数据传输服务,

        功能: 复用分用, 流量控制, 差错控制的功能。

        复用: 多个应用进程可同时使用传输层的服务

        分用: 传输层把收到的信息分别交付给上面应用层的相应进程

        协议: TCP协议、UDP协议

        TCP: 提供面向连接的, 可靠的数据传输服务, 数据单元是报文段

        UDP: 提供无连接的, 尽最大努力的传输服务, 数据单元是用户数据报

        服务访问点(SAP): 端口号字段

网络层(网际层、IP层)

        任务: 负责为分组交换网上不同主机提供通信服务, 选择合适的路由,存储转发,最后到达目标主机。

        功能: 路由选择, 流量控制, 差错控制, 拥塞控制

        主要协议:IP、IPX、ICMP、 IGMP、ARP、RARP、OSPF

        数据单元: IP数据报, 简称数据报

        服务访问点(SAP): 协议字段

数据链路层

        任务: 主要任务是把网络层传下来的数据报组装成帧,  有成帧, 差错控制, 流量控制, 控制对信道的访问的功能。

        数据单元: 帧

        主要协议:SDLC、HDLC、PPP、 STP

        帧: 包括数据和控制信息(一个帧从哪里开始,到哪里结束、差错检测)

                服务访问点(SAP): 类型字段

物理层

        任务: 主要任务是在物理媒体上实现比特流的透明传输。

        主要功能: 定义接口特性, 定义传输模式(单工、半双工、双工), 定义传输速率, 比特同步, 比特编码

        数据单元: 比特

        主要协议:Rj45、802.3

        传输媒体: 双绞线、同轴电缆、光缆等。

备注:

        PDU: OSI 模型把对等层之间传送的数据单元称为该层的协议数据单元(Protocol Data Unit) 

        PCI: 协议控制信息, PDU一部分。

        SDU: 协议数据单元, PDU一部分。

        对等层: 如图1-19 通过水平虚线直接传递给对方

        实体: 表示任何可发送或接受信息的硬件或软件进程

        协议: 控制两个对等体(或多个实体)进行通信的规则。

        协议与服务: 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议, 还需要使用下面一层所提供的服务。协议是"水平的"服务是"垂直的"。即服务是由下层向上层通过层间接口提供的。

示例图:

三者区别图: 

1.7 两个重要的新兴网络技术***

1.7.1 云计算

        定义: 云计算是一种运行在计算机网络上的分布式应用,通过网络以按需、易扩展的方式向用户提供安全、快捷、便捷、廉价的数据存储和网络计算服务。

        Iaas: 基础设施即服务, 将硬件设备等基础资源(如处理能力、存储空间、网络组件)封装成服务通过网络提供给用户使用。

        Paas: 平台即服务,提供用户应用程序的开发和运行环境

        Saas: 软件即服务 ,将某些特定应用软件功能封装成服务

1.7.2 物联网

        定义: 物物相连的互联网。按约定的协议,把任何物体与互联网相连接, 进行信息交换和通信,以实现人与物,物与物的相互沟通和对话, 对物体进行智能化识别、定位、跟踪、管理和控制的一种信息网络。

第二章 物理层

2.1 基本概念

        物理层主要任务是确定与传输媒体接口有关的一些特性, 即定义标准

        信源:产生和发送数据的源头。

        信宿:接收数据的终点 。

        信道:信号的传输媒介。

三种通信方式:

        单工通信: 只有一个方向的通信

        半双工通信: 通信的双方都可以发送或接收信息,但任何一方都不能同时发送和接收

        全双工通信: 通信双方可以同时发送和接受信息

物理层接口特性:

        机械特征:  规定物理连接时所采用的规格、接口形状、引线数目、引脚数量和排列情况。

        电气特征:  线路上信号的电压范围、阻抗匹配、传输速率距离限制等。

        功能特征: 某条线上出现的某一电平表示何种意义  

        规程特征: 定义各条物理线路的工作规程和时序关系

数据传输方式:

1) 串行传输: 速度慢,费用低,适合远距离

2) 并行传输: 速度快,费用高,适合近距离

模拟信号/连续信号图:

数字信号/离散信号图:

        同步传输: 需先送出1个或多个同步字符,再送出整批的数据。

        异步传输: 加一个字符起始位和一个字符终止位。发送方可以在任何时刻 发送这些比特组,而接收方不知道它们会在什么时候到达。

        码元: 用一个固定时长的数字脉冲, 代表不同离散数值的基本波形, 这个时长内的信号称为k进制码元,而该时长称为码元宽度。1码元可以携带多个比特的信息量

        码元传输速率:别名波特率, 或调制速率, 波形速率, 符号速率。 表示单位时间内数字通信系统所传输的码元个数(也可称为脉冲个数或信号变化的次数), 单位是波特(Baud), 码元速率与进制数无关,只与码元长度有关。

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

        波特率与比特率的关系:若一个码元携带n bit的信息量,则M Baud的码元传输速率所对应的信息传输速率为M×n bit/s。 

2.1.1奈氏准则(奈奎斯特定理)

        采样定理, 为了避免码间串扰的极限码元传输速率。

        码间串扰:接收端收到的信号波形失去了码元之间清晰界限的现象。 

公式: 

说明: 

        1) 在任何信道中,码元传输的速率是有上限的

        2) 奈氏准则给出了码元传输速率的限制,但并没有对信息传输速率给出限制。

        3) 要提高数据的传输速率, 必须设法使每个码元能携带更多个比特的信息量

2.1.2 香农定理

        在带宽受限且有噪声的信道中,为了不产生误差,信息的数据传输速率有上限值。

公式:  

        信噪比: 信号的平均功率/噪声的平均功率, 用分贝(dB)作为度量单位为:

dB=10log_{10}^{ (S/N)} 

如:  90dB=10log_{10}^{ (S/N)}, 则 S/N=10^{9}

        说明:  信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。

2.2 编码&调制 

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

        宽带信号: 将基带信号进行调制后形成的频分复用模拟信号,再传送到模拟信道上去传输

        备注: 传输距离较近时,计算机网络采用基带传输方式, 距离较远时,采用宽带传输方式

        编码: 数据转化为数字信号

        调制: 数据转化为模拟信号 

相关设备的作用:  

        调制器: 数字数据转化为模拟信号

        PCM编码器: 模拟数据转化为数字信号

        数字发送器: 数字数据转化为数字信号

        放大调制器: 模拟数据转化为模拟信号

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

        1) 非归零编码【NRZ】: 高1低0

        2) 曼彻斯特编码: 看前半个, 高1低0, 占的频带宽度是原始基带宽度的两倍 (波特率:比特率=2:1), 以太网采用曼彻斯特编码

        3) 差分曼彻斯特编码: 看前半个与其前面的关系, 相同为1, 不同为0。常用于局域网。

        4) 归零编码【RZ】:  高1低0

        5) 反向不归零编码【NRZI】: 遇到0则翻转 (由高变低. 由低变高)

        6) 4B/5B编码: 比特流中插入额外的比特以打破 一连串的0或1,编码效率为80%

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

        调幅+调相(QAM): 数据传输速率为 R=Blog_{2}^{mn} b/s

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

        最典型的例子就是对音频信号进行编码的脉码调制(PCM), 它主要包括三步:抽样(f采样频率 ≥ 2f信号最高频率), 量化, 编码

示例图: 

2.3 传输介质及物理层设备

2.3.1 传输介质

        它就是数据传输系统中在发送设备和接收设备之间的物理通路。传输媒体/介质并不是物理层

1) 双绞线 (twisted pair cable): 由两根采用一定规则并排绞合的、相互绝缘的铜导线组成 

示例图:

特点: 价格便宜, 最常用的传输介质之一。 

2) 同轴电缆: 分为两类, 一类用于传送基带数字信号, 又称基带同轴电缆, 一类用于传送宽带信号,又称为宽带同轴电缆

特点: 抗干扰特性比双绞线好,传输距离更远,但价格较双绞线贵。

3) 光纤: 光纤由纤芯(实心)和包层构成, 带宽远远大于其他传输媒体的带宽

光纤分类图:

特点: 传输损耗小, 抗雷电和电磁干扰性能好, 不易被窃听或截取数据。体积小,重量轻。

非导向性传输介质:

        1) 无限电波: 信号向所有方向传播, 有较强穿透能力

        2) 微波: 信号固定方向传播, 通信频率较高, 有地面微波接力通信和卫星通信两种方式 

        3) 红外线和激光: 信号固定方向传播。

2.3.2 物理层设备 

        中继器(转发器): 对信号进行再生和还原,对衰减的信号进行放大, 中继器两端的网段一定要是同一个协议, 可以是不同传输媒体。

        5-4-3规则:用4个中继器串联的5段通信介质只有3段可以挂计算机。

        集线器: 实质上是一个多端口的中继器, 只起信号放大和转发作用。星形网络拓扑结构。

第三章 数据链路层

3.1 封装成帧

        数据链路层以为单位传输和处理数据, 将网络层的数据报前面和后面分别添加上首部和尾部, 封装成一个完整的帧。首部和尾部作用之一就是进行帧定界。组帧即定义数据格式。

 帧图:

        组帧的四种方法:  字符计数法, 字符填充法, 零比特填充法, 违规编码法。

3.1.1 字符计数法

        帧首部使用一个计数段来标明帧内字符数

示例图:

3.1.2 字符填充法

        使用某个特殊的控制字符作为帧定界符, 使用字节填充的方法将数据部分的特殊字符与帧定界符区分开来, 即在数据中出现的标记字符前插入一个转义字符。

字节填充原理图:

3.1.3 零比特填充法

        当物理链路传送连续的比特流, 可以使用某个特殊的比特组合, 如HDLC协议使用的"01111110"作为标识数据部分只要发现有5个连续1, 则立即填入一个0

原理图:

3.1.4 违规编码法

        在物理层进行比特编码时采用, 如曼彻斯特编码采用高-高电平或低-低电平。

3.2 差错控制

        FCS: 帧检验序列,帧尾部设置的一个差错检验字段。Frame Check Sequence

        CRC: 循环冗余检验, Cyclic Redundancy Check, 也称多项式编码

        随机差错: 通过提高信噪比可以减弱影响

        突发差错: 引起传输差错的主要原因,由外界电磁干扰引起。

3.2.1 奇偶检验

        每个数据字节都会增加一个额外的位,称为校验位。校验位被设置为使得每个字节中“1”的位数为奇数(或偶数)。

3.2.2 循环冗余码

        具有纠错功能, 只是数据链路层仅使用了它的检错功能。

 CRC 运算原理:

3.2.3 汉明码

        1) 确定汉明距离2^{k}\geqslant n+k+1, k为冗余信息位数, n为校验位的位数

        2) 校验位的分布: 2^{i} (i=0,1,2 ... ) 

        3) 求出校验码值

        4) 汉明码距: 纠错 (2d+1), 检错(d+1)

示例图:

纠错示例图:  

3.3 可靠传输

        通常使用确认超时重传两种机制来完成。

3.3.1 停止等待协议 Stop-and-Wait

        收到一个正常分组时, 回复一个ACK; 发现错误则回复NAK, 并使发送方重发, 发送方每发送一个分组必须停下来等待接受确认后才能发下一个分组。

        为防止确认分组丢失, 可以采用超时重传机制

        为防止重复接受, 发送带序号的帧。

SW协议原理图:

停止等待协议的信道利用率:

        信道利用率: 发送方发送数据的时间占整个发送周期的比率。TD,TA为传输时延。

1.4.2 回退 N 帧协议 Go-back-N

        采用流水线传输方式, 利用发送窗口限制发送方连续发送分组的个数,  一个分组出错, 其后续连续发送的所有分组都要重传。

        接收方采用累计确认的方式, 有接受窗口的话, 则GBN协议的接受窗口为1。收到失序分组则丢弃, 并对最近按序接受的分组进行确认。

GBN协议原理图:

流水线传输的信道利用率:

        发送窗口大小: 1\leq W_{T}\leq 2^{n}-1

1.4.3 选择重传协议 Selective Repeat

        在GBN协议基础上, 接受窗口不再为1, 对正确接受的分组进行逐一确认。超时只重传一个超时的帧。

SR协议原理图:

        滑动窗口长度:  W_{Tmax}=W_{Rmax} =2^{n-1} (发送窗口+接受窗口不超过2^{n})

        窗口边界: (下边界, 上边界)

3.4 介质访问控制

        采取一定措施, 使得两个节点之间的通信不会发送相互干扰的情况。

介质访问控制分类图:

3.4.1 静态划分信道

频分多路复用与时分多路复用示例图:

统计时分多路复用(STDM):  

波分多路复用图: 

码分多路复用:  令S表示A站点的码片向量, 令T表示B站点的码片向量 (0用-1,1用+1 ) 则:

        1) S和T的规格化内积: S*T=\frac{1}{m}\sum_{i=1}^{m}S_{i}T_{i}=0 即要一半为异号

        2) 在公共信道上进行线性相加

        3) 要去A的信息时, 使S与(S*T)进行规格化内积(相乘,除m), -1为0, +1位1

3.4.2 动态划分信道

        争用型协议。

        纯ALOHA协议: 不监听信道, 不按时间槽发送, 想发就发。一段时间内未收到确认就认为发生了冲突。超时后等一随机时间再重传。

        时隙ALOHA协议: 将时间划分为一段段等长的时隙, 只能在每个时隙开始才能发送一个帧。

时隙ALOHA协议示意图:

        CSMA协议: 载波监听多路访问协议, 发送前先监听一下共用信道, 发现空闲后再发送。

三种CSMA对比:

        CSMA/CD协议:   载波监听多址接入/碰撞检测。适用于总线型网络或半双工网络。

        碰撞检测: 边发送监听,也称冲突检测, 发送碰撞时, 适配器立即停止发送。

 原理图:

        最小帧长: 2*总线传播时延*数据传输速率

截断二进制指数退避算法:

         帧的发送时延不能小于2倍网络最大传播时延, 即一个争用期, 因此以太网规定最短有效帧长64字节。也称动态退避算法

        CSMA/CA协议: 载波监听多址接入/碰撞避免

 不使用CSMA/CD 协议的原因:

        1) 无限信道传输信号强度的动态范围非常大。

        2) 隐蔽站问题:

CSMA/CA 工作原理:

三种帧间间隔IFS: 所有站发送完后必须等待一段的时间, 即帧间间隔(IFS)

        1) SIFS: 最短的IFS, 分隔属于一次对话的各帧, 如ACK帧

        2) PIFS: 在PCF操作中使用

        3) DIFS: 最长的IFS, 用于异步竞争访问的时延。

退避算法:

        1) 当要发送帧的站点检测信道从忙态转为空闲时, 就要执行退避算法退避计时器设置一个随机退避时间, 当退避计时器减小到零时, 就开始发送数据。

        2) 当退避计时器的时间还未减小到零时,信道又转变为忙态, 便冻结退避计时器的数值,重新等待信道变为空闲, 并经过DIFS 后, 继续启动退避计时器。 

        3) 为避免一个站点独占信道, 一个站点成功发送完一个数据帧后, 连续发送下一个帧时要启动退避算法。

信道预约:

        1)为减少碰撞的概率和降低碰撞的影响, 源站发送数据帧前要发送一个短的控制帧。即请求发送RTS (Request To Send), 其包括源地址, 目标地址, 通信所需时间(包括确认帧)。

        2) 若信道空闲, 目的站就发送一个响应, 即允许发送CTS (Clear To Send )。也包括通信持续时间。

        3) 除源站和目的站以外, 其他站收到CTS (或数据帧) 后推迟接入到无线局域网中。如果RST发送碰撞, 需执行退避算法重传RTS。

虚拟载波监听:

        RTS 帧CTS 帧数据帧都会携带通信持续时间, 这便叫虚拟载波监听, 但站点检测到正在信道中传送的MAC首部的 "持续时间" 字段时, 会调整自己网络分配向量 NAV (Network Allocation Vector)。

原理图:

轮询协议图:

令牌传递协议原理图:

3.5 局域网(Local Area Network)

决定局域网特性的三个要素: 

  • 介质访问控制方式(最重要)
  • 网络拓扑结构
  • 传输介质

局域网分类:

  • 以太网: 逻辑拓扑是总线型结构, 物理拓扑是星形或拓展星形, 符合IEEE802.3标准
  • 令牌环(IEEE802.5): 逻辑拓扑是环形结构, 物理拓扑是星形结构
  • FDDI(光纤分布数字接口, IEEE802.8): 逻辑拓扑是环形结构, 物理拓扑是双环结构
  • 无限局域网: 采用IEEE802.11标准
  • IEEE802.1Q: VLAN

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

        LLC主要功能: 向网络层提供无确认无连接, 面向连接, 带确认无连接, 高速传送, 给帧加序号

        MAC主要功能: 与接入媒体有关的内容, 如组帧, 拆卸帧, 比特传输差错检测, 透明传输

示例图:

3.5.1 以太网

        采用无连接工作方式, 不可靠传输, 差错纠正由高层完成, 发送的数据使用曼彻斯特编码。采用 CSMA/CD 介质访问控制方式

        MAC地址: 全球唯一物理地址, 占6字节。

以太网的传输介质图(常识):

MAC帧图:

        填充: 0~46字节(最短MAC帧长度为18字节, 以太网帧数据字段最短帧长64B, 最大1500B) 。

        校验码(FCS): 不检验MAC帧数据部分和前导码。 采用32位循环冗余码(CRC)

高速以太网:

        快速以太网: 使用CSMA/CD协议, 保持最短帧长不变, 将最大电缆长度减少到100M。

3.5.2 无线局域网 

IEEE802.11 帧最常见的两种情况:

3.5.3 虚拟局域网VLAN

        将局域网内的设备划分成与物理位置无关的逻辑组的技术, 每个VLAN是一个较小的广播域

IEEE802.1Q帧:

备注:

  • VLAN标记的后12位是VLAN标识符VID, 唯一表示了该以太网帧属于哪个VLAN。
  • VLAN的有效VID取值范围为1~4094。 
  • IEEE 802.1Q帧是由交换机来处理的,而不是由用户主机来处理的。

3.6 广域网

        将分布在不同地区的局域网或计算机系统互连起来, 达到资源共享的目的。如因特网(Internet)是最大的广域网。点对点通信。

广域网与局域网的区别与联系:

在这里插入图片描述

3.6.1 ppp协议

        只支持全双工链路。标志字节7E, 转义字节7D

ppp协议的三个组成部分:

  • 一个将OP数据报封装到串行链路的方法
  • 链路控制协议(LCP): 用于建立、配置、测试和管理数据链路。身份验证
  • 网络控制协议(NCP): ppp可支持多种网络层协议, 每个不同的网络层协议要用一个相应的NCP来配置

ppp协议状态图:

ppp协议帧格式图:

ppp协议特点:

  • 提供差错检测但不提供纠错功能, 不可靠传输, 即不使用序号和确认机制
  • 仅支出点对点的链路通信
  • 只支持全双工链路
  • ppp的两端可以运行不同的网络层协议
  • 面向字节(与调制解调器一起使用, 调制解调器按字节接收和发送数据), 在同步线路采用硬件来完成比特填充 

3.6.2 HDLC协议***

        面向比特, 可靠传输, 差错检测不纠错, 采用全双工通信。

HDLC帧格式图:

3.7 数据链路层设备

物理层扩展以太网:

链路层扩展以太网:

         网段: 一般指一个计算机网络中使用同一物理层设备(传输介质, 中继器, 集线器)能够直接通讯的那一部分。

以太网交换机的两种交换方式:

        1) 直通式交换机: 查完目的地址(6B) 就立刻转发, 延迟小, 可靠性低, 不支持不同速率的端口交换。

        2) 存储转发式交换机: 检查帧是否正确, 可靠性高, 支持不同速率的端口交换。

冲突域和广播域: 

        VLAN: 可隔离冲突域, 也可隔离广播域

        网卡: 主要功能在物理层和数据链路层。

第四章 网络层

4.1 网络层概述

        异构网络互连, 向上只提供简单灵活的, 无连接的, 尽最大努力交付的数据报服务

        网络拥塞: 当网络中有大量分组需要从某条链路转发时, 出现分组丢失的情况。(队满情况)

拥塞控制的两种方法:

  • 开环控制: 静态预防方法, 力求网络在工作时不产生拥塞。
  • 闭环控制: 动态方法, 采用监测网络系统去监视, 并解决拥塞。

        无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。

4.1.1 网络层提供的两种服务

         1) 虚电路:一条源主机到目的主机类似于电路的路径(逻辑连接, 电路不是专用), 分组包含虚电路号, 区别其他虚电路上的分组。

虚电路网络图:

        虚电路特点: 提供了可靠通信功能, 不会乱序、重复或丢失。两个端系统之间也可有多条虚电路为不同的进程服务。缺点是某个结点出现故障时, 经过该结点的所有虚电路将遭到破坏。 

2) 数据报网络图:

 数据报与虚电路区别图:

4.1.2 路由器

         历史原因, 有称为网关, 网络层最核心的功能:  分组转发路由选择。用路由器互连的多个局域网的网络层协议可以不同 (如IPV4与IPV6)

        转发: 仅涉及一个路由器, 转发表根据路由表得出

        路由选择: 涉及很多路由器, 

路由器的结构:

 三种交换结构图***: 

4.1.3 软件定义网络SDN

        采用集中式的控制平面和分布式的数据平面, 两个平面互相分离, 通过Openflow协议将转发表下发给路由器。路由器查找转发分组即可。

        SDN的可编程性通过北向接口提供编程接口, 和转发设备建立双向会议的称为南向接口, SDN控制器之间的通信接口称为东西向接口

SDN特点:

  • 全局集中式控制和分布式高速转发, 灵活可编程与性能平衡
  • 集中管理易受攻击, 随着网络规模扩大, 控制器可能成为网络性能瓶颈 

4.2 IPV4与IPV6及其相关协议

        IP地址实际上标记的是一个主机(或路由器)和一条链路的接口。

4.2.1 IPV4       

        首部的固定长度占20个字节, 后面是可选字段, 首部长度可变。

IP数据报图:

各字段:

1) 版本 : 占4位, IP协议版本, 如4 (IPv4)

2) 首部长度: 占4位, 单位是32位即4个字节。不足4字节由填充字段补齐。

3) 总长度: 占 16位, 首部和数据之和的长度, 单位为字节。一般大于576字节,小于1500字节

4) 标识 :占16位, 每产生一个数据报, 计数器+1, 用于分片时使用。标识同一个数据报

5) 标志: 占3位,第一位为MF, MF=1表示后面还有分片; 第二位为DF, DF=0表示可以分片

6) 片偏移: 占13位, 单位是8个字节, 表示某片在原分组中的相对位置, 分片的长度一定是8字节的整数倍

7) 生存时间(TTL): 占8位, 每一跳减少1;

8) 首部检验和: 占16位, 仅校验首部

检验和计算图: 

数据报分片图:

4.2.2 IP地址及编址方式

        点分十进制记法: IP地址由32位二进制构成, 每8位用等效十进制数字表示。

        多归属主机: 一个主机同时连接到两个网络上时, 该主机必须同时具有两个相应的IP地址, 如: 路由器

        分类编址: 每一类地址由两个固定长度字段组成, 一个是网络号, 一个是主机号

分类编址图:

私有地址: 

特殊IP地址:

        网络地址转换(Network Address Translation): NAT能使内部专用地址的专用网络用户共享少量外部全球地址, 以此来访问因特网上的主机和资源。

 NAT原理图:

子网掩码示例图:

        无分类编址CIDR: 无分类域路由选择, 把32位IP地址分成两个部分, 前面连续的全1表示网络号, 后面全0部分指明主机。 

举例:

        斜线记法:即在IP地址后面加上斜线 "/" , 然后写上网络前缀所占的位数。如上图: 192.168.10.215/24

        CIDR地址块: 把网络前缀都相同的连续IP地址组成一个CIDR地址块。即路由聚合, 又称构成超网

构成超网:

        最长前缀匹配: 路由表中可能存在多个包含关系的地址块前缀, 查找可能不止一个匹配结果, 应当从匹配结果中选择具有最长网络前缀的路由。 

        默认路由: 用特殊0.0.0.0/0 表示默认路由。

        子网划分: 分为等长子网划分 (如: 00,01,10,11 (子网号能否全0全1看情况) ) 和不等长子网划分(如: 0,10,110,1110), 子网划分不增加网络数量。

4.2.3 地址解析协议 ARP (Addresss Resolution Protocol) 

        IP地址放在IP数据报首部, 物理地址则放在MAC帧首部; 物理地址是数据链路层及以下使用的地址, IP地址是网络层及以上各层使用的地址, 是一种逻辑地址。

        ARP: 地址解析协议, 由IP地址找出相应的物理地址

        RARP: 逆地址解析协议, 由物理地址, 得出IP地址

IP地址与物理地址图: 

原理:

        1) 每一个主机都有一个ARP高速缓存, 其中存有本局域网上个主机和路由器的IP地址到物理地址的映射表。

        2) 主机A向本局域网主机B发送IP数据报时, 先查看ARP高速缓存有无B主机的IP地址, 若有, 则通过局域网把MAC帧发往此物理地址, 若无, APR进程在本局域网广播一个ARP请求分组 (目的MAC为地址为FFFF-FFFF-FFFF)。

        3) ARP请求分组是数据链路层的广播, 但ARP响应分组是数据链路层单播

        4) 主机A在发送ARP请求分组时, 就把自己的IP地址核物理地址映射写入ARP请求分组, 所有接收到ARP广播的主机都会更新自己的ARP高速缓存。

        5) ARP用于解决同一个局域网上的主机或路由器的IP地址和物理地址映射问题。

        6) ARP高速缓存中的每一个映射地址项目都设置有生存时间(10~20min)。

原理图:

4.2.4 网际控制报文协议 ICMP (Internet Control Message Protocol)

        ICMP差错报告中的数据字段由IP数据报的首部和数据字段的前8个字节组成。是网络层协议。

ICMP差错报文图:

ICMP报文种类图:

ICMP差错报告报文:

        1) 终点不可达: 路由器或主机不能交付数据报时, 就向源点发送终点不可达报文

        2) 源点抑制: 因拥塞而丢弃数据报时。

        3) 超时: 当目的地址不是自己时, 会将TTL-1再转发出去, TTL减为0时。

        4) 参数问题: 收到的数据报的首部中有的字段的值不正确时

        5) 改变路由: 即重定向, 让主机知道下次应将数据报发送给另外的路由器。

以下情况不发送ICMP差错报告:

        1) 对ICMP差错报文不再发送ICMP差错报文

        2) 对第一个分片的数据报片的所有后续数据报片

        3) 具有多播地址的数据报

        4) 对特殊地址, 如:127.0.0.1

ICMP询问报文类型:

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

应用举例:

        1) ping指令: 使用了ICMP的回送请求和回答报文

        2) tracert指令(Windows操作系统)

4.2.5 IPV6

        从更本上解决地址耗尽问题, 支持QoS。没有IPV4的校验和字段。

IPV6数据报格式:

特点:

  • 地址位扩大到128位
  • 支持即插即用, 不需要DHCP协议
  • 首部长度必须是8B整数倍
  • 只能在主机处分片

地址表示形式:

        1) 一般形式: 冒号十六进制记法

        2) 压缩形式: 省略开头连续的0, 但在域中至少要一个数字; 或双冒号表示法, 进一步省略连续的0, 仅能出现一次。

示例图:

基本地址类型:

  • 单播
  • 多播
  • 任播

IPV6过渡策略:

        1) 双栈协议:一台设备同时启用IPV4和IPV6协议栈。

        2) 隧道技术: IPV6要进入IPV4时, 把整个IPV6数据报封装到IPV4数据报的数据部分。

4.3 路由算法及其相关协议

        因特网将整个互联网划分为许多较小的自治系统, 称AS。一个大的ISP就是一个自治系统。AS之间再做路由。

        静态路由算法: 又称非自适应路由算法, 需由网络管理员手工配置路由信息。

        动态路由算法: 即自适应路由算法, 通过相互连接的路由器之间彼此交换信息, 按照一定算法优化出路由表, 一定时间时隙里不断更新路由信息。 

        内部网关协议 IGP:  自治系统内部使用的路由选择协议, 也称域内路由选择, 如RIP、OSPF协议。

        外部网关协议 EGP:  自治系统间的路由选择协议, 也称域间路由选择, 如BGP协议

关系图:

 4.3.1 RIP (Routing Information Protocol)

        RIP协议即路由信息协议, 是一种分布式的基于距离向量(DV)的路由选择算法。应用层协议, 使用UDP传送数据。

 RIP协议报文格式:

工作原理:

        1) 每一个路由器都要维护从它自己到其他每一个目的网络的距离记录

        2) 距离即跳数, 每经过一个路由器, 跳数就+1, 距离=16相当于不可达

        3) 仅和相邻路由器交换路由表, 交换的信息是自己的路由表, 按固定时间(如30s)周期性更新, 或网络拓扑变化时更新, 即触发更新。 

        4) 收到相邻路由器的路由表,找出到达每个目的网络的最短距离和下一跳路由器, 并更新自己的路由表。

特点:

  • 实现简单, 但只适用于小型互联网
  • 坏消息传播得慢, 导致回路的更本原因

坏消息传递慢示例图:

4.3.2 OSPF (Open Shortest Path First)

        OSPF 协议即开放最短路径优先。使用分布式的链路转态(LS)路由选择算法, 是网络层协议(IP首部协议字段为89)。

OSPF分组: 

工作原理:

        1) 向本自治系统中所有路由器洪泛发送链路状态, 最终所有路由器都建立一个链路状态数据库, 即全网的拓扑结构图, 再根据 dijkstra算法求得最优路径的路由表 (路由表不会存储完整路径, 仅有下一跳)。

        2) 当链路转态发生变化时, 路由器向所有路由器泛洪法发送此信息, 同时也会周期性洪泛更新信息。

        3) 为了使OSPF能用于规模很大的网络, 可以把一个自治系统划分为若干更小的范围, 叫作区域, 一个区域内的路由器最好不超过200个。

        4) 刚刚开始工作时, 路由器只知道直接连接的网络的距离, 经过若干次更新后, 所有路由器都会知道到达本自治系统中任意一个网络的最短距离和下一跳路由器地址。

划分区域示例图:

特点:

        1)  可以有多条相同代价路径, 可以将流量分配给这几条路径, 实现负载平衡。

        2) 每10s交换一次分组, 每30min更新一次, 更新过程收敛的快, 适用于互联网规模很大时

        3) 对于不同类型业务可以计算不同的路由

        4) 每个链路状态都带上一个32位序号, 序号越大, 状态越新。

4.3.3 外部网关协议 BGP (Broder Gateway Protocol)

        只是力求寻找一条能够到达目的网络且比较好的路由,需要根据策略进行路由选择(策略包括政治、经济、安全方面)。

        只需要在发生变化时更新有变化的部分。是应用层协议, 基于TCP。

BGP协议报文格式: 

工作原理:

        建立TCP连接, 相邻结点互相通告自己到所有目的地的路径信息。

        每一个AS的管理员选择至少一个路由器作为AS的BGP代言人, 负责在AS间交换路由信息。

        各BGP根据所采用的策略从收到的路由信息中构建出树形结构的AS连通图。

示例图: 

BGP-4的四种报文:

  • OPEN(打开)报文: 用来与相邻的另一个BGP发言人建立关系
  • UPDATE(更新)报文: 通知新路径或撤销原路径
  • KEEPALIVE(保活)报文: 周期性证实邻站的连通性
  • NOTIFICATION(通知)报文: 报告先前报文的差错, 或用于关闭连接。

三种协议的比较图:  

4.4 IP组播与移动IP

4.4.1 IP组播

        组播一定仅应用与UDP, 把一个分组发送给多个目的主机, 使用D类地址, 组播地址标识一组地址。

1) 单播:

2) 多播(组播): 

硬件组播:

        备注: 组播IP地址与以太网硬件地址的映射关系不是唯一的, 还需要在IP层利用软件进行过滤。 

        因特网组管理协议IGMP: 让路由器知道本局域网是否有主机参加或退出了某个组播组。实际上就是要找出以源主机为根节点的组播转发树。使用IP数据报传递报文。

IGMP工作的两个阶段:

        1) 主机要加入组播组, 向组播组的组播地址发送一个IGMP报文, 本地组播路由器收到后, 利用组播路由选择协议把这组成员关系发给因特网上其他组播路由器。

        2) 本地组播路由器周期性探询本地局域网上的主机, 只要一个主机对某个组响应, 就认为这个组是活跃的, 几次探询没有回应, 则不再把这组成员关系发给其他的组播路由器。

4.4.2 移动IP

        指移动站以固定的网络IP地址实现跨越不同网段的漫游功能。

相关术语: 

  • 移动结点: 具有永久IP地址的移动设备(区别于DHCP分配的私有地址)
  • 归属代理: 本地代理, 一个移动结点拥有的就"居所"。
  • 外部代理: 外地代理, 在外部网络中帮助移动节点完成移动管理功能的实体

移动通信过程: 

第五章 传输层

        进程之间的通信, 传输层向上面的应用层提供端到端通信服务。

网络层与传输层区别:

       网络层提供主机到主机之间的逻辑通信, 而传输层为应用进程之间提供端到端逻辑通信

区别图:

        端口: 端口是应用层与传输层之间接口的抽象, 端口号是应用进程的传输层地址。端口用16位端口号进行标记, 允许有65535个端口号,分为熟知端口、登记端口、动态端口。

        熟知端口: 其数值为0~1023。由因特网赋号管理局分配给常用的应用层程序固定使用。

如: DNS - 53

        登记端口: 数值为1024-49151。不分配也不控制, 可以先IANA注册登记, 防止重复使用。

        动态端口: 其数值为49152-65535。留给客户进程选择的临时端口。

5.1 UDP

        DUP传送的数据单元是用户数据报,首部字段由四个部分组成, 每个部分都是2个字节,共8个字节。

特点:

        1) 无连接, 减少开销和发送数据前的时延

        2) 尽最大努力交付, 即不可靠交付, 但不需要维持许多参数、复杂连接状态表。

        3) 没有拥塞控制, 不因拥塞降低发送速率, 适合实时应用。

        4) 面向报文, 不对应用层交下来的报文进行划分分组, 因此应用层要交合适大小的报文, 太大,IP传送时需要进行分片, 太小, IP首部相对较大, 都会降低IP层的效率。

        5) 支持一对一, 一对多, 多对一, 多对多交互通信。

        6) 首部只有8个字节开销, 比TCP至少20个字节是首部要短。

 UDP首部字段图:

首部字段: 

        1) 源端口: 源端口号

        2) 目标端口: 目标端口号

        3) 长度: 用户数据报长度

        4) 检验和: 差错检验码, 防止UDP用户数据报在传输中出错

 UDP计算检验和方法:

        1) 与IP只检验首部不同, UDP的检验会把首部和数据部分一起检验

        2) 首先将全0放入检验和字段中, 将伪首部及用户数据看成16位的字串,不是偶数个字节, 则加入一个全0字节。而后按二进制反码计算出这些16位字的和, 将此二进制反码写入检验和中。

        3) 接收方收到的UDP用户数据报连同伪首部一起, 按二进制反码求这些16位字的和, 无差错时结果为全1, 否则就丢弃这个错误的UDP数据报。

        4) 伪首部既不下传, 也不上交, 仅仅是计算检验和。

        5) 伪首部的第三个字段为全0, 第四个字段是UDP协议字段, 固定17

示例图:

5.2 TCP

        MMS: 最大报文段长度 

5.2.1 TCP报文段首部格式

        TCP的数据单元是报文段, 首部的前20个字节是固定的, 后面有4N个字节是根据需要而增加的选项。

首部字段:

        源端口与目标端口: 各占两个字节,与UDP一样, 用于传输层的复用和分用

        序号: 占4个字节, 从0开始到2^32 - 1为止, 可对4GB的数据进行编号。每一个字节都要按顺序编号。整个数据的起始序号在连接建立时约定; 首部中的序号字段值表示本报文段所发送数据的第一个字节序号

        确认号: 占4个字节, 是期望收到对方的下一个报文段的第一个数据字节的序号。如:收到序号为501, 数据长度为200, 则期待收到的下一个数据序号是701。

        确认位ACK: 置为1时, 确认号字段才有意义

        紧急位URG: URG=1时, 表明报文中有紧急数据。配合紧急指针使用

        同步位SYN: SYN=1时, 表明是一个连接请求/接受报文

        终止位FIN: FIN=1时, 要求释放链接

        数据偏移: 占4位, 指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。即TCP报文段首都的长度。数据偏移的单位是32位字,(即4字节) 最大表示范围是60字节, 即TCP首部最大长度。

        保留: 占6位, 暂不使用。

        窗口: 占2个字节, 指示发送方的接受窗口大小。窗口用来控制对方发送的数据量。   

        检验和: 占2字节, TCP伪首部的第四个字段为TCP的协议号16,其计算与UDP检验和一样。

TCP首部字段图:

TCP的主要特点:

        1) 面向连接: 传输数据前, 必须先建立TCP连接

        2) 每一条TCP连接只能是点对点

        3) 可靠交付的服务, 通过TCP连接传送的数据无差错、不丢失、不重复、按序到达。

        4) 全双工通信, 允许通信双方的应用进程在任何时候都能发送数据, 两端都设有发送缓存和接收缓存。

        5) 面向字节流, TCP把应用进程交下来的数据块看成是一连串无结构的字节流进行封装发送。

5.2.2 TCP连接管理

       TCP是面向连接的议协。TCP连接分三个阶段. 即连接建立, 数据传送, 连接释放

三次握手:

        1) 客户端进程发出请求报文段, 首部SYN置为1, 同时选择一个序号seq=x。TCP客户端进入SYN-SENT (同步已发送)状态。

        2) 服务器进程发回连接确认请求, 在确认报文段中把SYN和ACK都置为1, 确认号是ack=x+1, 同时为自己定义一个序号seq=y。TCP服务进入 SYN-RCVD ( received 同步收到)状态。

        3) 客户端进程收到连接确认后, 还要向服务器进程给出确认, 同时可携带数据。ESTABLISHED (已建立连接)状态。

        备注: SYN=1的报文段不能携带数据, 但要消耗一个序号。

TCP连接图:

        SYN洪泛攻击: 服务器的资源在完成第二次挥手时分配的, 客户端的资源在完成第三次握手时分配, 因此服务器易受到SYN洪泛攻击。

四次挥手: 

        1) 客户端把发往服务器的报文段首部 FIN=1, seq=u (之前已传送的最后一个字节的序号+1)。TCP客户端进入FIN-WIT-1(终止等待1)状态。

        2) 服务器收到释放连接通知后, 发出确认号ack=u+1。服务器进入CLOSE-WAIT(关闭等待)状态。这样, 客户端到服务器的连接就释放了, 连接处于半关闭状态。但客户端仍能接受服务器发送的数据, 并给出确认。客户端进入FIN-WIT-2。

        3) 当服务器不再向客户端发送数据时, 发出FIN=1, seq=w, ack=u+1(基于上次), 这时服务器进入 LAST-ACK (最后确认)状态。客户端进入TIME-WAIT。

        4) 客户端收到连接释放报文段后, 回复ack=w+1, seq=u+1 但客户端的TCP不能马上释放, 还要等待最长报文段寿命时间(2MSL)才能释放整个连接。因为服务器可能重发(3)。最后, 客户端进入CLOSED(连接关闭)状态。

TCP连接释放图:

5.2.3 TCP可靠传输

        TCP在IP的不可靠的尽最大努力服务的基础上实现了可靠的数据传输服务, 即数据无差错、不丢失、按序不重复。

数据编号与确认:

        1) TCP协议是面向字节的, 一个字节对应一个序号。连接建立时, 双方TCP要各自确定初始序号。报文段中的序号字段值表示该报文中第一个数据字节的序号。

        2) TCP使用的是累积确认, 即确认是对所有按序接收到的数据的确认(已按序收到的数据的最高序号+1)。确认号表示接收方期望下次收到的数据中的第一个数据字节序号。如:已经收到了1~700, 801~1000, 那么发送的确认序号应填入701。

        4) TCP采用了一种延迟确认机制, 即接收方有数据发送给对方, 则可以捎带确认, 也可能这段时间内又有数据到达, 则可以对这两次到达的数据进行累积确认, 提高效率。

        5) 收到重复的报文段, 丢弃的同时要立即发回确认信息。

 累计确认示意图:

        超时重传机制:  TCP发送方每发送一个报文段, 就会为这个报文段设置一个计时器。时间到了但还没有收到确认,就要重传这一报文段。即超时重传。超时重传时间应当比当前往返时间(RRT)要长一些。

超时重传图:

        快速重传机制: 一个报文段的丢失会引起发送方连续收到多个重复确认, 快速重传即当发送方一连收到三个重复确认后, 立即重传丢失的报文段。

快速重传示意图:

5.2.4 TCP流量控制

        TCP采用接收方控制发送方发送窗口大小的方法来实现, 即在TCP报文段首部窗口字段是当前接收方的接受窗口大小。TCP发送方的发送窗口大小必须小于该值。

可变窗口进行流量控制图:

        窗口探测:为防止当发送方窗口为0, 而接收方发送的窗口更新报文段丢失而导致的死锁状态, 当发送方还有数据发送时, 会周期性地(如: 60s)发送只包含1个字节数据的窗口探测报文段, 以便强制接收方发回确认并通告接收窗口大小。

5.2.5 TCP拥塞控制

        慢开始: cwnd<ssthresh时, 每经过一个RRT(往返时间), 发送方的平均发送速率增加一倍

        2) 慢启动门限(ssthresh): 发生拥塞状态下窗口大小值的一半, 当cwnd>=ssthresh时, 启动拥塞避免算法

        3) 拥塞避免:当cwnd>=慢启动门限时, 就增加一个MSS大小, 按线性规律缓慢增长,直到发生拥塞。同时修改ssthresh。

 慢启动与拥塞避免算法图:

 快重传快恢复图:

        发送窗口上限值: Min( rwnd, cwnd ) 

第六章 应用层

6.1 网络应用体系结构

6.1.1 客户端/服务器结构

        客服端: 服务请求方, 不总是处于开机状态, 主动请求服务,客户端进程间不能直接通信。

        服务器: 服务提供方, 总是处于运行状态, 等待客户端请求, 服务器进程有固定端口号, 运行服务器的主机有固定的IP地址。

C/S模式图:

6.1.2 对等体结构

        没有固定的服务请求者和服务提供者, 分布在网络中的应用进程是对等的, 称为对等方, 每个对等方即是服务请求者, 又是服务提供者。最突出特性是它的可扩展性, 每增加一个对等方, 不仅增加服务请求者, 也增加了服务提供者。

P2P图:

        备注: 实践的网络应用组织是这两者的混合体

6.2 域名系统 DNS (Domain Name System)

       域名到 IP 地址的转换过程, 以UDP数据报方式发给本地域名服务器。

备注:

  • 多个IP地址可以映射到同一个域名上
  • 负载分配: 允许同一个主机名对应一个IP 地址集合; 热门网站可以多个服务器, 共享同一个域名
  • 一台主机可以映射到多个域名上
  • 每一级域名由数字和英文字母组成,不超过63个字符, 完整的的域名不超过255字符。

三类顶级域(TLD):

  • 国家顶级域名: 如 cn 中国 、us 美国 、 uk 英国。
  • 通用顶级域名:如 com 公司企业、 net 网络服务机构、org 非营利性组织、int 国际组织。
  • 反向域: 用于反向域名解析, 将IP 反向解析为域名

域名空间树状图:

四种域名服务器:

  • 根域名服务器: 不直接把待查询的域名转成IP地址, 知道所有顶级域名服务器的域名及其IP 地址
  • 顶级域名服务器: 收到DNS请求可能返回结果, 也可能是下一级权威服务器名服务器的IP地址
  • 权威服务器: 负责管理某个区的域名服务器, 每一个主机的域名都必须在某个权威域名服务器处上登记 (总能将其管辖的主机名转化为IP地址)。也知道其下级权威域名服务器地址。
  • 本地域名服务器: 起DNS代理作用, 将查询报文转发到域名服务器登记结构中。

DNS划分区图:

域名解析过程:

        递归查询:  主机向本地域名服务器的查询一般是递归查询, 即本地域名服务器不知道被查询域名的IP地址时, 本地域名服务器以DNS客户的身份向某个根域名服务器发出查询请求报文(替该主机查询)。

        迭代查询:   本地向根域名服务器发出请求后, 根域名服务器将顶级域名服务器的IP 地址告诉本地服务器,由本地服务器再向顶级服务器发出查询, 以此类推,直到向权威服务器查询到结果。

示例图: 

高速缓存域名服务器:

        1) 缓存最近查询过的域名。重复查询相同域名时, 不必在向根域名服务器发起请求。

        2) 由于IP 地址的绑定可能会发生变化, 缓存的域名会内置计时器(一般是48小时), 到时后将删除缓存。

        3) 增加时间值可以减少网络开销, 减少此时间值可提高域名解析的准确性。

6.3 文件传送协议 FTP (File Transfer Protocol)

        FTP基于客户/服务器体系结构, 主进程, 负责接受请求; 若干个从属进程, 负责处理单个请求, 由此两大部分组成。

两个从属进程:

        1) 控制进程: 控制连接在整个会话期间一直保持,接受客户端发出的各种命令。

        2) 数据传输进程: 数据连接是非持续的, 即上传完一个文件后就关闭连接。分以下两种模式: 主动模式PORT服务器通过20端口连接到客户端; 被动模式PASV, 客户端连接到服务器随机端口

原理图:

6.4 电子邮件 (SMTP&POP3)

        电子邮件采用客户端/服务器体系结构, 采用 SMTP(Simple Mail Transfer Protocol) 简单邮件传送协议POP3(Post Office protocol) 邮局协议。

        用户代理(User Agent): 用户与电子邮件系统的接口, 又称电子邮件客户机软件。  

原理图:

两种不同通信方式:

  • 推: 发件人通过 STMP 协议将邮件 "推" 给用户代理, 用户代理将邮件 "推" 接受方服务器。 
  • 拉: 收件人通过 POP3 把邮件从服务器中 "拉" 过来。

TCP/IP体现的电子邮件地址格式:

收件人@邮箱所在邮件服务器的域名

IMAP(Internet Message Access Protocol)与POP3:

        1) POP3: 邮件协议第三版, 提供下载并删除下载并保留的两种工作方式。

        2) IMAP: 因特网邮件访问协议, 在POP3的工作方式基础上, 可以管理服务器上的邮件。允许用户代理只获取报文的某些部分。

MIME (Multipurpose Internet Mail Extensions) 多用途网际邮件扩充:

        基于HTTP的电子邮件: 客户端到服务器之间使用 HTTP, 而不同服务器间使用 SMTP 协议。 

示意图:

6.5 万维网 WWW (World Wide Web)

        万维网以客户端/服务器方式工作。

        超文本: 带有链接的文本,也叫超链接。

        超媒体: 包含文本信息及其他多媒体对象, 如图形、声音、视频等。

        超文本传送协议: HTTP

        超文本标记语言: HTML

        URL的格式: <协议>://<主机>:<端口>/<路径>, Uniform Resource Locator即统一资源定位符。

        超文本传送协议 HTTP: 默认端口80, 使用TCP传输层协议, 是无状态协议, 即同一个客户上一次对服务器的访问不影响下一次的访问结果。

HTTP请求过程图:

非持续与持续连接:

        1) HTTP/1.0 协议: 采用非持续连接方式, 即一次请求/响应对应一次TCP连接(三次握手)。

        2) HTTP/1.1 协议: 使用持续连接方式, 即响应后仍然保持这条连接。此协议还可以使用流水方式工作, 即收到HTTP的响应报文前,就可以连续发送多个请求报文。

区别图:

HTTP的报文格式:

HTTP请求报文的方法:

状态码:

        Cookie: 对无状态的HTTP进行状态话的技术

Cookie原理图:

万维网缓存与代理服务器***:

        1) web缓存: 即万维网缓存, 可位于客户机或中间系统, 在中间系统称为代理服务器。当请求到达时,若主机有请求的缓存, 则返回缓存的响应报文。

        2) web缓存命中率较高时,可减少访问因特网的时延, 代理服务器另一个作用是可以用来隔离内外网络。

        3) 实际上web 对象可能被缓存在从浏览器到原始服务器路径的多个地方, 服务器为每个响应的对象设定一个修改时间和有效时间, 对象到期前, 可以直接返回缓存对象, 到期之后,缓存会使用条件GET请求向原始服务器验证对象是否存在最新版, 若修改则返回新版本对象。

6.6 动态主机配置协议 DHCP (Dynamic Host Configuration Protocol)

        允许一台计算机加入新的网络和获取IP地址而不用手工参与,称为即插即用连网。

原理:

        DHCP 使用客户端/服务器方式。

        需要自动获取IP地址的主机启动时在本网用UDP广播发送一个DHCP发现报文,其目的IP地址为255.255.255.255,自己的IP 地址默认为全0。

        通过DHCP 中继代理转发DHCP发现报文。

        DHCP 服务器通过UDP回应DHCP中继代理一个DHCP提供报文, 包含IP地址等配置信息。

        DHCP 中继代理在将此DHCP提供报文发回给主机。

注: 以上部分内容及图片参考王道计算机网络!!!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐