最近更新文章
- 编程导论:2.3.计算机网络 计算机网络介绍
- 编程导论:2.3.计算机组成原理 计算机组成原理
- 编程导论:2.3.操作系统 操作系统介绍
- 编程导论:2.3.数据库及其管理系统 简要介绍数据库及数据库管理系统知识。
- 编程导论:2.4.区块链 简要介绍区块链
编程导论:2.3.计算机网络
计算机网络介绍
概述
互联网概述
21世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。
网络可以分为电信网络、有线电视网络和计算机网络。20世纪90年代以后,以Internet为代表的计算机网络得到了飞速的发展和广泛应用。
Internet的现有译名有:
- 因特网
- 互联网。事实上的译名。
互联网是由数量极大的各种计算机网络互连起来的,覆盖全球。仅在局部范围互连起来的计算机网络,只能称之为互连网internet。
互联网的两个重要基本特点是连通性和共享。
互联网基础结构发展的三个阶段:
- ARPANET 到 互连网。1969年美国国防部创建的第一个分组交换网ARPANET最初只是一个单个的分组交换网。1983年TCP协议成为ARPANET上的标准协议。1990年ARPANET正式宣布关闭。
- 三级结构的互联网。从1985年起,美国国家科学基金会NSF建立NSFNET,三级分别是主干网、地区网和校圆网(或企业网)。
- 全球范围的多层次ISP结构的互联网。1993年开始NSFNET被商用的互联网主干网替代。
互联网服务提供商ISP从互联网管理机构申请IP地址并向下分配。
互联网交换点IXP允许两个网络直接相连并交换分组,而不经过更上层的ISP。
于20世纪90年代。由欧洲原子核研究组织CERN开发的万维网WWW(Worid Wide Web)被广泛使用在互联网上。
互联网的标准化:1992年成立的互联网协会ISOC下的技术组织作互联网体系结构委员会IAB负责互联网有关协议开发。IAB下设工作组WG论坛互联网工程部IETF和研究组RG论坛互联网研究部IRTF。所有的互联网标准经过互联网草案、建议标准(RFC文档)、互联网标准(STD编号文档)三个阶段。
互联网的组成:
- 边缘部分:主机组成,用户直接使用的部分。常见通信方式为客户-服务器方式(C/S方式)和对等方式(P2P方式)。
- 核心部分:网络和路由器组成,为边缘部分提供服务的部分。
交换:按照某种方式动态地分配传输线路的资源。
路由器最重要的功能是分组交换:
- 电路交换:电话直接连接交换机交换。经过建立连接——通话——释放连接的过程。特点是在通话的全部时间内,通话的两个用户始终占用端到端的通信资源;线路的传输效率往往很低。
- 报文交换:采用存储转发技术,将整个报文转发。
- 分组交换:采用存储转发技术,将报文拆分,添加首部,形成分组/包,然后转发。特点是高效、灵活、迅速、可靠。
计算机网络概述
计算机网络,简称网络,由若干节点(node)和连接这些节点的链路(link)组成。若干网络的连接就是互连网。
计算机同网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和曰益增长的应用。
可以分类:
- 按作用范围:广域网WAN,城域网LAN,局域网MAN,个人区域网PAN。
- 按使用者:专用网,公用网。
- 接入到互联网的网络:接入网AN。
指标有:
- 速率:传输比特每秒
- 带宽:最高传输比特每秒
- 吞吐量:实际传输比特每秒
- 时延:分为发送时延(主机或路由器发送数据顿所需要的时间,发送速率决定),传播时延(电磁波在信道中传输时间,传输速率决定。电磁波在1km电缆的传播时延约为5s),处理时延(接受分组所需要的时间),排队时延(分组排队然后转发排队所需要的时间)。
- 时延带宽积:传播时延*带宽,即以比特为单位的链路长度。
- 往返时间RTT。
- 有效数据率:数据长度/(时延+RTT)。
- 利用率:信道利用率(信道使用时间占比),网络利用率(信道利用率加权平均)。有网络利用率=1-空闲时延/当前时延。
- 费用
- 质量
- 标准化
- 可靠性
- 可扩展性和可升级性
- 易于管理和雄护
计算机网络体系结构
用实体代表任何发送或接收信息的硬件或软件进程。
协议是控制两个对等实体(或多个实体)进行通信的规则的集合,即为进行网络中的数据交换而建立的规则、标准或约定。由语法、语义和同步三个要素组成。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务(服务访问点SAP)。要实现本层协议,还需要使用下面一层所提供的服务。

物理层
基本概念
物理层考虑比特传输。
物理层协议通常称为规程。
物理层的主要任务为确定与传输媒体的接口有关的一些特性:
- 机械特性指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等。
- 电气特性指明在接口电缆的各条线上出现的电压的范围。
- 功能特性指明某条线上出现的某一电平的电压的意义。
- 过程特性指明对于不同功能的各种可能事件的出现顺序。
数据通信的基础知识
数据通信模型

通信的目的是传送消息(mesage)。话音、文字、图像、视频等都是消息。数据(data)是 运送清息的实体。根据RFC4049给出的定义,数据是使用特定方式表示的信息,通常是有意义的符号序列,信号(sgna) 则是数据的电气或电磁的表现。
信号分为:
- 横拟信号,或连续信号——代表清息的参数的取值是连续的
- 数字信号,或离散信号——代表消息的参数的取值是离散的
信道
信道一般都是用来表示向某一个方向传送信息的媒体,分为:
- 单向通信又称为单工通信,即只能有一个方向的通信而没有反方向的交互。
- 双向交替通信又称为半双工通信,即通信的双方都可以发送信息,但不能双方同时发送
- 双向同时通信又称为全双工通信,即通信的双方可以同时发送和接收信息。
调制
来自信源的信号常称为基带信号,需要调制,分为:
- 基带调制/编码:波形变换,使它能够与信道特性相适应,仍然是基带信号。常用编码方式有
- 不归零制:正电平代表1,负电平代表0。
- 归零制:正脉冲代表1,负脉冲代表0。
- 曼彻斯特编码:位周期中心的向上跳变代表0,位周期中心的向下跳变代表1。但也可反过来定义。
- 差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表0, 而位开如边界没有跳变代表1。
- 带通调制:使用载波(carier)进行调制,,把基带信号的频率范围搬移到较高的频率范围内,并转换为模拟信号(即带通信号),分为:
- 调幅(AM),即载波的振幅随基带数字信号而变化。
- 调频(FM),即载波的频率随基带数字信号而变化。
- 调相(PM),即载波的初始相位随基带数字信号而变化。
- 振幅相位混合调制方法,如正交振幅调制QAM
信道极限容量
数字通信的优点:信号在信道上传输时必然会失真,但只要能识别出原有信号,就没有影响。 传输速率越高,或距离越远,或噪声越大,失真就越严重。
信道具有极限容量:
- 奈氏准则:在带宽为W Hz的低通信道中,若不考虑噪声影响,则码元传输的最高速率是2W 码元/秒。否则出现码间串扰(码元无法分割)。
- 香农公式:信道的极限信息传输速率C = W log2(1 + S/N), S/N为信噪比(但通常取log2,以分贝为单位)。带宽越大,信噪比越大,极限传输速率越高。
另一种提高传输速率的方法:通过编码让每个码元携带更多比特的信息。
传输媒体
即数据传输系统中在发送器和接收器之间的物理通路,也称为传输介质或传输媒介,分为:
导引型传输媒体
- 双绞线:两根互相绝缘的铜导线并排绞合
- 无屏蔽双绞线UTP:pvc套层
- 屏蔽双绞线STP:pvc套层+铝箔F/金属S屏蔽层+接地线,标记为x/UTP。若每一对双绞线都加上S屏蔽层,则称为FTP。
- 同轴电缆:内导体铜质芯线+绝缘层+网状编织的外导体屏蔽层
- 光缆:光导纤维。可以存在多条不同角度入射的光线在一条光纤中传输(多模光纤)。
非导引型传输媒体
- 无线传输
- 信噪比越大,误码率就越低
- 更高数据率的调制技术的误码率也更高
- 微波接力通信,实现远距离通信
- 频率很高,其频段范围也很宽,因此其通信信道的容量很大。
- 受工业干扰和天电干扰小,波传输质量较高。
- 微波接力通信建设投资少,见效快,易于跨越山区、江河。
- 相邻站之间必须直视
- 受到恶劣气候的影响。
- 隐蔽性和保密性较差。
- 中继站的使用和维护要耗费较多的人力和物力。
- 卫星通信
- 通信距离远,且通信费用与通信距离无关,费用高
- 卫星通信的频带很宽,通信容量很大,信号所受到的干扰也较小,通信比较稳定。
- 具有较大的传播时延
- 覆盖面很广
- 保密性则相对较差
信道复用技术
复用器(muiplexer)总是和分用器(demultiplexer)一起使用的。
频分复用FDM
各用户的信号在同样的时间占用不同的带宽资源。使用其共享信道称为频分多址接入FDMA
时分复用TDM
所有用户是在不同的时间占用同样的频带宽度。时分复用的信道利用率比较低。使用其共享信道称为时分多址接入TDMA。
统计时分复用STDM
集中低速用户的数据统一发送。STDM不是固定分配时隙,而是按需动态地分配时隙。
波分复用WDM
即光的频分复用。光信号传输一定距离后会衰减,因此需要使用光纤放大器放大后继续传输。
码分复用CDM
每个比特时间再划分为m个短的间隔(码片),每个站具有一个m bit码片序列(发送1就发送原码,发送0就发送反码)。
要求各码片序列正交、码片序列规格化内积为1。接受时,计算接受的码片序列与自己的码片序列的内积,为1/-1则为1/0,为0则未发送
码分复用CDM实现了扩频(直接序列扩频DSSS,还有一种为跳频扩频FHSS),扩大了m倍
数字传输系统
数字通信相比模拟通信,在传输质量和经济上都更好。
光纤是长途干线最主要的传输媒体。
同步数字序列 SDH 和同步光纤网 SONET 是当前最主要的数字传输国际标准。简称 SONET/SDH 标准
宽带接入技术
用户需要连接到ISP,获得IP,即宽带接入。
非对称数字用户线ADSL技术
用数字技术对现有模拟电话的用户线进行改造。4kHz以下通话,高频上网。
用户一般都是下载,ADSL 的下行带宽远大于上行带宽,所以叫做非对称。
ADSL 的好处是可以利用现有的电话线,缺点是传输距离有限,并且不能保证固定的数据率。ADSL 的速率依赖于用户线的质量、长度、线径等。
ADSL在用户线(铜线)的两端各安装一个ADSL解调器。采用基于频分复用的 DMT 调制技术,将 4kHz 以上的频带划分为许多子信道,其中 25 个子信道用于上行,249 个子信道用于下行。
光纤同轴混合HFC网
基于有线电视网,原有线电视网中的同轴电缆主干部分改换为光纤,在光纤结点处光信号转换为电信号。
光纤节点与头端的典型距离为25km,而从光纤节点到其用户的距离则不超过2~3km。
用户通过电缆调制解调器来使用 HFC 网,以解决共享信道中的冲突问题。
HFC 网的数据率大小不确定,取决于传送数据的用户数。
光纤到户FTTx 技术
光纤进入用户家中后才把光信号转换为电信号,多个用户通过波分复用的光配线网共享,上行和下行使用不同的波长。
数据链路层
考虑链路上帧的传输,每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等).
点对点信道
基本定义
链路(ink)就是从一个节点到相邻节点的一段物理线
数据链路(datalink)既包含物理线路也包含必要的通信协议,将实现协议的软件和硬件加到链路上就构成了数据链路。使用网络适配器来实现这些协议
点对点信道的数据链路层在通信时的主要步骤:
- 结点A的数据链路层把网络层交下来的IP数据报加上首部和尾部封装成帧。
- 结点A把封装好的帧发送给结点B。
- 结点B对接收到的帧进行差错检验,若无差错,从帧中提取出IP数据报上交给网络层,若有差错丢弃这个帧。
基本问题
封装成帧
给 IP 数据报加上首部和尾部就构成了数据链路层的帧,IP 数据报成为帧的数据部分。首部和尾部包括帧定界符(即确定帧的界限)和其他控制信息。
链路层协议规定了帧中数据部分的长度上限——最大传送单元(MTU)。
帧定界符包括开始符(SOH 0x01)和结束符(EOT 0x04),分别是一串8为二进制数字,用于确定帧的界限。当出现差错时可以根据帧定界符识别是否是一个完整的帧。
透明传输
透明传输是因为控制字符产生的。表示无论传送什么样的数据,都能按照原样无差错地通过数据链路层。
字节填充:因为存在帧定界符,如果传输的数据中出现了和SOH、EOT等控制字符一样的文本,就在文本前面插入一个转义字符(ESC 0x1B),接受端收到数据后在发送给网络层之前删除这个插入的转义字符。如果ESC也出现在数据中,就在它前面再插入一个ESC。
差错检测
比特在传输过程中可能会产生差错,几率就是为误码率BER。
通过循环冗余检验CRC检验
循环冗余检验使用硬件完成,速度很快。
循环冗余检验只能识别比特差错,无法识别帧丢失、帧重复、帧失序,因此不是可靠传输。
对于通信质量较差的无线传输链路,数据链路层协议使用帧编号、确认和重传机制。即接收方收到正确的帧就向发送方发送确认,如果发送方没有收到确认就表明出现差错,就进行重传直到收到对方的确认。
对于通信质量较好的有线传输链路,只进行CRC检验,不使用确认和重传机制,即不需要数据链路层向上提供可靠传输,而是由上层协议来改正差错。
点对点协议PPP
PPP 协议是用户和 ISP 通信时使用的数据链路层协议。
特点
需求:
- 简单
- 封装成帧
- 透明性
- 支持多种网络层协议
- 支持多种类型链路
- 差错检测
- 检测连接状态
- 设置最大传送单元MTU(数据部分的最大长度)
- 网络层地址协商
- 数据压缩协商
组成:
- 一个将 IP 数据报封装到串行链路的方法。
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
- 一套网络控制协议 NCP,其中的每一个协议支持不同的网络层协议。
帧格式

F是定界符。当协议字段为0x0021时,PPP桢的信息字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据。信息字段的长度是可变的,不超过1500字节。尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS.
异步传输时,定义转义符为0x7D:
- 对ASCII控制字符,加0x20,前附转义符
- 对0x7D和0x7E,减0x20,前附转义符
同步传输时(SONET/SDH链路上),每五个1插入一个0
工作状态
当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP顿),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。这样,用户个人电脑就成为互联网上的一个有中地址的主机了当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。

使用广播信道的数据链路层
广播信道可以进行一对多的通信。
局域网
局域网用的就是广播信道。
局域网可以按照拓扑结构进行分类为星形网、环形网和总线网。
局域网的最主要特点:网络为一个单位所拥有,且地理范围和站点数目都有限。
局域网的优点:
- 具有广播功能,可以从一个站点很方便地访问全网。局域网上的主机可以共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩张和逐渐演变
- 提高了系统的可靠性、可用性和生存性。
以太网是局域网的一种,绝大多数局域网都是以太网。双绞线是局域网中的主流传输媒体。
实现共享信道有两种方法:
- 静态划分信道,如频分复用、时分复用、码分复用等,但不适合局域网。
- 动态媒体接入控制,又称多点接入。特点是信道并非在用户通信时固定分配给用户。
- 随机接入:特点是用户可以随机地发送消息。如果有两个用户同时发送,在共享媒体上就会产生碰撞,是发送失败。这时就需要解决碰撞的网络协议,即 CSMA/CD 协议。
- 受控接入:特点是用户不能随机发送信息而必须服从一定的控制。
以太网应用的主要是随机接入。
由于历史原因以太网层被拆分为两个子层:逻辑链路控制 LLC 和媒体接入控制 MAC。现在 LLC 基本已经消失了,主要是 MAC 协议。
适配器的作用:
- 计算机与外界局域网的连接是通过适配器进行的,适配器以前又称网卡。
- 适配器和局域网之间的通信通过电缆或双绞线以串行传输方式进行的,而适配器与计算机之间的通信是通过 I/O 总线并行传输的,因此适配器的一个重要功能就是进行数据串行传输和并行传输的转换。
- 适配器实现的功能包含了数据链路层和物理层两个层次的功能。
- 适配器收到正确的帧后,使用中断来通知计算机,并把数据交付给协议栈中的网络层。当计算机要发送 IP 数据报时,就由协议栈把分组交给适配器,适配器将其组装成帧后发送到局域网。(封装成帧、透明传输、差错检错等功能都是由适配器完成的)
- 计算机的硬件地址存储在适配器中,而软件地址——IP地址存储在计算机中。
CSMA/CD协议
局域网上的计算机常被称为工作站、站点等。
为了通信的简便,以太网采取了以下两种措施:
- 采用较为灵活的无连接的工作方式,即不必建立连接就可以直接发送数据。适配器对发送的数据帧不编号,也不要求对方发回确认。它提供的是尽最大努力的交付,是不可靠的交付。对有差错帧是否进行重传由高层来决定。
- 同一时间只能有一台计算机发送数据,如果发生冲突,就使用 CSMA/CD 协议来协调。
- 以太网发送的数据使用的是曼彻斯特编码。
CSMA/CD 协议的要点:
- 多点接入:说明是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质就是载波监听和碰撞检测。
- 载波监听:使用电子技术检测信道上有没有其他计算机也在发送。不管是发送前还是发送中,每个站都要不停地检测信道。
- 碰撞检测:边发送边监听。如果几个站同时发送数据,总线上的信号电压变化会增大,就表明发生了碰撞。这时就立即停止发送。
CSMA/CD不能同时发送和接收,因此只能进行半双工通信。
发生碰撞是因为传播时延$\tau$(单向数据发送但未传到目的地,因此反方向数据发送)。采取的措施是截断二进制指数退避算法:
- 基本退避时间为 2$\tau$,规定最短帧长512bit,更小的帧直接抛弃,对应512比特时间,对于10Mbit/s以太网,具体的争用期时间是51.2微秒。
- 从形如$2^k-1$的数内选取一个随机数,乘以基本退避时间,作为重传推迟时间。k的上界为$min(重传次数,10)$
- 仍然碰撞则重试,16次重传失败后,丢弃帧并报告。
- 同时规定进行强化碰撞:碰撞时继续发送32bit/64bit的人为干扰信号
- 同时规定帧间最小间隔 96 比特时间,这是为了使刚收到数据帧的栈清理缓存,准备接收下一帧。
CSMA/CD 协议的要点归纳为:
- 准备发送:适配器从网络层获得一个分组,加上首部和尾部组成以太网帧,放入适配器缓存中。在发送前先检测信道。
- 检测信道:若检测到信道忙,则不停地检测直到信道空闲。若检测到空闲,并在 96 比特时间内保持空闲(保证了帧间最小间隔),就发送这个帧。
- 在发送过程中仍不停地检测,即适配器要边发送边监听。这时有两种情况
- 发送成功:争用期内一直未检测到碰撞。发送成功后回到 1。
- 发送失败:争用期内检测到碰撞,立即停止发送,并按规定发送人为干扰信号。适配器接着执行指数退避算法,等待足够时间后回到 2。若重传 16 次仍不成功,就停止重传并向上报错。
- 以太网发送完一帧后要把已发送的帧保留一下。如果争用期检测到碰撞,推迟一段时间后还要重传。
使用集线器的星形拓扑
现在的以太网采用星形拓扑,在星形中心使用可靠性非常高的集线器。每个站用两对双绞线,分别用于发送和接收。
集线器的特点:
- 表面上使用集线器的局域网在物理上是一个星形网,但是在逻辑上仍是一个总线网,各站共享逻辑上的总线,还是使用 CSMA/CD 协议。
- 一个集线器有很多接口,像是一个多接口的转发器。
- 集线器工作在物理层,每个接口仅负责转发比特,不进行碰撞检测。
- 集线器采用了专门的芯片,进行自适应申音回波抵消。这样就可使端口转发出去的较强信号不致对该端口接收到的较弱信号产生干扰。
以太网的信道利用率
定义$\alpha = \tau / 帧发送时间$,则不考虑碰撞影响,有$信道利用率=1/(1+\alpha)$
MAC层
局域网中,硬件地址又叫 MAC 地址。IEEE 为局域网规定了一种 6 字节的全球地址,是局域网上的每一台计算机中固化在适配器中的地址。因此如果更换了新的适配器,硬件地址也就变了。适配器上的标识符 EUI-48 就是计算机的硬件地址。
路由器通过适配器连接到局域网时,适配器上的硬件地址标志路由器的一个接口。如果路由器同时连到多个网络上,就需要多个适配器有多个硬件地址。
局域网中适配器收到的帧有三种: 单播帧(一对一):即收到的帧的 MAC 地址与本站的地址相同。 广播帧(一对全体)。 多播帧(一对多)。
适配器至少能够识别前两种帧。
以太网适配器有一种特殊的工作方式:混杂方式。混杂方式的适配器只要”听到“有帧再传输就悄悄接收下来。
混杂方式可以用来监视和分析以太网上的流量,黑客也常用混杂方式非法获取信息。
常用的以太网MAC帧格式有两种标准,一种是以太网V2标准,另一种是IEEE的802.3标准。

MAC 帧没有帧定界符也没有帧长度字段。因为它用的是曼彻斯特码,曼彻斯特码的码元中间有一个电压跳变。当发送方发完一个帧后就不发送码元了,这是接收方发现没有跳变了就知道帧结束了。
MAC 帧在向下传送到物理层时要在帧前面插入 8 字节,包括一个前同步码和一个帧开始定界符。前同步码用来通知接收端调整时钟频率以与发送端的时钟同步。
MAC 帧的最小长度是 64 字节,其中数据字段最小长度是 46 字节。如果不够就要进行填充。IP数据报的首部有一个”总长度“字段,网络层根据它来识别填充字段的长度并丢弃掉。
扩展的以太网
在物理层扩展
可以使用光纤和一对光纤调制解调器来扩展主机和集线器之间的距离。
可以将多个以太网通过主干集线器连接起来形成一个更大的以太网。
多个以太网通过连接进行扩展后的优点是可以实现不同以太网间的通信,且扩大了地理范围。
缺点是碰撞域会增大,发送数据产生碰撞的概率增加;如果使用了不同以太网技术,那么就不可能用集线器将它们互连起来,速率会被不同以太网共同占有。
在数据链路层扩展
通过以太网交换机:
- 一个多接口的网桥,每个接口直接与一台主机或另一个交换机相连,一般工作在全双工方式。
- 并行性,可以同时连接多对接口,使多对主机同时通信。相互通信的主机都独占传输媒体,无碰撞地传输数据。这是最大优点。
- 即插即用设备,它内部的帧交换表(又称地址表)是通过自学习算法自动地逐渐建立起来的。
自学习机制:
- 若有主机发送数据,就把该主机的MAC地址与对应接口存入交换表。
- 若交换表中找不到数据接收方的对应接口,就对所有接口进行广播。
- 因对接口连接的主机可能会改变,主机的网络适配器也可能改变,所以交换表中的每个项目都有有效时间,时间过了就会删除。
总线以太网使用 CSMA/CD 协议,以半双工方式工作。 而以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作。
虚拟局域网VLAN
由一些局域网网段构成的与物理位置无关的逻辑组,这些网段具有某些共同的需求。
每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个 VLAN。

VID唯一地标志了802.1Q帧属于哪一个VLAN。12位的VID可识别4096个不同的VLAN。插入VLAN标签 后,802.1Q顿最后的锁检验序列FCS必须重新计算。
虚拟局域网是局域网给用户提供的一种服务,不是一种新型局域网。
高速以太网
100BASE-T以太网
100BASE-T 是在双绞线上传送 100Mbit/s 基带信号的星形拓扑以太网,仍使用 CSMA/CD 协议,又称快速以太网。
100BASE-T 可以使用以太网交换机,当使用以太网交换机时工作在全双工状态,且不使用 CSMA/CD 协议。
快速以太网使用的 MAC 帧格式仍然是 IEEE802.3 标准规定的帧格式。但具体争用期、帧间最小间隔均变为1/10.
吉比特以太网
其标准IEEE802.3z有有以下几个特点:
- 允许在 1Gbit/s 下以全双工和半双工两种方式工作。
- 使用 IEEE 802.3 协议规定的帧格式。
- 在半双工方式下使用 CSMA/CD 协议,在全双工方式不使用。
- 与 10BASE-T 和 100BASE-T 向后兼容。
吉比特以太网在半双工时,采用了“载波延伸”方法,延长争用期与发送的 MAC 帧最小长度到 512 字节。这在发送短帧时需要进行大量填充造成了额外开销。
还增加了“分组突发”的功能,当很多短帧要发送时,第一个短帧采用载波延伸的方法进行填充,后面的则一个接一个地发送而不需填充。
10吉比特以太网和更快的以太网
10GbE(及更高速度的以太网)只工作在全双工方式,不使用 CSMA/CD 协议,不存在争用问题,这使它的传输距离极大地提高。
现在以太网的工作范围已经扩大到城域网和广域网,它的优点是:
- 技术成熟。
- 互操作性好。
- 价格便宜。广域网中使用以太网时价格比同步光纤网SONET便宜很多。
- 端到端的以太网连接使帧的格式全都是以太网的格式,不需要进行帧格式转换。
以太网的发展证明了以太网的优点:
- 可扩展(从 10Mbit/s 到 10 Gbit/s)。
- 灵活(多种媒体、全/半双工,共享/交换)。
- 易于安装。
- 稳健性好。
使用以太网进行宽带接入
现在也使用以太网进行宽带接入互联网。
以太网接入可以提供双向的宽带通信,且可以根据需要灵活地升级(如从 10M 到 10G)。
但是以太网的帧格式中没有用户名字段和让用户键入密码来鉴别用户身份的过程。于是诞生了 PPPoE(在以太网上运行PPP),它把 PPP 协议中的 PPP 帧封装到以太网中来传输。现在的光纤宽带接入 FTTx 都是用 PPPoE。
网络层
为分组交换网上的不同主机提供通信服务,将运输层报文段或用户数据报封装成分组或包进行传输。
网络层提供的两种服务
网络层提供的服务可以是“面向连接的”或是“无连接”的服务。
用于打电话的传统电信网使用面向连接的通信方式,它先建立连接预留出网络资源(建立一条虚电路),然后再传送信息,提供的是可靠传输的服务。
互联网采用的是无连接的方式,发送分组时不需要建立连接。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。这样使造价降低,运行灵活。
网际协议IP
这里的 IP 是 IP 协议的第 4 个版本,实际叫做 IPv4。较新的还有 IPv6。
与 IP 协议配套的还有三个协议:
- 地址解析协议 ARP
- 网际控制报文协议 ICMP
- 网际组管理协议 IGMP
虚拟互连网络
不同网络的区别很大,因为没有一种单一的网络能够适应所有用户的需求。因此需要通过一些中间设备将网络连接起来。根据所在层次,可以将中间设备分为以下四种:
- 物理层使用的叫转发器。
- 数据链路层使用的叫网桥或桥接器。
- 网络层使用的叫路由器。
- 网络层以上使用的叫网关。
在物理层使用转发器或在数据链路层使用网桥时,仅是把一个网络扩大了。从网络层看,这还是一个网络,不是网络互连。网络互连是在网络层通过路由器实现的。
都使用 IP 协议的网络互连以后叫虚拟互连网络,含义是这些在物理层面不同的网络在网络层看起来好像是一个统一的网络,又叫 IP 网。现在的互联网就是使用了 IP 协议和 TCP 协议。
IP地址
整个互联网就是一个单一的、抽象的网络。IP 地址就是给互联网上每一台主机或路由器的每一个接口分配一个全世界唯一的 32 位的标识符,现在由ICANN分配。
IP 地址是 4 字节共 32 位字符,平常电脑上显示的是每个字节按转化为 10 进制后的结果,称为点分十进制法。
分类的 IP 地址 分类的 IP 地址就是讲 IP 地址划分为多个固定类,IP 地址 = {<网络号>,<主机号>}:主机号>网络号>
- 网络号标志主机所连接到的网络,一个网络号在整个互联网范围内是唯一的。
- 主机号标志该主机(或路由器),一个主机号在该网络号所指明的网络范围内是唯一的。

分类的 IP 地址分为以下 5 类: A 类、B 类、C 类都是单播地址,是最常用的。 D 类是用于多播(一对多通信)。 E 类地址保留为以后用。

分类是考虑到了不同网络间的差异性,有的网络主机很多,有的则很少。
后来形成了划分子网的方法,主机号内插入子网号,形成三级IP地址。
无分类域间路由选择CIDR 也称构造超网。 IP 地址 = {<网络前缀>,<主机号>}。在IP地址后面加上斜线,斜线后面是网络前缀所占的位数。主机号>网络前缀>

将前缀相同的连续的IP组织为一个地址块。通过地址掩码(子网掩码)与运算来获得网络前缀。
IP 地址有以下几个特点:
- 每一个 IP 地址都是由网络号和主机号两部分组成,是一种分等级的地址结构。这种结构有几个优点
- IP 地址管理机构在分配 IP 地址时只分配网络号,而主机号由得到网络号的单位内部自行分配。
- 路由器仅根据目的主机所连接的网络号来转发分组而不考虑主机号。这使路由表中的项目数大幅减少,减小了路由表的存储空间和查找时间。
- IP 地址是标志一台主机(或路由器)和一条链路的接口。如果一台主机同时连接到两个网络,它就有两个 IP 地址。
- 每个路由器至少连接到两个网络,所以一个路由器至少有两个不同的 IP 地址。
- 互联网中,一个网络指的是具有相同网络号的主机的集合。所以用转发器或网桥连接起来的若干局域网仍是一个网络。
- IP 地址中,所有分配到网络号的网络都是平等的,不管它的范围多大或多小。
IP地址与 MAC地址
注意:
- 在 IP 层抽象的互联网上只能看到 IP 数据报。虽然信息要经过路由器 R1 和 R2 的转发,但是 IP 报首部中的源地址和目的地址始终是 IP1 和 IP2。
- 虽然 IP 数据报首部有源地址,路由器只根据目的站的 IP 地址的网络号进行选择。
- 在局域网的链路层,只能看见 MAC 帧。MAC 帧在不同网络上传送时,MAC 帧首部中的源地址和目的地址要发生变化。
- IP 层抽象的互联网屏蔽了下层的复杂细节。只要在网络层上,就可以使用统一的、抽象的 IP 地址来研究主机和主机间的通信。
地址解析协议ARP
ARP 协议的用途是在同一个局域网内,从网络层使用的 IP 地址解析出数据链路层使用的硬件地址。
每台主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。主机的硬件地址可能会发生改变,因此该映射表会时常更新,映射表中的每个项目都有生存时间,超过生存时间的项目会被删掉。
当主机 A 向本局域网上的主机 B 发送 IP 数据报时有两种情况:
- 主机 A 的 ARP 高速缓存的映射表中有主机 B 的 IP 地址,就把对应的硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发给此硬件地址。
- 主机 A 的 ARP 高速缓存中没有 B 的 IP 地址。此时按以下步骤找出 B 的硬件地址:
- 主机 A 自动运行 ARP 进程,ARP 进程在本局域网上广播发送一个 ARP 请求分组。分组中指明了自己的 IP 地址与硬件地址,和主机 B 的 IP 地址。
- 本局域网上所有主机上运行的 ARP 进程都受到这个 ARP 请求分组。
- 主机 B 的 IP 地址与 ARP 请求分组中要查询的 IP 地址一致,收下分组,并向主机 A 发送响应分组,在其中写入自己的硬件地址。其他主机则不作响应。
- 主机 A 收到主机 B 的响应分组后,把主机 B 的 IP 地址到硬件地址的映射写入 ARP 高速缓存中。
ARP 解决的是同一个局域网上主机或路由器的 IP 地址到硬件地址的映射问题。它无法解析另一个局域网上主机的硬件地址,实际上也不用。
使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 报发到同一个网络上的另一台主机,如从 H1 到 H2,这时 H1 发送 ARP 请求分组(在网 1 上广播)找到 H2 的硬件地址。 2.发送方是主机,要把 IP 报发到另一个网络上的某一台主机,如从 H1 到 H3,这时 H1 发送 ARP 请求分组(在网 1 上广播)找到网 1 上的一个路由器 R1 的硬件地址。剩下的事情由 R1 完成。
- 发送方是路由器,要把 IP 报转发到与它连接在同一个网络上的主机,如 R1 到 H2,这时 R1 发送 ARP 请求分组(在网 2 上广播)找到主机 H3 的硬件地址。
- 发送方是路由器,要把 IP 报转发到另一个网络上的一台主机,如 R1 到 H3,这时这时 R1 发送 ARP 请求分组(在网 2 上广播)找到本网络上另一个路由器的硬件地址。
IP数据报的格式

- 版本。占 4 位,通信双方使用的 IP 协议的版本必须一致。
- 首部长度。 占 4 位,最大值是 15,注意其单位是 4 字节,也就是首部最大长度为 15*4=60 字节。首部长度必须是 4 字节的整数倍。因此可选字段后面还有一个填充字段。
- 区分服务。占 8 位,一般不使用,只有使用区分服务 DiffServ 时此字段才有意义,根据字段的数值为提供不同等级的服务质量。
- 总长度。占 16 位,最大值是 65535,是首部和数据部分的长度和,单位是字节。IP 数据报的长度还受到 MAC 帧最大长度的限制,因此不能太大。如果长度过长需要进行分片。分片后总长度指的是该分片的首部长度和数据长度之和。
- 标识。 占 16 位。同一个数据报的不同分片标识相同。因此接收方能根据标识将不同分片重装为原本的数据报。
- 标志。占 3 位。最低位为 1 表示后面还有分片,为 0 表示这是最后一个分片。中间位为 1 表示不能分片,为 0 表示可以分片。首位没有含义。
- 片偏移。占 13 位。片偏移指出:较长的分组分片后,某片在原分组的相对位置。单位是 8 字节,故每个分片的长度是 8 字节的整数倍。
- 生存时间。占 8 位。表明数据报在网络中的寿命。单位是跳数,指明了数据报在互联网中至多可经过多少个路由器。
- 协议。占 8 位。指明了数据报携带的数据使用了哪种协议。
- 首部检验和。占 16 位。这个字段只检验首部,不包括数据部分。数据报每经过一个路由器,路由器就要重新计算一下首部检验和。
- 源地址。占 32 位。
- 目的地址。占 32 位。
- 可变部分。长度可变,具有多种功能,但很少使用。IPv6 已经把这部分做成固定长度的了。
IP层转发分组
基于终点的转发
- 从数据报的首部提取出目的主机的 IP 地址 D,得出目的网络地址为 N。
- 若 N 就是与此路由器直接相连的某个网络地址,就直接交付,即直接把数据报交付目的主机;否则就是间接交付,执行 3。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器。否则执行 4。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表所指明的下一跳路由器,否则执行 5。
- 若路由表有一个默认路由,则把数据报传送给路由表所指明的默认路由器,否则执行 6。
- 报告转发分组出错。
采用CDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前级最长的一个作为匹配的前级
二叉线索优化
建立二叉Trie树
国际控制报文协议 ICMP
网际控制报文协议 ICMP 用于更有效地转发 IP 数据报和提高交付成功的机会。
ICMP 报文装在 IP 数据报中,作为其中的数据部分。
ICMP 报文的首部共 8 个字节,具体如下图。

其中检验和字段用来检验整个 ICMP 报文。
ICMP 报文包括 ICMP 差错报告报文和 ICMP 询问报文两类,每类下细分为几种不同的类型。

- ICMP 差错报告报文:
- 终点不可达:当路由器或主机不能交付数据报时就向源点发送此报文。
- 时间超过:路由器收到生存时间为 0 的报文时,除丢弃该数据报外,还要向源点发送此报文。当终点在约定时间内未收到一个数据报的全部分片时,就丢弃已收到的所有分片,并向源点发送此报文。
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段值不正确时,就丢弃该数据报并发送此报文。
- 改变路由(重定向):路由器把此报文发送给主机,以告诉主机下次将数据报发给另外的路由器。
- ICMP 询问报文:
- 回送请求报文和回答报文:回送请求报文是由主机或路由器向一个特定目的主机发出的询问。收到此报文的主机必须给源主机发送 ICMP 回送回答报文。
- 时间戳请求报文和回答报文:时间戳请求报文是请某台主机或路由器回答当前的日期和时间。通过它可以进行时钟同步和时间测量。
ICMP 差错报告报文的数据字段是固定格式的:把收到的需要进行差错报告的 IP 数据报的首部和数据字段的前 8 个字节(为了得到运输层的端口号和运输层报文的发送序号)提取出来作为 ICMP 报文的数据部分。
应用
PING、TRACEROUTE
IPv6
基本首部
IPv6 所引进的主要变化如下: (1)更大的地址空间。IPv6把地址从IPv4的32位增大到4倍,即增大到128位,使地 址空间增大了2”倍。 (2)扩展的地址层次结构。IPv6由于地址空间很大,因此可以划分为更多的层次。 (3)灵活的首部格式。IPv6数据报的首部和Pv4的并不兼容。IPv6定义了许多可选的 扩展首部,不仅可提供比中v4更多的功能,而且还可提高路由器的处理效率,这是因为路 由器对扩展首部不进行处理(除遂跳扩展首部外)。 (4)改进的选项。IPv6允许数据报包含有选项的控制信息,因而可以包含一些新的选项。 但IPv6的首部长度是固定的,其选项放在有效载荷中。 (5)允许协议继续扩充。 (6)支持即插即用(即自动配置)。因此IPv6不需要使用DHCP。 (7)支持资源的预分配。IPv6支持实时视像等要求保证一定的带宽和时延的应用。 (8)IPv6首部改为8字节对齐(即首部长度必须是8字节的整数倍)。原来的Pv4首部 是4字节对齐。
取消了首部长度字段,因为它的首部长度是固定的(40字节)。 取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。 取消了总长度字段,改用有效载荷长度字段。 取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中。 把TTL字段改称为跣数限制字段,但作用是一样的(名称与作用更加一致)。 取消了协议字段,改用下一个首部字段。 取消了检验和字段,这样就加快了路由器处理数据报的速度。 取消了选项字段,而用扩展首部来实现选项功能。

地址
IPv6 数据报的目的地址可以是以下三种之一:
- 单播:点对点通信。
- 多播:一点对多点的通信。
- 任播:任播的终点是一组计算机,但是数据报只交付其中一个,一般是最近的一个。
IPv6 地址有 128 位,采用冒号十六进制计法:每 16 位用 16 进制表示并用冒号隔开,因此共分为了 8 段,每段是一个不超过 4 位的 16进制数。


从IPv4 向 IPv6过渡
双协议栈
双协议栈即使一部分主机或路由器装有双协议栈:一个 IPv4 和一个 IPv6,当它与 IPv6 主机通信时使用 IPv6 地址,与 IPv4 主机通信时使用 IPv4 地址。
双协议栈使用域名系统 DNS 来查询目的主机使用哪一种地址。
隧道技术 当源主机和目的主机都采用 IPv6 时,中间经过的网络有可能是 IPv4 网络。
在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报作为数据部分封装到 IPv4 数据报中,等离开 IPv4 网络后在把数据部分取出来。
ICMPv6 ICMPv6 是应用于 IPv6 的 ICMP 协议版本,比 ICMPv4 复杂很多,地址解析协议 ARP 和网际组管理协议 IGMP 的功能都合并到了 ICMPv6 中。
ICMPv6 是面向报文的协议,利用报文来报告差错、获取信息。
互联网的路由选择协议
理想路由协议
- 正确的和完整的
- 计算上应简单
- 适应通信量和网络拓扑的变化
- 稳定性
- 公平的
- 最佳的
互联网采用的主要是动态的、分层次的路由选择协议:互联网被划分为许多小的自治系统(AS),一个 AS 是在单一技术管理下的一组路由器,一个 AS 对另一个 AS 表现出的是一个单一的和一致的路由选择策略。目前互联网中,一个大的 ISP 就是一个 AS。也可以进一步划分。
这样互联网就把路由选择协议分为了两类:
- 内部网关协议 IGP:如 RIP 和 OSPF 协议,是在一个 AS 内部使用的路由选择协议。每个 AS 自己决定在自己内部使用哪一种 IGP。
- 外部网关协议 EGP:如 BGP-4 协议,用在两个不同的 AS 之间的路由选择协议。每个 AS 中位于与其他 AS 交界处的路由器除了使用 IGP 外还要使用 EGP。
内部网关协议RIP
RIP 是一种分布式的基于距离向量的路由选择协议,最大优点是简单。
RIP 协议要求每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,距离的单位是跳数。RIP 选择一条具有最少路由器的路径。
RIP 允许一条路径最多有 15 个路由器,因此 RIP 只适用于小型互联网。
RIP 和 OSPF 同为分布式路由选择协议,特点是每一个路由器都要不断地和其他路由器交换路由信息。
RIP 的特点是:
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器知道的所有信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,比如 30s。
路由器刚开始的路由表是空的,通过不断地和与它直接相连的路由器交换并更新信息,经过多次更新(Beliman-Ford算法)后,所有的路由表就都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址了。
路由表中最主要的信息就是到某个网络的最短距离和下一跳地址。
RIP 存在的一个间题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
协议RIP最大的优点就是实现简单,开销较小。
内部网关协议 OSPF
使用了Dijkstra算法/SPF算法。
OSPF 是分布式的链路状态协议,适用于大型互联网。OSPF 只在链路状态发生变化时,才向本自治系统中的所有路由器用洪泛法发送与本路由器相邻的所有路由器的链路状态信息。
链路状态指明本路由器和哪些路由器相邻,以及该链路的度量(度量可表示费用、距离、时延、带宽等),所有的路由器最终都能建立一个全网的拓扑结构图。
外部网关协议 BGP
BGP 是 BGP-4 的简写。BGP 是不同 AS 的路由器之间交换路由信息的协议,是一种路径向量路由选择协议。BGP 力求寻找一条能够到达目的网络(可达)且比较好的路由(不兜圈子),而非寻找最佳路由。
IP多播
基本概念
在一对多的通信中,多播可以比单播节省很多资源。
局域网具有硬件多播功能,所以不需要复制分组就能使所有的多播组成员收到分组。
IP 多播所传送的分组需要使用多播 IP 地址。在传统的 IP 地址中的 D 类地址就是多播地址,每个 D 类地址可以标识一个多播组。
多台主机可以加入到一个多播组中共享一个多播地址。不同网络的主机可以加入到同一个多播组中。每一台主机可以随时加入或离开一个多播组。
能够运行多播协议的路由器为多播路由器。
多播地址只能用于目的地址,不能用于源地址。
IP 多播有两种
- 在本局域网上硬件多播。
- 在互联网范围内进行多播。
在局域网上进行硬件多播
多播 IP 地址与以太网硬件地址之间有映射关系,但不是一一对应的。收到多播数据报的主机需要在 IP 层进行过滤。
网际组管理协议IGMP和多播路由选择协议
IGMP 协议 用于让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。IGMP 工作在单个本地局域网内部。
因为主机随时可能加入或退出某个多播组。并且发送多播数据报的主机可以位于多播组内,也可以不位于多播组内。所以 IP 多播很复杂。
IGMP 协议的工作内容:
- 当某台主机加入某个多播组时,该主机向多播组的多播地址发送一个 IGMP 报文,声明自己成为了该组的成员。本地的多播路由器收到 IGMP 报文后还要转发给其他多播路由器。
- 组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机是否还是组的成员。
多播路由选择协议 多播路由选择协议有多种,尚未进行标准化。
多播路由选择协议在转发多播数据报时有以下三种方法:
- 洪泛与剪除。
- 隧道技术。
- 基于核心的发现技术。
目前的多播路由选择协议:
- 距离向量多播路由选择协议 DVMRP
- 基于核心的转发树 CBT
- 开放最短通路优先的多播扩展 MOSPF
- 协议无关多播-稀疏方式 PIM-SM
- 协议无关多播-密集方式 PIM-DM
虚拟专用网VPN和网络地址转换NAT
因为 IP 地址的紧缺。所以现在使用了一种“本地地址”。本地地址仅在本机构内部有效,不是全球唯一的地址,又称可重用地址。
本地地址只能用于一个机构的内部通信,不能和互联网行的主机通信。互联网中的所有路由器对目的地址是专用地址的数据报一律不转发。
IPv4 标准指明了以下地址为专用地址,他们只能作为本地地址用于机构内部的通信:
- 10.0.0.0-10.255.255.255
- 172.16.0.0-172.31.255.255
- 192.168.0.0-192.168.255.255
采用专用地址的网络称为专用互联网或本地互联网。
有时一个机构的分布范围很广,就需要用公共的互联网作为本机构各专用网之间的通信载体,这样的称为虚拟专用网 VPN。
VPN 依然只用于机构内的通信,但是要经过公用的互联网,通过互联网传送的数据都要加密。这里使用了隧道技术。
VPN 中每个不同的场所必须至少有一个合法的全球 IP 地址。
VPN 代理就是依托 VPN 技术进行的。
网络地址转换 NAT 用于实现专用网中的主机到互联网上的主机的通信。
它需要在专用网连接到互联网的路由器上安装 NAT 软件,这种路由器称为 NAT 路由器,NAT 路由器至少有一个全球地址。
使用本地地址的主机和外界通信时要在 NAT 路由器上将本地地址转换为全球地址。
NAT 路由器中有一个地址转换表,存储本地地址与转换后的全球地址的对应关系。
通过 NAT 路由器的通信必须由专用网内的主机发起,因此专用网内的主机不能作为服务器。
现在的 NAT 转换表把端口号也利用上了。这样 NAT 路由器只需要有一个全球地址,通过给具有不同本地地址的主机分配不同的端口号就可以实现内部多个主机与外界互联网的通信。
多协议标签交换 MPLS
PLs利用面向连接技术,使每个分组携带一个叫作标签(abel)的小整数(这叫作打上标签),当分组到达交换机(即标签交换路由器)时,交换机读取分组的标签,并用标签值来检索分组转发表。这样就比查找路由表来转发分组要快得多。
PLS具有以下三个方面的特点:(1)支持面向连接的服务质量。(2)支持流量工程, 均衡网络负载。(3)有效地支持虚拟专用网VPN。
软件定义网络SDN
运输层
向两台主机中进程之间的通信提供通用的数据传输服务。
基本概念
运输层的复用和分用:即发送方的不同进程通过不同的端口号使用同一个运输层协议,接收方的运输层则把收到的报文根据端口号分发给不同的进程。
运输层还要对收到的报文进行差错检测
运输层使用 16 位(即两字节)端口号来标志一个端口。端口号用来标志本计算机应用层中的不同进程。不同计算机间的端口没有关联。
这里的端口是软件端口,作为交互的地址使用,不同于路由器上的硬件端口。
端口号的分配:
- 运输层的端口号分为服务器端使用的端口号和客户端使用的端口号。
- 服务器端的端口号包括 0~49151(0xBFFF),其中 0~1023(0x0400) 是熟知端口号(又称系统端口号),剩下的是登记端口号。
- 客户端使用的端口号包括 49152(0xC000)~65535(0xFFFF)。这些端口号是给某个客户进程暂时使用的,通信结束后端口号就要恢复未分配状态。
用户数据报协议UDP
特点
- 无连接
- 尽最大努力交付
- 面向报文
- 无拥塞控制
- 支持一对一、一对多、多对一、多对多
- 首部开销小
接收方的主机收到 UDP 后不需要发出确认。
首部格式

UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。
UDP 的差错检验方法是各个 4 字节段的反码求和,和作为检验和序列放入检验和字段。检验时对数据报各个 4 字节段反码求和,若每一位都是 1 则无错。
传输控制协议TCP
特点
- 面向连接:使用 TCP 前要先建立连接,通信完后要释放连接。
- 点对点通信。
- 可靠传输:无差错、不丢失、无重复、按序到达。
- 全双工通信:TCP 的两端都设有发送缓存和接收缓存。发送时,应用程序把数据放到 TCP 的发送缓存后,TCP 在合适的时候把数据发送出去。接收时,TCP 把收到的数据放入接收缓存,应用进程合适时读取缓存中的数据。
- 面向字节流:流是流入到进程或从进程流出的字节序列。TCP 把应用进程交下来的数据看成一串无结构的字节流。
TCP 的报文长度是根据接收窗口和网络拥塞程度决定。如果应用进程一次往发送缓存中放了很长的数据,那 TCP 可能会把它划分为多个短的数据块发送,如果应用进程一次只发来一个字节,TCP 也可以等积累足够多的字节后再把它们构成报文段发出去。
连接
IP 地址加上端口号称为套接字,套接字就是 TCP 连接的端点。
套接字的格式: IP地址:端口号(如 192.168.100.2:80)
每一条 TCP 连接唯一地被它地两个端点的套接字所确定。
工作原理
停止等待协议
用来在不可靠的传输网络上实现可靠通信。
原理:每发送完一个分组就停止发送,等待对方的确认,收到确认后再发送下一个分组。分组需要进行编号。
出现差错
如果发送方发送的数据在传输过程丢失了,或者到达了接收方但是报文内容出了差错,那么接收方都不会发送任何信息。这时发送方超时没有收到确认,就会进行重传。
超时重传是超过一定时间没收到确认就要重传刚发送过的分组。实现方式是每发送完一个分组就设置一个超时计时器,重传时间比平均往返时间长一些,这又称自动重传请求 ARQ。
注意:
- 发送方在发送完一个分组后,必须暂时保留已发送的分组的副本,以在超时重传时使用,只有收到相应的确认后才能清除保留的副本(对照发送缓存和发送窗口的后沿来理解)
- 分组和确认分组都需要进行编号,以明确是哪个分组收到了确认,哪个没有收到(对照 TCP 报文首部中的序号和确认号来理解)。
- 超时计时器的重传时间要比平均往返时间长一些,具体重传时间设为多少是一个很复杂的问题。
确认丢失和确认迟到
如果接收方发送给发送方的确认丢失或迟到了,那么发送方超时未收到确认,也会进行重传。而接收方收到重传的报文后,会丢弃这个重复的报文,并向发送方发送确认。发送方收到了重复的确认会直接丢弃。
若对方收到重复分组,就丢弃该分组,同时还要发送确认。接收方收到重复的确认后不做任何操作。
提高信道利用率 停止等待协议的信道利用率很低,为了提高效率,采用了流水线传输方式,这用到了连续 ARQ 协议和滑动窗口协议
流水线传输就是发送方可以连续发送多个分组,而不必每发完一个分组都要停下来等待对方的确认。
连续ARQ协议
连续 ARQ 协议用来提高利用率,它规定:
- 发送方维持一个发送窗口,凡位于发送窗口内的分组都可以连续发送出去,而不需要等待对方确认。发送方每收到一个确认,就根据确认号将发送窗口向前滑动一定距离。
- 接收方采用累积确认:不必对收到的分组逐个发送确认,而是只需对按序到达的最后一个分组发送确认,表明这个分组以前的所有分组都正确收到。
由上可见,连续 ARQ 协议是在滑动窗口上实现的。滑动窗口协议是 TCP 协议的精髓。
报文段格式

- 序号:在一个 TCP 连接中传送的字节流中的每一个字节都要按顺序编号。首部中的序号字段存储本报文段发送的数据(是数据,不包含首部)的第一个字节的序号。序号字段只有 32 位,序号值不能超过 2^32。
- 理解:数据部分的每个字节都会占用一个序号。
- 确认号:首部中的确认号是期望收到对方下一个报文端的第一个数据字节的序号。若确认号为 N,表明到 N-1 为止的数据都已正确收到。
- 数据偏移:数据部分距报文起始点的偏移,实际等于首部长度。首部长度在 20~60 字节之间。 保留。保留为今后使用。
- 6个控制位:
- 紧急 URG:当 URG=1,此报文段需要尽快传送,优先级高。
- 确认 ACK:当 ACK=1,确认号字段有效。连接建立后的所有报文段都必须令 ACK=1。
- 推送 PSH:当 PSH=1,接收方收到报文后尽快交付应用进程,而非等缓存满了再交付。
- 复位 RST:当 RST=1,表明 TCP 连接中出现严重差错,需要释放连接再重新建立连接。
- 同步 SYN:当 SYN=1,表明这个一个连接报文。如果 ACK=0 则是连接请求报文,如果 ACK=1 表明这是连接接受报文。
- 终止 FIN:当 FIN=1,表明发送方已发送完数据,并要求释放连接。
- 窗口:窗口指的是发送本报文段的一方的接收窗口。首部中的窗口字段指出了从本报文段中的确认号算起,当前允许对方发送的数据量(以字节为单位)。
- 检验和:检验整个数据报。
- 紧急指针,当 URG=1 时才有意义,指出本报文段中的紧急数据的字节数。即使在窗口为 0 时也可以发送紧急数据。
- 选项:长度可变,最长 40 字节。选项有最大报文段长度 MSS、窗口扩大选项、时间戳选项、选择确认选项等。
- 最大报文段长度 MSS。为每一个 TCP 报文段中的数据字段的最大长度,而不是整个 TCP 报文段的最大长度。MSS 并不是一个标准固定值,而是可以由连接双方各自确定的值,且两个传送方向可以有不同的 MSS 值。MSS 的值可能达到几千字节。连接建立时,双方都把自己支持的 MSS 写入这个选项字段中,以后就按照这个值传送数据。如果未填写这一选项,那么 MSS 的默认值是 536 字节长。
- 窗口扩大选项。TCP 中窗口字段长度是 16 位,因此最大的窗口大小是 64K 字节。但是对于卫星网络,因为传播时延和带宽都很大,为了获得高吞吐率就需要更大的窗口。
- 时间戳选项。时间戳选项字段中包括时间戳值字段和时间戳回送回答字段。时间戳选项用来计算往返时间 RTT。发送方把发送报文时的时间放入时间戳字段,接收方在确认该报文时把时间戳字段值复制到它的时间戳回送回答字段中。这样发送方收到确认报文后就可以计算出 RTT 来。另一方面时间戳选项还可以用来防止序号绕回,因为 TCP 序号字段只有 32 位,序号值不能超过 2^32,所以可能出现具有相同序号的报文段,时间戳可以用来区分这样的报文段。
实现
TCP 使用滑动窗口机制。发送窗口里的序号表示允许发送的序号,发送窗口后沿的后面部分表示已发送且已收到了确认,发送窗口前沿的前面部分表示不允许发送。发送窗口的前沿会不断向前移动(也可能不动或后移),发送窗口的后沿可能不动(没有收到新的确认)也可能前移(收到了新的确认),不可能后移。
接收方会把接收窗口的值放到窗口字段中发给发送方,发送窗口的大小不能超过接收方传来的报文首部中的窗口字段值。
接收方发回的确认号是自己按序收到的数据的最高序号加1。
发送方会根据接收方发来的确认号和窗口字段来构造自己的发送窗口,确认号决定了发送窗口的后沿,窗口字段值和拥塞窗口共同决定发送窗口的大小。
发送窗口中的数据是可以直接连续发送出去的,所以发送窗口越大,可能获得的传输效率越高。
发送缓存
发送方维持一个发送缓存,其中存放准备发送的数据和已经发送但尚未收到确认的数据。
发送窗口是发送缓存的一部分。已被确认的的数据会被从发送缓存中删除,因此发送缓存和发送窗口的后沿是重合的。
应用进程向发送缓存写入数据时不能太快,否则填满发送缓冲后就没有存放数据的空间了。
实际发送/接收缓存和窗口中的字节数是非常大的。
接收缓存
接收方维持一个接收缓存,用来存放:按序到达的、尚未被接收应用程序读取的数据和未按序到达的数据。
接收窗口是接收缓存的一部分。如果应用程序来不及读取收到的数据,接收缓存就会被填满,使接收窗口减小到 0,反之接收窗口会增大,但最大不能超过接收缓存的大小。
TCP 没有明确规定如何处理未按序到达的数据,但通常是先临时存放在接收窗口中,等字节流中缺少的字节到达后,再交付给上层的应用进程。
累积确认
TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。
接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息捎带上。
但是注意接收方不能过分推迟发送确认,以避免发送方产生不必要的重传。如果收到一连串具有最大长度的报文段,则必须每隔一个报文段就发送一个确认。
TCP 的通信是全双工通信。通信中每一方都在发送和接收报文段,因此每一方都有自己的发送窗口和接收窗口。
超时重传时间的选择 最复杂的问题之一。
TCP 采用了一种自适应算法,它依据往返时间 RTT 来设置超时重传时间。
TCP 保留了一个 历史 RTT 的加权平均结果 RTTs。
RTTs 的计算方式:新的 $RTTs = (1-a)旧的 RTTs + a新的RTT$。a 建议取 0.125。
超时重传时间 RTO 比 RTTs 略大:RTO = RTTs + 4*RTTd。
| RTTd 是 RTT 的偏差的加权平均值:新的 $RTTd = (1-b)旧的 RTTd + b | RTTs - 新的RTT | $。b 建议取 0.25。 |
具体实现
要解决当报文重传的特殊情况。实现方式:报文段每重传一次,就把 RTO 增加一倍,当不重传了,就继续使用上述公式计算 RTO。
选择确认 SACK 当报文未按序到达,发送方需要重传收到的确认号之后的所有报文,而有些确认号之后的不连续的报文实际上已经到了,全部重传会浪费资源。选择确认用来解决这种情况 。 首部的选项中可以有选择确认 SACK 字段。SACK 使用两个字节块分别指明一个连续字段的开始位置和长度。最多可以指出 4 个连续字节块的边界情况。
SACK 应用不多。
流量控制
流量控制是为了让发送方的发送速率不要太快,要让接收方来得及接收。
流量控制是通过滑动窗口实现的。接收方会把接收窗口的大小放到给发送方的报文的窗口字段中。
发送方的发送窗口不能超过接收方给出的窗口字段的数值。
当接收方的接收窗口减小到 0,发送方停止发送数据后。过了一段时间 B 的接收窗口恢复了一些,但是它发给发送方的报文丢失了,然后 A 就会一直等待 B 发送的非零窗口的通知,而 B 也一直等待 A 发送的数据,这时就进入了死锁状态。
解决:TCP 每一个连接都设有一个持续计时器。只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器的时间到期,就发送一个零窗口探测报文段,对方则在返回这个探测报文段的确认报文时给出窗口值。
应用进程把数据传送到 TCP 的发送缓存后,剩下的发送任务就交给 TCP 来完成了。
Nagle 算法:发送方先把到达发送缓存的第一个数据字节发送出去,收到确认后,再把发送缓存中剩下的数据组装成报文段发送。收到前一个报文段的确认后再发送下一个报文段。当缓存中的数据达到发送窗口的一半大小或报文段最大长度后,就立即发送一个报文段。Nagle 算法用来避免发送方发送很小的报文段。
拥塞控制
拥塞就是当前对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能变坏。即对资源的需求 > 可用资源。
网络拥塞的成因往往十分复杂,并且拥塞常常趋于恶化。比如因为网络拥塞有报文未能按时到达,那么发送方就会超时重传使更多的分组进入网络,加剧网络拥塞。
拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。
流量控制是端到端的问题,是接收端抑制发送端发送数据的速率。拥塞控制是全局性的问题,涉及到所有的主机、路由器及相关因素。
TCP 连接的端点只要迟迟收不到对方的确认信息,就猜想网络中某处可能出现了拥塞。
网络拥塞的指标有:被丢弃的分组数,平均队列长度、超时重传的分组数、平均分组时延等。
TCP 的拥塞控制采取了慢开始、拥塞避免、快重传、快恢复四种算法。
这种方法是基于窗口的拥塞控制。发送方维持一个拥塞窗口,并让自己的发送窗口等于拥塞窗口(实际上发送窗口取拥塞窗口和接收窗口中的较小者)。
控制拥塞窗口的原则是:只要网络中没有出现拥塞,就把拥塞窗口增大一些;但只要网络出现拥塞或可能出现了拥塞,就把拥塞窗口减小一些。
判断网络拥塞的依据是出现超时。当出现拥塞就使拥塞窗口减小,反之增大。
慢开始
初始拥塞窗口很小,然后由小到大逐渐增大发送窗口。
初始拥塞窗口一般不超过 2-4 个 SMSS(发送方最大报文段)长度。每收到一个新的确认后,就增加一次拥塞窗口。
使用慢开始算法,每经过一个传输轮次,拥塞窗口 cwnd 就会加倍。
拥塞避免
拥塞避免算法是让拥塞窗口缓慢地增大,不像慢开始那样加倍增长。
当 cwnd 大于一个界限值时,就使用拥塞避免算法,小于时就使用慢开始算法。
当出现超时,拥塞窗口就恢复初始值重新进行慢开始,且界限值减半。
快重传
快重传要求当接收方收到报文段后立即发送确认。
当接收方收到的报文段出现丢失,它后面不论收到什么报文段,发回的确认号都是对失序之前的那个报文段的确认。
当发送方连续收到 3 个对同一报文段的重复确认(表明下一个报文段未收到),就立即重传下一个报文段,这样就可以避免超时。
这是为了避免出现超时,使发送方误判为网络拥塞。
快恢复
对于一般的超时,界限值减半,拥塞窗口直接置为初始值;对于快重传情况下,界限值减半,拥塞窗口设置为和界限值一样,以实现快恢复。
发送方的发送窗口实际设置为接收方窗口 rwnd 和拥塞窗口 cwnd 中较小的一个。
主动队列管理AQM 在网络层,路由器可以通过采用主动队列管理 AQM 来减少网络拥塞的发生。
主动队列管理就是路由器采取的一种分组丢弃策略。
路由器的队列中的分组是先进先出,在队列满了之后到达的分组就直接丢弃。
主动队列管理就是在队列长度还未满时就丢弃后面的分组。但是具体丢弃策略尚未标准化。
连接管理
TCP 连接有三个阶段:连接建立、数据传送、连接释放。
主动发起 TCP 连接的应用进程是客户,另一方是服务器。
TCP 的连接开始前客户和服务器都会创建一个传输控制块 TCB,其中存储如 TCP 连接表、指向发送/接收缓存的指针、指向重传队列的指针等。连接释放后删除。
连接建立
TCP 的连接采用三次握手机制:服务器要确认客户的连接请求,客户要对服务器的确认进行确认。
连接请求报文和连接接受报文段都不能携带数据,但是都消耗一个序号。
第三个 ACK 报文段可以携带数据也可以不携带,若不携带则不消耗序号(即下一个报文序号和此报文序号相同)。
SYN-SENT 表示同步已发送状态,SYN-RCVD 表示同步收到状态,ESTABLISHED 表示已连接状态。 TCP 有如下规定:
SYN = 1 的报文段都不能携带数据,但要消耗掉一个序号。所以三次握手中前两个报文都不能携带数据。
ACK = 1 的报文段如果不携带数据则不消耗序号。
三报文握手中的第二个报文,也就是服务器发给客户的 SYN 报文也可以拆分成两个报文段,一个确认报文段(ACK = 1, ack = x+1)和一个同步报文段(SYN = 1, seq = y),那样就是四报文握手了。
采用三报文握手是为了解决客户发送的连接请求报文中途滞留发生重传的情况。当发生重传情况,客户可能连续发送了两个连接请求,而服务器也会回复两个连接接受,此时发送端通过最后一个确认报文保证只建立一个连接。
如果不采用三报文握手,那么只要服务器发出确认,新的连接就建立了。
连接释放 TCP 的连接释放采用四次挥手机制。任何一方都可以在数据传送结束后发出连接释放的通知,等待对方确认后进入半关闭状态。当另一方也没有数据发送后,则发送连接释放通知,对方确认后完全关闭 TCP 连接。
客户发起了连接释放报文(FIN=1),此时不再传送数据。但是服务器可能还要传送数据,因此在发送一个 ACK 报文后,如果有数据传送还要继续发送完。
当服务器发送完数据,就发送连接释放报文,接着客户端对此确认,服务器收到确认后彻底关闭连接。 TCP 规定:FIN 报文即使不携带数据,也要消耗一个序号。
四次挥手的详细流程:
- A 向 B 发送连接释放报文(FIN 报文)后进入 FIN-WAIT-1(终止等待1)状态。
- B 收到连接释放报文后立即发出确认,然后 B 就进入了 CLOSE-WAIT(关闭等待)状态。TCP 服务器进程这时要通知高层应用进程,从 A 到 B 方向的连接已经释放了,TCP 连接实际上已经是半关闭状态。
- A 收到 B 的确认后,就进入 FIN-WAIT-2(终止等待2)状态,等待 B 发出的连接释放报文段。
- B 在发送确认报文后,如果没有数据要发送,应用进程就通知 TCP 释放连接,这时 B 会发送连接释放报文(FIN 报文)。如果 B 还要发送数据,就等发送完数据后再发送连接释放报文。这之后 B 进入 LAST-ACK(最后确认)状态
- A 收到 B 的连接释放报文后,要再发送一个确认报文段(ACK 报文),然后进入 TIME-WAIT(时间等待)状态。A 会在这一状态保持 2MSL 的时间(这里有一个时间等待计时器),之后进入 CLOSED 状态。
- B 收到 A 的确认报文后也会进入 CLOSED 状态。B 会比 A 更早地结束连接。
MSL 含义是最长报文段寿命,RFC 标注建议是 2 分钟,实际一般小于等于 2 分钟,因此 TIME-WAIT 的时长一般小于等于 4 分钟。
TIME-WAIT 状态保证 A 发送的最后一个 ACK 报文段能够到达 B。这个 ACK 报文段可能丢失,当 B 没有收到 A 的 ACK 报文,会超时重传它之前发送的连接释放报文,这样 A 就能在 2MSL 时间内收到 B 重传的 FIN 报文,然后 A 重传 ACK 报文,并重新启动 2MSL 计时器。
如果没有 TIME-WAIT 状态,而是发完 ACK 报文后就立即释放连接,就无法收到 B 重传的 FIN 报文段,这样 B 就无法正常进入 CLOSED 状态。
防止已失效的报文遗留到下一个连接中,经过 2MSL 在关闭连接可以使本连接产生的所有报文都从网络中消失。
保活计时器:TCP 还会设置一个保活计时器。如果客户发生故障,服务器不再收到客户发来地数据,可以通过保活计时器来避免服务器白白等待。
保活计时器的工作方式:服务器每收到一次客户的数据,就重新设置保活计时器,通常是 2 小时。如果 2h 每收到客户数据,服务器就发送一个探测报文段,之后每隔 75s 发送一次。如果连续发送 10 个探测报文后客户仍没有响应,服务器就认为客户端出了故障,关闭当前的 TCP 连接。
应用层
通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。
域名系统DNS
域名系统 DNS 是互联网使用的命名系统,用来把便于识别的名字转换为 IP 地址。 DNS 是一个联机分布数据库系统,采用客户-服务器方式。 DNS 使大多数名字在本地进行解析,只有少量解析要在互联网上通信。 域名到 IP 地址的解析是由互联网上的许多域名服务器共同完成的。 域名到 IP 地址的解析过程: 当某一应用进程需要解析域名,就调用解析程序,成为 DNS 的一个客户,把待解析的域名放到 DNS 请求报文中,以 UDP 用户数据报方式发给本地域名服务器。本地域名服务器查找域名后把对应的 IP 地址发给该应用进程。应用进程获得 IP 地址后即可进行通信。 如果本地域名服务器不能回答该请求,就向其他域名服务器请求,此时它就成为了客户。 互联网采用层次树状结构的命名方法,任何一台连接在互联网上的主机或路由器都有唯一一个域名。
如以下两个网站采用了不同的四级域名: www.buaa.edu.cn :北航主页 yzb.buaa.edu.cn :北航研招办 域名由标号序列组成,最右边的标号是顶级域名,往左依次降低。 域名中的标号只能由英文字母、数字和 ‘-’ 组成,不区分大小写字母。完整域名不超过 255 个字符。 各级域名由其上一级的域名管理机构管理,顶级域名由 ICANN 管理。 顶级域名 TLD 包括: 国家顶级域名:cn 为中国,us 为美国,uk 为英国。 通用顶级域名:com(公司企业), net(网络服务机构), org(非营利性组织), int(国际组织), edu(美国教育机构), gov(美国政府部门), mil(美国军事部门)。 上面是最初的 7 个顶级域名,后面还增加了很多其他的。现在已经有了中文的顶级域名。 基础结构域名:arpa,用于反向域名解析。 我国的二级域名分为两类: 类别域名:com(企业), ac(科研机构), edu, gov, mil, net, org 等。 行政区域名:适用于各省。如 bj 为北京。
域名服务器分为根域名服务器、顶级域名服务器、权限域名服务器和本地域名服务器。 所有的根域名服务器都包含所有的顶级域名服务器的域名和IP地址。 根域名服务器是最重要的服务器,如果本地域名服务器无法解析域名,首先求助于根域名服务器。 根域名服务器在全球有成百上千个,但是分布是很不均衡的。 根域名服务器使用了任播技术。 顶级域名服务器:管理在该服务器注册的二级域名。 权限域名服务器:负责一个区的应服务器 本地域名服务器:主机查询域名时首先询问本地域名服务器,计算机属性中的 DNS 服务器就是本地域名服务器。
域名解析过程中主机向本地域名服务器的查询是递归查询。 本地域名服务器向根域名服务器的查询是迭代查询,即当根域名服务器无法完成解析时,就把下一步应该查询的域名服务器告诉本地域名服务器。
为提高查询效率,域名服务器中采用了高速缓存,存放最近查询过的域名信息。
文件传送协议
文件传送协议 FTP 使用 TCP 的可靠运输服务,为客户-服务器模式。 简单文件传送协议 TFTP 使用 UDP 协议。 FTP 和 TFTP 都属于文件共享协议中的一大类:复制整个文件。特点是要存取一个文件,就必须先获得一个本地的文件副本。要修改文件,只能对文件副本进行修改,然后将修改后的文件副本传送回到原节点。
FTP 主要功能是减少或消除在不同操作系统下处理文件的不兼容性。 FTP 的服务器进程 一个 FTP 服务器进程可以同时为多个客户进程提供服务。 FTP 的服务器进程包括一个主进程和若干个从属进程: 主进程:负责接受新的请求。当主进程收到客户进程发来的连接请求后,将其交给从属进程进行处理。然后回到等待状态继续接受其他客户的请求。 从属进程:负责处理单个请求。 服务器进程中的主进程和从属进程是并发执行的。 文件传输功能的实现 文件传输时,FTP 的客户和服务器之间会建立两个并行的 TCP 连接:控制连接和数据连接,其中数据连接用于传输文件。因此 FTP 要使用两个端口号。 两个连接对应服务器端的两个从属进程:控制进程和数据传送进程。 FTP 客户发送的传送请求通过控制连接发送给控制进程。然后控制进程创建数据传送进程和数据连接。
简单文件传送协议 TFTP 使用 UDP 协议。 TFTP 的主要优点是可用于 UDP 环境,代码简便。 TFTP 采用了类似停止等待协议的重传机制。即发送后就等待确认,没有确认就重传。
远程终端协议TELNET
远程终端协议 TELNET 采用客户服务器模型。能将客户端的操作传到服务器端,然后将服务器端的输出返回到客户端屏幕。 TELNET 采用 TCP 协议。 TELNET 的服务器进程 TELNET 的服务器进程类似 FTP,由主进程等待新的请求,并产生从属进程来处理每一个连接。
万维网www
万维网 WWW 是一个大规模的、联机式的信息储藏所。万维网的简称是 Web。 超文本指的是包含指向其他文档的链接的文本,一个超文本由多个信息源链接组成。超文本仅包含文本信息,超媒体扩充为包含图形、声音、视频等。 万维网是一个分布式的超媒体系统。 Web 的客户程序向互联网中的服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。 页面就是在客户程序主窗口显示出的万维网窗口。 Web 要处理的几个问题及解决方式: 如何标志分布在整个互联网上的文档:采用统一资源定位符 URL。 用什么协议来实现万维网上的链接:采用超文本传送协议 HTTP。 怎么实现创作不同风格的万维网文档:使用超文本标记语言 HTML。 怎样使用户很方便地找到所需信息:通过搜索引擎实现。
万维网使用统一资源定位符 URL 来标志万维网上的各种文档,每个文档有在互联网内唯一的 URL。 URL 相当于指向互联网上任何可访问对象的一个指针。 URL 的一般形式:<协议>://<主机>:<端口>/<路径> 协议:指出采用何种协议来获取该万维网文档,一般为 http,其次为 ftp 主机:即该主机的域名。 端口:通常都省略掉,HTTP 的默认端口号是 80。 路径:有时可省略。 输入 URL 时协议和 www 都可以省略,浏览器会自动补上。 使用 HTTP 的 URL HTTP 的默认端口号是 80,通常都省略掉了。 当路径也省略掉,则 URL 指向互联网上的某个主页,比如 http://www.buaa.edu.cn。 主页可以是: 一个 WWW 服务器的最高级别的页面。 某一个组织的一个定制的页面,从这个页面可以链接到本组织的其他站点。 个人设计的 WWW 页面。 https://www.buaa.edu.cn/jgsz1/yxsz.htm 左边是一个 URL 链接,cn/ 右侧的为路径,最后的 .htm 表明这是一个 html 文档路径>端口>主机>协议>
HTTP 是面向事务的应用层协议。事务指的是一系列的不可分割的信息交换(即这些信息交换是一个整体)。 万维网客户与服务器程序之间交互使用的协议是 HTTP 协议。万维网的客户就是浏览器 HTTP 本身是无连接、无状态的,使用可靠传输的 TCP 协议。 无连接:通信双方在交换 http 报文前不需要先建立 http 连接。 无状态:HTTP 服务器不记得曾经访问过的客户。 HTTP连接的建立与释放 每个万维网网点都有一个服务器进程,它不断地监听 TCP 的端口 80,当发现有浏览器向它发来 TCP 的连接建立请求并建立连接后,浏览器就会发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。最后 TCP 连接释放。 注意这个过程:首先建立 TCP 连接,且该连接的端口为 80。客户会把 HTTP 请求报文作为 TCP 连接三次握手中的第三个报文的数据。然后服务器直接返回文档作为响应。 HTTP/1.1 HTTP/1.1 协议使用了持续连接。就是万维网服务器在发送响应后一段时间内仍保持这条连接,当客户继续访问时不需要重新建立 TCP 连接。 HTTP/1.1 协议的持续连接有两种工作方式: 非流水线方式:客户收到前一个响应后才能发下一个请求。 流水线方式:客户收到上一个响应前就可以接着发新的请求。 代理服务器 代理服务器又称万维网高速缓存,它把最近的一些请求和响应暂存在本地磁盘中。当新请求与暂存的请求相同,就返回暂存的响应。 代理服务器可以在客户端或服务端工作,也可以在中间系统上工作。 比如某个校园网使用了代理服务器,当校园网中某个主机的浏览器请求服务时,先和代理服务器建立 TCP 连接并发出 HTTP 请求报文,如果代理服务器有所请求对象就返回这个对象,如果没有,代理服务器就代表用户与源点服务器建立连接并发送 HTTP 请求报文。 HTTP 的报文结构 HTTP 报文的每一个字段都是 ASCII 码串。 HTTP 有请求报文和响应报文两类报文。 HTTP 报文由三部分组成: 开始行:用于区分是请求报文还是响应报文。 请求行:包括方法(表明了请求报文的类型),请求的 URL,HTTP 的版本。 状态行:响应报文的第一行叫状态行,包括:HTTP 的版本,状态码,解释状态码的短语。 首部行:用来说明浏览器、服务器或报文主体的一些信息。 实体主体:请求报文一般不使用这个字段,响应报文可能会使用。 注意:HTTP 报文中,请求行最后有一个 CRLF,其他所有首部之间也都有一个 CRLF,首部与实体主体之间有两个 CRLF。
一个 HTTP 请求报文的例子: GET /dir/index.htm HTTP/1.1 //请求行,这里使用了相对 URL Host:www.buaa.edu.cn //第一个首部行,给出了主机的域名 Connection:close //告诉服务器发送完请求的文档后就可以释放连接。 User-Agent:Mozilla/5.0 //表明用户代理使用了火狐浏览器 Accept-Launguage:cn //表明用户希望优先收到中文版本的文档 //请求报文的最后还有一个空行 HTTP 请求报文的一些方法
HTTP 响应报文的 5 大类状态码: 1xx。表示通知信息,如请求收到了或正在处理。 2xx。表示成功。 3xx。表示重定向,如要完成请求还需要采取进一步的行动。如 HTTP/1.1 301 Moved Permanently。这时后面还会跟一个首部行表明新的 URL 地址:Location:http://www.buaa.edu.cn/dd/index.html 4xx。表示客户的差错。如 Http/1.1 404 Not Found 5xx。表示服务器的差错。 在服务器上存放用户的信息 HTTP 是无状态的。当有时想要保存一些信息,比如保存某网站的账号与密码,就需要采用 Cookie 技术。万维网站点可以使用 Cookie 来跟踪用户。 Cookie 的工作原理:当用户 A 浏览某网站,该网站的服务器就为 A 产生一个唯一的识别码,并存储在数据库中,接着在给 A 的响应报文中添加一个字段名为 Set-cookie,值为识别码的首部行,A 收到此响应报文后把它存储在自己的 Cookie 文件中。这样服务器就能够知道用户 A 什么时候访问了哪些页面。当 A 之后再次访问时,服务器可以识别出 A,这样就不需要用户 A 再次输入姓名,密码等。
万维网使用超文本标记语言 HTML 来显示各种万维网页面。 HTML 文档是一种可以使用任何文本编辑器创建的 ASCII 码文件。 HTML 文档一般以 .html 或 .htm 为后缀。 HTML 规定了链接的设置方法。链接一般显示为蓝色字且加上下划线,链接的终点是其他页面。 当链接指向的是本计算机中的文件,就是本地链接。 其他语言 可扩展标记语言 XML 和 HTML 很相似。但从设计宗旨而言,XML 用于传输数据,而 HTML 用于显示数据。 可扩展超文本标记语言 XHTML 是作为一种 XML 应用被重新定义的 HTML,将逐步取代 HTML。 层叠样式表 CSS 是一种样式表语言,用于为 HTML 文档定义布局。如规定在浏览器上显示的字体、颜色、边距等。 静态文档 万维网静态文档:文档创作完毕后就存放在万维网服务器中,在用户浏览过程中,内容不会变。 动态文档 动态文档:文档的内容是在浏览器访问万维网服务器时由应用程序动态创建的。每次访问用户看到的内容都是不一样的。 比如天气预报、股市行情等都要用动态文档。 动态文档和静态文档的差别主要在服务器一端。 通用网关接口 CGI 是一种标准,定义了动态文档如何创建。服务器端使用 CGI 程序来创建动态文档。 脚本指的是被另一个程序而非处理器来解释或执行的程序。JavaScript 等就是脚本语言。 活动文档 活动文档:可以使浏览器屏幕连续更新。 当浏览器请求一个活动文档,服务器直接返回一段活动文档程序的副本,使该程序副本在浏览器端运行。活动文档程序可以与用户直接交互,并可以连续地改变屏幕的显示。
搜索引擎是在万维网中进行搜索的工具,可以分为全文搜索引擎(百度、谷歌等)和分类目录搜索引擎(搜狐、新浪等门户网站)两大类。 全文检索搜索引擎的工作原理:通过搜索软件(如爬虫程序)到各网站搜集信息,像蜘蛛爬行一样从一个网站连接到另一个网站,然后建立一个在线索引数据库。当用户查询时,就从已经建立的索引数据库中进行查询。 Google 搜索技术的特点 Google 的核心技术是 PageRank,即网页排名。 将搜索结构根据重要性排名。关键字频率、是否知名网站等都会影响重要性。
电子邮件
电子邮件系统包括三个主要构件:用户代理、邮件服务器、邮件协议(包括邮件发送协议和邮件读取协议)。 用户代理就是电脑上的邮件客户端。 从用户代理把邮件发送到邮件服务器,以及邮件服务器之间的传送都要使用 SMTP 协议。用户代理从邮件服务器读取邮件时则使用 POP3 或 IMAP 协议。 发送邮件的过程 用户代理使用 SMTP 协议把邮件发给“发送方邮件服务器”,然后“发送方邮件服务器”与“接收方邮件服务器”建立 TCP 连接并把邮件发送过去,邮件不会在某个中间服务器落地。收件人收信时,使用 POP3 协议从“接收方邮件服务器”读取邮件。 一个邮箱地址的格式是:用户名@邮件服务器的域名,如 dhb@buaa.edu.cn。
SMTP 采用客户-服务器模式。 发件人的邮件会存在发送方邮件服务器的邮件缓存中,发送方邮件服务器(此时它是 SMTP 客户)定期扫描邮件缓存,如果有邮件就与接收方邮件服务器建立连接并发送过去。 SMTP 的熟知端口是 25。 SMTP 发送的是明文,不利于保密;发送邮件不需要鉴别,方便了垃圾文件的泛滥。新出的扩展的 SMTP 即 ESMTP 对这些进行了改进
常用的邮件读取协议有 POP3 和 IMAP。 POP3 POP3 采用客户-服务器模式,它非常简单、但功能有限。POP3 的特点是只要用户从 POP3 服务器读取了邮件,服务器就把该邮件删除。 IMAP IMAP4 也采用客户-服务器模式,但是复杂地多。IMAP4 是一个联机协议,用户在自己计算机上就可以操纵邮件服务器的邮箱。 用户打开邮件时,邮件才传到用户的计算机上。用户未主动删除邮件前,IMAP 服务器邮箱中的邮件就一直保存着。 IMAP 的缺点是如果用户没有将邮件复制到自己计算机上,每次查阅邮件都必须上网。
基于万维网的电子邮件即用户使用浏览器收发电子邮件,这种情况用户浏览器和邮件服务器之间的传送使用 HTTP 协议,邮件服务器之间的传送仍使用 SMTP 协议。 万维网电子邮件不需要在计算机中安装用户代理软件。
SMTP 只能传送 ASCII 码,不能传送非英语文字,也不能传送可执行文件等。 通用互联网邮件扩充 MIME 对 SMTP 进行了扩充,它定义了传送非 ASCII 码的编码规则。 网络中传送的还是 ASCII 码,MIME 采用一些编码方式来用 ASCII 码表示其他字符。 MIME 指定了几百上千种可传送的文件类型,这些类型涵盖了常用的各种文件类型。
动态主机配置协议DHCP
因为 IP 地址中包含了网络号,而计算机第一次使用前不知道它会连到哪个网络,所以无法在出厂前就设置好 IP 地址。 当计算机的 IP 地址发生变化,比如计算机到了一个新的网络中,就要使用动态主机配置协议 DHCP 来配置 IP 地址,通过 DHCP 可以实现即插即用联网,而不需要人工配置 IP 地址。 配置 IP 地址的方法 DHCP 采用了客户-服务器模式。 需要配置 IP 地址的主机启动时就向 DHCP 服务器广播发送发现报文。DHCP 收到后会给该计算机发送一个提供报文来提供分配的 IP 地址。 响应 DHCP 客户的 DHCP 服务器可能有多个,客户机会从中选择一个给其发送请求报文。 每个网络至少有一个 DHCP 中继代理(一般是一个路由器),用来做主机与 DHCP 服务器之间的中转。 DHCP 服务器分配的地址有一个租用期限制。可能是几小时也可能是几年。当接近租用期了 DHCP 会请求更新租用期。 DHCP 客户的熟知端口是 68,DHCP 服务器的熟知端口是 67。 当一个手机从连接到一个新的 wifi 时,就要通过 DHCP 来获取新的 IP 地址。
简单网络管理协议SNMP
网络管理包括对硬件、软件和人力的使用、综合和协调。 在一个网络管理系统中会有一个管理者和许多被管设备。被管设备可能是主机、路由器、集线器等。 每个被管设备中都要运行一个网络管理代理程序。代理程序在管理程序的命令和控制下,在被管设备上采取本地的行动。 网络管理采用的协议就是 SNMP 协议。 SNMP 协议 SNMP 协议中,管理程序运行 SNMP 客户程序,代理程序运行 SNMP 服务器程序。被管对象上的 SNMP 服务器程序不停监听 SNMP 客户程序的请求和命令,一旦发现就执行对应动作。 网络管理有一个基本原理:要管理某个对象,就必然要给这个对象添加一些软件或硬件,但是这种添加的影响应该尽量小一些。SNMP 最重要的思想是尽量简单。 简单网络管理协议 SNMP 包括三部分: SNMP 本身:SNMP 定义了管理站和代理间交换的分组格式,分组中包含各代理中的变量名和状态值。SNMP 负责读取和改变这些值。 管理信息结构 SMI:定义了一套通用的规则,包括如何定义命名对象、如何定义对象类型、如何对对象编码的规则。 管理信息库 MIB:用来在被管实体中创建命名对象。
SMI 的功能有三个: 被管对象怎样命名。 用来存储被管对象的数据类型有哪些。 在网络上传送的管理数据如何编码。 被管对象的命名 SMI 规定所有的被管对象的名字都必须在一颗对象命名树上。即类似于 URl 的命名方式。 被管对象的数据类型 SMI 把数据类型分为两大类:简单类型和结构化类型,简单类型有 Interger32 等,结构化类型有 sequence(类似结构体) 和 sequence of(类似数组) 两种 SMI 采用了抽象语法记法来定义数据类型。抽象语法只描述数据的结构形式,不考虑具体的编码格式,也不考虑数据结构在内存中如何存放。 编码方法 SMI 使用基本编码规则 BER 来进行数据编码,BER 指明了数据类型和值。它把所有的数据元素都组织为一个 T-L-V 三字段序列,T 定义数据类型,L 定义 V 字段的长度,V 定义数据的值。
管理信息就是被管对象的集合。被管对象必须维持供管理程序读写的若干控制和状态信息,这些被管对象就构成了一个虚拟的信息存储器,称为管理信息库 MIB。 只有 MIB 中的对象才是 SNMP 可以管理的。
实际上 SNMP 的操作只有两种基本的管理功能: 读操作:用 Get 报文来检测被管对象的状况。 写操作:用 Set 报文来改变被管对象的状况。 SNMP 使用无连接的 UDP。 SNMP 实现管理功能的方式: 使用探询操作:定期向被管设备发送探询信息,以了解其状况。 被管对象的代理检测到严重异常事件时主动向管理者发送报告。
应用进程跨越网络的通信
系统调用接口是应用进程的控制权和操作系统的控制权进行转换的接口,又称为应用编程接口 API。 API 就是应用程序和操作系统之间的接口。 API 和一般的函数调用很相似,应用程序调用 API 来将控制器传递给操作系统。 现在的 TCP/IP 协议软件是驻留在操作系统中的。套接字接口就是一种供应用程序使用 TCP/IP 服务的 API,Windows 系统就采用了套接字接口。 套接字是应用进程和运输层协议之间的接口,是应用进程为了获得网络通信服务而与操作系统进行交互时使用的一种机制。 理解:套接字实际上就是一套 API 接口,应用进程(应用层)通过套接字来使用位于操作系统内核的 TCP/IP 服务(运输层)。 套接字描述符 应用进程需要使用网络时,就要请求系统为其创建一个套接字,这个请求实际上是请求操作系统把网络通信所需的一些系统资源(如存储器时间、CPU 时间、网络带宽等)分配给它,操作系统使用一个套接字描述符来表示这些资源的总和,并将这个套接字描述符返回给应用进程。此后,应用进程的所有网络操作都要使用这个套接字描述符。 套接字描述符是套接字接口中的第一个参数。 通信完毕后,系统要回收该套接字描述符相关的所有资源。 套接字的数据结构 在机器中有一个套接字描述符表,其中存储了多个套接字描述符,每个进程对应一个套接字描述符,每个描述符有一个指针指向存放套接字的地址。 在套接字的数据结构中有很多参数要填写,如协议族(PF_INET 表示 TCP/IP 协议族)、服务(SOCK_STREAM 表示 TCP 服务)、本地和远地 IP 地址、本地和远地端口等。
下面以使用 TCP 服务为例介绍了几种常用的系统调用 并发方式工作的服务的工作模式 一个服务器要能够同时处理多个连接,即以并发方式工作。 采用一个主服务器进程 + 多个从属服务器进程是并发方式工作的一种实现方法。 主服务器进程 M 用来不停地接受新的连接请求,M 原本就有一个套接字,但是每收到一个新的请求就为它创建一个新的套接字,并把这个新的套接字的标识符返回给客户。然后它会创建一个新的从属服务器进程使用刚才创建的新的套接字来和客户建立连接。而主服务器进程 M 则使用原来的套接字继续接受下一个连接请求。
连接建立阶段 刚创建的套接字的端口号和 IP 地址都是空的,此时服务器端的应用进程要调用 bind 来指明套接字的本地端口号和本地 iP 地址。在客户端可以调用 bind 也可以不调用而由操作系统自动分配一个动态端口号。 服务器调用 bind 后,还要调用 listen 把套接字设置为被动模式,来随时接受用户的服务请求。UDP 服务器采用无连接方式,所以不使用 listen 然后服务器(主服务器进程)要调用 accept,来完成给发出请求的远地客户分配从属服务器进程与新的套接字。 在客户端创建了套接字后,客户进程要调用 connect 来向服务器发出连接请求。在 connect 调用中,客户需指明远地服务器的 IP 地址和端口号。 数据传送阶段 客户和服务器都调用 send 来传送数据,调用 recv 来接收数据: 调用 send 需要三个变量:数据要发往的套接字的描述符,要发送的数据的地址、数据的长度。 调用 recv 也需要三个变量:要使用的套接字的描述符、缓存的地址、缓存空间的长度。 连接释放阶段 调用 close 来释放连接和撤销套接字。
P2P应用
P2P 应用采用了 P2P 体系结构:没有固定的服务器,绝大多数交互都使用对等方式。 目前 P2P 工作方式下的文件共享占据了互联网流量中最大的份额,比万维网所占比例大得多。
6.9.1 具有集中目录服务器的P2P工作方式 第一代的 P2P 文件共享网站采用了这种方式。 这种方式下,所有用户机上文件的地址存放在一台服务器上,某个用户要下载资源时首先向该服务器询问资源地址,再从存储资源的计算机下载资源。
6.9.2 具有全分布式结构的P2P文件共享程序 BT 是一种很流行的 P2P 应用,采用“最稀有的优先”的技术,尽快把最稀有的文件块收集到。 BT中参与某个文件分发的所有对等方构成了一个“洪流”,每一个洪流都有一个“追踪器”,当有对等方加入洪流时,要向追踪器登记。 如果有当前以最高数据率向某个对等方传送文件块的相邻对等方,该对等方就要优先把所请求的文件块传送给这些相邻对等方。这样使对等方彼此都能以较高的速率交换文件块。
6.9.3 P2P文件分发的分析 当对等方的数量很大时,采用 P2P 下载文件比传统的客户-服务器模型快很多。
6.9.4 在P2P对等方中搜索对象 P2P 中广泛使用的索引和查找技术是分布式散列表 DHT,它实际上是一个分布式数据库。数据库中仅包含两部分信息:关键字是资源名,值是存放对象的节点的 IP 地址,只要给出资源名就能查到 IP 地址。但是数据库是分布式的,资源名保存在哪一台主机中呢?这就要用到基于 DHT 技术的算法。 Chord 算法是一种基于 DHT 的算法,它采用了散列函数来将资源名映射为了一个均匀分布的数字(标识符),然后将其放到 Chord 环上。保存资源名的主机也通过散列函数映射为一个标识符放到 Chord 环上作为环上的结点(显然结点数目远少于资源名数目),然后每个资源名就保存到 Chord 环上离他最近的结点所对应的主机中。
具体应用
网络安全
问题
计算机网络的通信面临两大类威胁,即被动攻击和主动攻击
安全的计算机网络应该达到:保密性、端点鉴别、信息的完整性、运行的安全性。
密码学
密码学包括密码编码学(设计密码体制)和密码分析学(破解密码)。无条件安全的密码几乎不存在,大部分密码都是计算上安全的,即在一定时间内是不可破解的。
对称密钥密码体制
加密密钥与解密密钥是相同的。这种加密的保密性仅取决于对密钥的保密,算法是公开的。
数据加密标准 DES 是一种对称密钥密码体制。初版的 DES 已经不安全,目前采用的是三重 DES(3DES)。三重 DES 广泛用于网络、金融、信用卡等系统。
公钥密码体制 加密密钥是公开的(公钥),解密密钥是保密的(私钥),加密和解密算法也是公开的。私钥是某个用户私有的,对其他人都保密。
公钥密码体制相对于对称密钥体制的优点:
- 不需要考虑密钥分配问题:对称密钥需要安全地分配密钥。
- 提供数字签名功能。
RSA 体制(RSA 公钥加密算法)是最著名的公钥密码体制,它采用了数论中的大数分解问题。 任何加密方法的安全性取决于密钥的长度和攻破密文所需的计算量,而非体制。
数字签名
需要提供三点功能:
- 报文鉴别:接收者能够核实发送者对报文的签名,从而验证发送者的身份。
- 报文的完整性:接收者确信收到的数据和发送者发送的数据完全一样。
- 不可否认:发送者事后不能否认自己对报文的签名。
基于公钥密码体制数字签名功实现方法:发送者使用自己的私钥对一段报文进行加密,接收者使用该发送者的公钥来解密报文。
鉴别
鉴别是要验证通信对方是自己要通信的对象。
报文鉴别
鉴别报文的完整性,它采用了密码散列函数。
散列函数的两个特点:
- 输入长度可以很长,输出长度则较短并长度固定。散列函数的输出叫做散列值。
- 不同的散列值肯定对应不同的输入,但不同的输入可能得到相同的散列值。
密码学中的散列函数最重要的特点是:要找到两个不同的报文具有相同的散列值,在计算上是不可行的。也就是根据散列值来求报文的逆向变换是不可能的。
报文摘要 MD5 是进行报文鉴别的一种简单方法,但目前广泛使用的是安全散列算法 SHA-2/3。
散列函数的使用方法:对报文计算出散列值,将散列值附加在报文后面,将附加了散列值的整个报文加密进行发送。接收方解密后重新对报文计算散列值,如果与收到的散列值相同就没问题。
实体鉴别
报文鉴别对每一个收到的报文都要鉴别发送者,实体鉴别只需要在整个连接的过程中鉴别一次。这种不同带来了微妙的影响。
重放攻击
- 场景:A 向 B 发送带有自己身份和口令的报文,并使用对称密钥加密。B 收到报文后用对称密钥解密,鉴别 A 的身份。
- 但是 C 可能截获 A 发出的报文并转发给 B,这样 B 就会误认为 C 是 A,之后向 C 发送了许多本该发给 A 的报文。
不重数法
- 可以采用一个不重复使用的大随机数来解决重放攻击。A 向 B 发送不重数(即不同会话使用不同的数),这样 C 截获后再向 B 发送,B 发现收到的是重复的,就不会被骗了。
密钥分配
密钥分配即密钥分发,是密钥管理中最大的问题,密钥必须通过最安全的通路进行分配。
目前常用的密钥分配方式是设立密钥分配中心 KDC。
公钥也不可随意分配。比如 C 截获 A 发给 B 的报文(报文用 A 的私钥加密并附有 A 的公钥)再转发给 B,B 无法验证这个公钥是 A 的还是 C 的。
所以要将公钥与对应的实体进行绑定,由认证中心 CA 来完成此操作。
每个实体都有 CA 发来的证书,里面有公钥机器拥有者的标识信息,此证书被 CA 进行了数字签名。
任何用户都可以从可信的地方获得认证中心 CA 的公钥。
互联网使用的安全协议
IPsec 协议族 网络层使用 IPsec 协议族。
VPN 就是用了网络层安全协议。
IPsec 没有规定用户必须使用哪种加密和鉴别算法,但它提供了一套加密算法。
IP 安全数据报格式有两个协议:包括鉴别首部协议 AH 和封装安全有效载荷协议 ESP。
AH 协议提供源点鉴别和数据完整性,但不能保密。
ESP 协议提供源点鉴别、数据完整性和保密。ESP 比 AH 复杂很多。
使用 AH 或 ESP 协议的 IP 数据报叫做 IP 安全数据报(IPsec 数据报)。
在 IPv6 中,AH 和 ESP 都是扩展首部的一部分。AH 协议都包含在 ESP 协议内部。
IPsec 数据报的工作方式有两种:
- 运输方式:在整个运输层报文段的前后分别添加若干控制信息,再加上 IP 首部,构成 IPsec 数据报。
- 隧道方式(使用最多):在原始的 IP 数据报的前后分别添加控制信息,再加上新的 IP 首部,构成 IPsec 数据报。
无论哪种方式,IPsec 数据报的首部都是不加密的(这样路由器才能识别首部中的信息),只有数据部分是经过加密的。

运输层安全协议
运输层的安全协议有安全套接字层 SSL 和运输层安全 TLS。 SSL 最新版本是 SSL 3.0,常用的浏览器和 Web 服务器都支持 SSL,SSL 也是 TLS 的基础。 SSL 作用于端系统应用层的 HTTP 和运输层之间,在 TCP 之上建立起一个安全通道,为通过 TCP 传输的应用层提供安全保障。 TLS 是在 SSL3.0 的基础上设计的。 未使用 SSL 时,应用层的数据通过 TCP 套接字与运输层交互,使用 SSL 后,中间又多了一个 SSL 子层。

网址中 https 表示使用了 SSL 协议,TCP 的 https 端口号是 443,http 端口号是 80。 SSL 提供的安全服务可以归纳为三种: SSL 服务器鉴别,允许用户证实服务器的身份。 SSL 客户鉴别,允许服务器证实客户的身份。 加密的 SSL 会话,对客户和服务器之间发送的所有报文加密,并检测报文是否被篡改。 SSL 的工作过程 以浏览网站为例,用户点击链接建立 TCP 连接后,先进行浏览器和服务器间的握手协议,简要流程如下: 协商加密算法。 服务器鉴别。 会话密钥计算。 安全数据传输。

应用层安全协议
PGP 是一个完整的电子邮件安全软件包,包括加密、鉴别、电子签名、压缩等技术。PGP 没有使用新概念,只是综合了现有的加密算法。
防火墙与入侵检测
防火墙和入侵检测系统 IDS 构成了系统防御的两层防线。
防火墙 防火墙是一种特殊编程的路由器,安装在一个网点和网络的其余部分之间,目的是实施访问控制策略。 防火墙内的网络称为可信的网络。 防火墙技术包括以下两类: 分组过滤路由器:它根据过滤规则(基于分组的网络层或运输层的首部信息设定)对进出内部网络的分组执行转发或丢弃。比如将所有目的端口号是 23 的进入内部网路的的分组都丢弃。 应用网关:也叫代理服务器。一种网络应用需要一个应用网关,万维网缓存就是一种万维网应用的代理服务器。进出网络的应用程序报文都要通过应用网关,应用网关在应用层打开报文检查是否合法。
入侵检测系统 入侵检测系统 IDS 是在入侵开始后及时检测到入侵以便尽快阻止。 入侵检测系统分为两种: 基于特征的 IDS:根据已知攻击的标志性特征检测入侵。 基于异常的 IDS:根据网络流量的统计特性来检测入侵。
未来的发展方向: 椭圆曲线密码(ECC)与 AES。这是下一代金融系统使用的加密系统。 移动安全。移动通信所需要的。 量子密码。
互联网上的音频/视频服务
概述
当提到在互联网上传送多媒体数据,一般都指“边传输,边播放”的特点。
多媒体信息有两个特点:信息量往往很大;对传输时延和时延抖动有较高要求。
多媒体信息构成的分组在发送时是等时的,但是到达接收端时就变成非等时的了,接收端会在缓存中的分组达到一定数量后,再以恒定速率按顺序将这些分组进行还原播放,这就产生了播放时延,但可以在很大程度上消除时延抖动。
传送时延敏感的数据时,宁可丢失少量分组,也不要接收太晚到达的分组。比如视频会议。
互联网上的音频/视频服务有三种:
- 流式存储音频/视频(流媒体):边下载边播放。
- 流式实况音频/视频:边录制边发送、边下载边播放
- 交互式音频/视频:互联网电话、会议等
流式存储音频/视频
具有元文件的万维网服务器
流媒体可以边下载边播放,但不能存储在硬盘上成为用户的文件。
媒体服务器 又称流式服务器,可以更好地支持流式音频和视频的传送。
TCP 能够保证流式音频/视频文件的播放质量,但是滞后时间长一些。对于实时流式音频/视频文件的传送应该使用 UDP。
实时流式协议RTSP 为了给流式传送过程增加更多功能而设计的协议。RTSP 本身不传送数据,它仅仅是使媒体播放器能够控制多媒体流的传送。
交互式音频/视频
IP电话
通过 IP 网络进行的交互式多媒体实时通信都可以叫做 IP 电话,包括视频通话、即时传信IM(如 QQ)等。
IP 电话的通信质量由两个因素决定: 通话双方端到端的时延和时延抖动。 话音分组的丢失率。
实时运输协议RTP
RTP 采用无连接的 UDP 协议。 实时运输协议 RTP 为实时应用提供端到端的运输,但不提供任何服务质量的保证。 可以把 RTP 看成是 UDP 之上的一个运输层子层的协议。它将应用交给它的多媒体数据块封装成 RTP 分组,然后装入运输层的 UDP 数据报。
实时运输控制协议RTCP
实时运输控制协议 RTCP 是与 RTP 配合使用的协议。RTCP 也采用 UDP 服务,但并不对音频/视频分组进行封装。
RTCP 的主要功能是:服务质量的监视与反馈、媒体间的同步、多播组中成员的标志。
H.323
信令是通信双方为建立呼叫连接和各种控制而传送的专门信息。
IP 电话有两套信令标准:H.323 协议和会话发起协议 SIP。
H.323 不是一个单独的协议而是一组协议,涵盖了很多功能,很复杂。
H.323 标准的 4 个构件是:H.323 终端、网关、网闸、多点控制单元MCU。
会话发起协议SIP
会话发起协议 SIP 相比 H.323 简单很多,它只涉及到 IP 电话所需的信令和有关服务质量的问题。 SIP 使用文本方式的客户服务器协议。
SIP 系统只有两种构件:用户代理(包括用户代理客户和用户代理服务器)和网络服务器(包括代理服务器和重定向服务器)。
SIP 的地址很灵活,可以是电话号码、电子邮件、IP 地址等。
改进”尽最大努力交付”的服务
使互联网提供服务质量 服务质量 QoS 是服务效能的总效果,它决定了一个用户对服务的满意程度。 服务质量可以用一些性能指标来描述:可用性、差错率、响应时间、吞吐量、分组丢失率等。服务提供者可以向用户保证某一等级的服务质量。 要使互联网具有一定的服务质量,可以采取以下措施:
- 分类:区分服务
- 管制
- 调制
- 呼叫接纳
- 加权公平排队
调度和管制机制
综合服务IntServ与资源预留协议RSVP 综合服务 IntServ 可以对单个的应用对话提供服务质量的保证,它定义了两类服务:有保证的服务、受控负载的服务。 IntServ 有四个组成部分:资源预留协议 RSVP、接纳控制、分类器、调度器
区分服务DiffServ 区分服务 DiffServ(简称 DS) 在路由器中增加区分服务的功能,在 IP 数据报中有一个区分服务字段,利用 DS 字段的不同数值提供不同等级的服务质量。 DiffServ 将所有的复杂性放在 DS 域的边界结点中,而使 DS 域内的路由器工作尽可能简单。
无线网络
概述
Wireless Local Area Netwrok (WLAN)。
无线局域网可以分为两大类:
- 有固定基础设施的无线局域网:使用了预先建立起来的基站覆盖一定范围的固定地址,比如蜂窝移动通信网使用了电信公司建立的固定基站。有固定基础设施的无线局域网采用的是 802.11系列协议。
- 无固定基础设施的无线局域网:移动自组网络,比如蓝牙。
802.11
无线以太网的标准是 802.11 系列协议,使用 802.11 系列协议的局域网又称 Wi-Fi。
理解:WLAN 表示无线局域网,Wi-Fi 表示采用 802.11 系列协议的局域网,因此 Wi-Fi 是一种局域网,且属于无线局域网。Wi-Fi 实际上已经成了 WLAN 的代名词。
802.11 无线以太网标准是用星形拓扑,其中心叫做接入点 AP,在 MAC 层使用 CSMA/CA 协议和停止等待协议。
802.11 规定无线局域网的最小构件是基本服务集 BSS。一个 BSS 包括一个基站和若干个移动站,接入点 AP 就是 BSS 内的基站。
所有的站在本 BSS 以内都可以直接通信,与其他站通信则要通过接入点 AP。
每个 AP 都有一个分配的名字,称为服务集标识符 SSID,它其实就是使用该 AP 的无线局域网的名字(也就是 wifi 名字)。
理解:日常说的 wifi 路由器其实就是接入点 AP,而接入点 AP 本身就是一种用于 wifi 的路由器。
一个 BSS 所覆盖的地理范围叫做一个基本服务区 BSA,直径一般不超过 100m。
一个 BSS 可以是孤立的,也可以通过接入点 AP 连到分配系统(DS)。
AP 与 AP 之间的连接是有线的。
当一个移动站(如上图中的 A)从一个服务集漫游到了其他服务集的范围,就要选择一个接入点 AP 与之建立关联,建立关联后加入该 BSS。
移动站关联 AP 后,要通过该 AP 向该子网发送 DHCP 发现报文以获取 IP 地址。这之后,移动站就作为该 AP 子网的成员加入到了网络中
移动站(手机、平板电脑等)通常选择信号最强的 AP 来连接,但是一个 AP 提供的信道是有限的,如果已经耗尽了,就只能连接其他 AP。
移动站与 AP 间通信采用的协议就是 802.11 协议。
现在的手机和电脑上都有内置的无线局域网适配器,它能够实现 802.11 的物理层和 MAC 层的功能。
现在的无线局域网一般采用了加密方案 WPA 或 WPA2,这时要加入该无线局域网就要输入密码。
wifi 是通过宽带上网的,宽带入网的收费是根据用户使用的带宽和使用时间收费的。
移动自组网络 无固定基础设施的无线局域网叫做移动自组网络。蓝牙就是一种自组网络。
移动自组网络没有基站,而是由一些处于平等状态的移动站相互通信组成的临时网络。
自组网络一般不和外界的其他网络相连接。
无线传感器网络 WSN 是一种近年来发展很快的移动自组网络。它由大量传感器结点通过无线通信技术构成。物联网 IoT 就是 WSN 的应用领域。
802.11局域网的物理层
802.11 无线以太网标准是用星形拓扑,其中心叫做接入点 AP,接入点 AP 就是基本服务集内的基站。 wifi 的历史版本
2020年6月正式发布的 wifi6 的标准是IEEE 802.11ax,又称HEW(High Effieciency WLAN),wifi6 标准支持1GHz 到 6GHz 的所有 ISM 频段,包括 6GHz 和目前使用的 2.4GHz 和 5GHz,向下兼容 a/b/g/n/ac。包含多种带宽,其中最高带宽为 160MHz,数据速率为单条流最高1201Mbit/s
第 4 代 wifi 是 802.11n,第 5 代 wifi 是 802.11ac
802.11局域网的MAC层协议
区分 CSMA/CA 协议和 CSMA/CD 协议:
- CSMA/CA:载波监听多点接入/碰撞避免
- CSMA/CD:载波监听多点接入/碰撞检测
802.11 无线以太网在 MAC 层使用 CSMA/CA 协议和停止等待协议。
使用停止等待协议是因为无线信道的通信质量远不如有限信道,要使用停止等待来保证可靠传输。
无线局域网中不能使用 CSMA/CD 协议,因为:无线局域网中不是所有的站点都能听见对方,因此无法实现碰撞检测。使用 CSMA/CA 协议是为了减小碰撞发生的概率。
802.11 的 MAC 层协议通过协调功能来确定基本服务集 BSS 中的各移动站在什么时间发送和接收数据。
它包括两个子层:
- 分布协调功能 DCF:DCF 不采用中心控制,它在每一个结点使用 CSMA 机制的分布式接入算法,让各个移动站通过争用信道来获取发送权。
- 点协调功能 PCF:PCF 是选项,它用接入点 AP 集中控制整个 BSS 内各移动站的活动,使用类似探询的方法将发送数据权轮流交给各个站,以避免碰撞发生。对时间敏感的业务应该采用 PCF。
802.11 无线局域网中的 MAC 帧首部有一个持续期字段,它指出在本帧结束后还要占用信道多少时间。
802.11 标准允许要发送数据的站对信道进行预约,即在发送数据帧之前先发送 RTS 帧请求发送,收到响应允许发送的 CTS 帧后,就可发送数据帧。
802.11 采用了几种机制:
- 帧间间隔时间:所有的站在完成发送后,必须再等待一段帧间间隔时间才能发送下一帧。不同优先级的帧具有不同的帧间间隔 IFS。这可以降低碰撞概率
- 虚拟载波监听:源站把要占用信道的时间通知给其他所有站,其他站在这段时间就停止发送(其他站实际上没有监听,因此叫做虚拟载波监听),这可以降低碰撞概率。
- 随机退避算法:当某个站发现信道变为空闲时,要等待一个 DIFS 的间隔,再执行退避算法,维护一个退避计时器,计时器归零后就立即发送。这样也可以降低碰撞概率。
- 预约机制:要发送数据的站对信道进行预约,即在发送数据帧之前先发送 RTS 帧请求发送,收到响应允许发送的 CTS 帧后,就可发送数据帧。预约帧中会指明预约时间,期间其他站不会再发送数据。用户可以选择性使用预约机制。
802.11局域网的MAC帧
802.11 的 MAC 帧有三种类型:控制帧、数据帧、管理帧。

MAC 帧的首部有 30 字节,尾部是 4 字节的帧检验序列。
802.11 数据帧的地址
802.11 数据帧有4个地址字段。地址4用于自组网络.前三个地址的内容取决于帧控制字段中的“去往 AP”和“来自 AP”。

扩大范围
无线个人区域网 WPAN 就是把个人设备用无线技术连起来的自组网络。WPAN 都工作在 2.4GHz 频段。无线个人区域网包括:蓝牙系统、ZigBee、超高速 WPAN 等。
无线城域网 WMAN 可提供最后一英里的宽带无线接入,可以用来代替现在的有线宽带接入。无线城域网的标准是 802.16 系列协议,它可以覆盖一个城市的部分区域。
移动网络
蜂窝无线通信技术简介
移动通信有多种,如蜂窝移动通信、卫星移动通信等。
蜂窝移动通信网原来属于通信领域,但是现在的蜂窝移动通信网采用了许多 iP 技术,可以支持手机、电脑上网。
蜂窝移动通信是小区制的移动通信,它把整个网络划分成许多小区(也就是蜂窝),每个小区设置一个基站。移动站的通信都必须通过基站完成。
2G 即第二代蜂窝移动通信,带宽为 200kHz,它的代表是 GSM 系统,GPRS 也是 2G 的一种技术。2G 基本只能提供电话和短信服务。
3G 的带宽为 5MHz,并使用了 IP 的体系结构和混合的交换体制(电路交换和分组交换),3G 以后的蜂窝移动通信就是以传输业务为主的通信系统了。
3G/4G 时代诞生了上网卡,上网卡像一个 U 盘,可以插到电脑的 USB 接口上,然后电脑就可以通过 3G/4G 蜂窝移动网络接入互联网。
使用蜂窝移动通信是与同一个蜂窝小区的其他用户共享带宽的,每个用户实际分配到的带宽是不确定的。
小区的组成像蜂窝一样,每个基站的发射功能要能够覆盖本小区,又不会太大以至干扰邻近小区。采用蜂窝结构可以最大化频分复用,每个基站使用不同的频率。
3G 通信网络的构件 无线网络控制器 RNC 控制一组基站,基站通过 RNC 连接到移动交换中心 MSC,MSC 控制所有 RNC 的话音业务,MSC 可以通过网关移动交换中心连接到公用电话网。
RNC 还连接到 GPRS 核心网络,当移动站要上网,就通过 GPRS 来进行。
RNC 处于无线接入网的边缘,它进行无线通信和有线通信的转换。在有线通信这边,RNC 把电路交换的话音通信传送到 MSC,把分组交换的数据传送到 GPRS。
移动IP
当计算机移动到外地,移动 IP 技术允许该计算机仍保留原来的 IP 地址。
移动 iP 与 DHCP 的区别:当用户带着电脑换了个位置,离开了原来的网络,通过 DHCP 协议就可以自动获取所需的 IP 地址。而移动 IP 用于在移动中上网
移动 IP 使用了一些新概念:永久地址、归属地址、归属网络、被访网络、归属代理、外地代理、转交地址、同址转交地址等。
移动 IP 使用了几种协议:移动站到外地代理的协议、外地代理到归属代理的登记协议、归属代理数据报封装协议、外地代理拆封协议等。
一个移动站必须有一个原始地址,即归属地址(又称永久地址),移动站原始连接到的网络叫做归属网络。
移动 IP 通过使用代理来让地址的改变对互联网的其他部分是透明的。归属代理通常就是连接在归属网络上的路由器。
当移动站 A 移动到另一个地点,所接入的网络叫做外地网络(又叫被访网络),被访网络中中使用的代理叫外地代理,通常是连接在被访网络上的路由器。
外地代理负责两件事:
- 为移动站 A 创建一个临时的地址:转交地址。转交地址的网络号与外地网络一致。
- 及时把移动站 A 的转交地址通知 A 的归属代理。
注意:转交地址供移动站、外地代理、归属代理使用,各种应用程序都不使用转交地址。转交地址也不具有唯一性,外地代理向移动站 A 发送数据时不使用地址解析协议 ARP,而是用移动站 A 的 MAC 地址。
有时移动站本身也可以作为外地代理。
一个通信者 B 要与移动站 A 进行通信,其步骤如下:
- B 发送给 A 的数据报目的地址是 A 的永久地址,它被 A 的归属代理所截获。
- 归属代理把 B 发来的数据报再封装(使用了隧道技术),新的数据报的目的地址是 A 现在的转交地址,它被发送给被访网络中的外地代理。
- 外地代理把收到的数据报拆封,取出 B 发送的原始数据发送给 A。A 收到 B 的数据报后也就知道了 B 的 IP 地址。
- 如果 A 要回复 B,就使用自己的永久地址作为源地址,用 B 的 IP 地址为目的地址发送数据报。这时不再需要通过 A 的归属代理。
移动 IP 使用了几种协议:
- 移动站到外地代理的登记协议:移动站接入到被访网络时,要向外地代理登记,获得临时的转交地址。离开该被访网络时要注销。
- 外地代理到归属代理的登记协议:外地代理向归属代理登记移动站的转交地址。
- 归属代理数据报封装协议:将收到的发给移动站的数据报进行封装,以转交地址为新的目的地址。
- 外地代理拆封协议:收到数据报后拆封并发给移动站。
蜂窝移动通信网中对移动用户的路由选择
移动 IP 的路由选择有间接路由选择和直接路由选择。上述方法就是间接路由选择。直接路由选择需要使用通信者代理和锚外地代理。 移动交换中心维护了两个数据库: 归属位置寄存器 HLR:类似归属代理的功能。 来访用户位置寄存器 VLR:类似外地代理的功能。
GSM中的切换
略。
无线网络对高层协议的影响
移动站在不同无线网络间漫游时,网络的连接会发生中断。TCP 报文段会频繁丢失,TCP 的拥塞控制会受到影响,缩小拥塞窗口,而实际上网络中并不拥塞。 处理的方法: 本地恢复。 让 TCP 发送方知道什么地方使用了无线链路。 让含有移动用户的端到端 TCP 连接拆成两个互相串接的 TCP 连接:从移动用户到无线接入点一个 TCP 连接,剩下的有线网络使用另一个 TCP 连接。
蜂窝移动网络的收费采用的是按流量计费