计算机网络微课堂笔记
B站 湖科大教书匠 计算机网络微课堂计算机网络保姆级总结笔记,万字总结,一套带走
计算机网络
计算机网络微课堂 笔记总结
视频地址:https://www.bilibili.com/video/BV1c4411d7jb
文章目录
- 计算机网络
- 第一章 概述
- 第二章 物理层
- 第三章 数据链路层
- 第四章 网络层
- 第五章 运输层
- 第六章 应用层
第一章 概述
1.1 计算机网络在信息时代的作用
-
计算机网络由通信基础设施发展成为一种重要的信息服务基础设施
-
计算机网络已经成为生活中不可或缺的一部分
1.2 因特网概述
内容提要
- 网络、互联网和因特网(理解)
- 因特网的发展三阶段(了解)
- 因特网的标准化工作(了解)
- 因特网的组成(理解)
网络、互联网和因特网
- 网络(Network) 由若干 结点(Node) 和连接这些结点的 链路(Link) 组成
- 多个网络路由器互联,构成一个覆盖范围更大的网络,即互联网也叫网络的网络
- 因特网(Internet)是世界上最大的互联网络
因特网的发展三阶段
ISP
普通用户通过ISP接入因特网,由ISP从因特网管理机构申请成块IP地址,且架设通信线路和路由器联网设备
任何机构或个人向ISP缴纳相应费用,可从ISP得到所需IP地址,因特网的主机就由这IP地址进行通信
基于ISP的三层结构的因特网
- 第一层:主干网:国际性区域覆盖规模,高速链路和交换设备,第一层ISP直接互联
- 第二层:第一层ISP的用户:国家性、区域性覆盖规模
- 第三层:第一层ISP的用户:本地范围覆盖规模,校园网、企业网、住宅用户、无线移动用户
因特网的标准化工作
因特网的组成
从功能划分为边缘部分和核心部分
路由器 在网络核心部分起特殊作用,一种专用计算机,实现分组交换的关键构件,任务是转发收到的分组。负责将各种网络互联,对接收的分组进行转发,也即分组交换
1.3 三种交换方式
内容提要
- 电路交换(Circuit Switching)(了解)
- 分组交换(Packet Switching)(理解)
- 报文交换(Message Switching)(了解)
- 三者对比
电路交换(Circuit Switching)
两两相连的电话线是不现实的,所以需要一个中间设备将电话相连,从而大大减少连接的电话线数量
电路交换三步骤解读
- 建立连接:先拨通电话建立连接,即专用的物理通路,保证双方通信资源不被其他用户占用
- 通话:通话期间,连接建立的通信资源始终被占用
- 释放连接:通话完毕挂断电话,电话交换机释放使用的专用物理通路,归还占用的通信资源
使用电路交换传送计算机数据,线路传输效率低,因为数据是突发性出现的,编写数据时占用的资源利用白白浪费
引出了分组交换
分组交换(Packet Switching)
分组交换中要传输的消息称作报文。(下图绿色部分)
把报文划分成一个个更小的等长数据段
每个数据段前加上必要的控制信息组成的 首部,构成了分组,也即为包,首部也可称为包头
添加的首部中包含了分组的目的地址,防止数据在传输过程中“迷路”,路由器不知到路径无法转发数组
分组交换机收到分组,暂时存储,再检查其首部,按首部中的目的地址进行查表转发,找到合适转发接口
目的地址的主机收到分组后,去掉首部,
将各数锯段组合还原成原始报文
此案例中只展示出了分组传输出现的两种情况:
- 路由不同:各分组从源站到目的站可以走不同的路径
- 分组乱序:分组到达目的站的顺序不一定与分组在源站的发送顺序相同
发送方、路由器、接收方的任务
发送方:构造分组、发送分组
路由器:缓存分组、转发分组——存储转发
接收方:接受分组、还原报文
报文交换(Message Switching)
报文交换的交换结点也采用存储转发方式,但报文交换对报文大小没有限制,要求交换结点需要有较大的缓存空间
报文交换主要用于早期的电报通信网,现在较少使用,通常被较先进的分组交换方式取代
三者对比
1.4 计算机网络的定义和分类
内容提要
- 计算机网络的定义(了解)
- 计算机网络的分类(了解)
计算机网络的定义
计算机网络的精确定义并未统一,最简单的定义是:一些互相连接的、自治的计算机集合
- 互连:计算机之间通过有线或无线的方式进行数据通信
- 自治:独立的计算机,有自己的硬件和软件,可单独运行使用
- 集合:至少需要两台计算机
计算机网络的较好的定义是:计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能 支持广泛的和日益增长的应用。
- 意味着计算机网络所连接的硬件,并不限于一般的计算机,还可以包括智能手机、平板等智能硬件
- 计算机网络并非专门用来传递数据,而是能够支持很多的应用(包括今后可能出现的各种应用)
计算机网络的分类
1.5 计算机网络的性能指标
性能指标:可以从不同的方面来度量计算机网络的性能
常用的计算机网络的性能指标有:
-
速率
-
带宽
-
吞吐量
-
时延
注:关于网络时延中的处理时延运算复杂,一般忽略,而发送时延和传播时延谁起到主导地位具体情况具体分析
-
时延带宽积
-
往返时间
-
利用率
-
丢包率
性能指标总结
1.6 计算机网络体系结构(重点、难点)
内容提要
- 常见的计算机网络体系结构(理解)
- 计算机网络体系结构分层的必要性(了解)
- 计算机网络体系结构分层思想举例(了解)
- 计算机网络体系结构中的专业术语(理解)
常见的计算机网络体系结构
为了使不同体系结构的计算机网络都能互连,研究出了 “开放系统互联参考模型” 即OSI 。虽标准已经制定出来,但是因特网已经抢先在全世界覆盖相当大范围,其使用的 “TCP/IP参考模型” 也就成了事实上的标准
OSI失败的原因:
-
OSI专家们缺乏实际经验,没有商业驱动力
-
OSI的实现过于复杂,运行效率很低
-
OSI制定周期太长,无法及时进入市场
-
OSI层次划分也不合理,有些功能在多个层次中重复出现
网络接口层为满足互连全世界各种不同的网络接口(有线以太网接口、无线WIFI接口),没有规定具体内容。
不适用与学习计算机网络原理,所以采用折中方法,综合OSI和TCP/IP的优点,采用 五层原理体系结构
用户主机必须使用TCP/IP协议才可接入因特网,即使不接入因特网也可使用TCP/IP协议。用户主机的操作系统中自带符合TCP/IP体系结构标准的TCP/IP协议族,用于网络互连的路由器中也带有TCP/IP协议族,只不过只包含网络接口层和网际层。
因为网络接口层没有规定具体内容。本质上TCP/IP体系结构只有三层。
- IP协议是TCP/IP体系结构网际层的核心协议
- IP协议可以将不同的网络接口进行互连,并向其上的TCP和UDP协议提供网络互连服务
- 互连不同的网络接口(IP over everything)
- 为各种网络应用提供服务(Everything over IP )
- IP协议可以将不同的网络接口进行互连,并向其上的TCP和UDP协议提供网络互连服务
- TCP和UDP是TCP/IP体系结构运输层的两个重要协议
- TCP协议在享受IP协议提供的网络互连服务基础上,向应用层相应协议提供可靠的传输服务
- UDP协议在享受IP协议提供的网络互连服务基础上,向应用层相应协议提供不可靠的传输服务
- TCP/IP体系结构应用层有大量应用层协议,如HTTP、SMTP、DNS、RTP等
计算机网络体系结构分层的必要性
- 计算机网络是个非常复杂的系统早在最初的ARPANET设计时就提出了分层的设计理念。
- "分层"可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
采用分层需考虑案例:
- 物理层
两台计算机通过一根网线连接
注: 传输媒体不属于物理层,不包含在体系中,计算机网络传输信号并不是方波信号,此例仅为方便理解
- 数据链路层
实用的计算机网络,一般由多台主机构成
注:总线型网络早已淘汰,现在常用以太网交换机将多台主机互连形成交换式以太网(上图右下角)
以上只要解决了物理层和数据链路层所面临的问题,就可以实现分组在一个网络上传输了
- 网络层
因特网是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层还不能正常工作
以上只要解决了物理层、数据链路层和网络层所面临的问题,可以实现分组在网络间传输
- 运输层
主机运行不止一个与网络通信相关的应用进程
以上只要解决了物理层、数据链路层和网络层所面临的问题,可以实现进程之间基于网络的通信
- 应用层
总结案例:
计算机网络体系结构分层思想举例
主机和Web服务器之间基于网络的通信,实际是主机中的浏览器应用进程与Web服务器中的Web服务器应用进程之间的基于网络的通信。
体系结构的各层在整个过程中的作用:
从主机端按体系结构自顶向下顺序看:
- 应用层:按HTTP协议规定构建一个HTTP请求报文,交付给运输层处理
- 运输层:给HTTP请求报文添加一个TCP首部,成为TCP报文段,将TCP报文段交付给网络层处理
- TCP首部:主要为了区分应用进程以及实现可靠传输
-
网络层:给TCP报文段添加一个IP首部,成为IP数据报,将IP数据报交付给数据链路层处理
- IP首部:主要为了使IP数据报可在互联网上传输,即被路由器转发
- IP首部:主要为了使IP数据报可在互联网上传输,即被路由器转发
-
数据链路层:给IP数据报添加一个首部和尾部,成为帧,将帧交付给物理层处理
- 以太网帧首部:主要为了让帧能够在一段链路上或一个网络上传输,能够被相应的主机接收
- 以太网帧尾部:主要为了让目的主机检查所接收到的帧是否有误码
- 物理层:将帧看作比特流,网络N1以太网,物理层会给该比特流前添加前导码,将添加有前导码的比特流变换相应的信号发送给传输媒体,
- 前导码:为了让目的主机做好接收帧的准备
路由器的处理过程看:
- 物理层:将信号变换为比特流并去掉前导码,将帧交付给数据链路层处理
- 链路层:将帧的首部和尾部去掉,将IP数据报交付给网络层处理
- 网络层:解析IP数据报的首部,从中提取到目的网络地址,查找自身的路由表。确定转发接口,将IP数据报交付给数据链路层处理
- 链路层:给IP数据报添加一个首部和尾部成为帧,将帧交付给物理层处理
- 物理层:将帧看作比特流,网络N2是以太网,物理层会给该比特流前添加前导码,将添加有前导码的比特流变换相应的信号发送给传输媒体
Web服务器处理过程:
- 物理层:将信号转换成比特流,然后去掉前导码,交付给数据链路层处理
- 链路层:将帧的首部和尾部去掉,将其交付给网络层处理
- 网络层:将IP数据报首部去掉,将其交付给运输层处理
- 运输层:将TCP报文段首部去掉,将其交付给应用层处理
- 应用层:将HTTP请求报文解析,给主机发回HTTP响应报文
HTTP响应报文需要在Web服务器层层封装,通过物理层变换相应的信号,再通过传输媒体传输到路由器,路由器转发该响应报文给主机,主机通过物理层将收到的信号转换为比特流,之后通过逐层解封,最终取出HTTP响应报文。
计算机网络体系结构中的专业术语
实体:
协议:
协议三要素:
- 语法:定义所交换信息的格式
- 语义:定义收发双方所要完成的操作
- 同步:定义收发双方的时序关系
服务:
服务访问点:在同一系统中的相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型
服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语
协议
1.7 章节小结及习题测试
习题测试
体系结构相关习题
时延相关习题
注:比特是一个跟着一个同时向前传播的,因此无论有多少个比特,在总时延中只包含一个传播时延,增加比特数量,只是增加了发送时延,而传播时延数量不变,所以第一种解法的错误在于:重复包含了(n-1)个传播时延
第二章 物理层
2.1 物理层的基本概念
物理层:解决在各种传输媒体上传输比特0和1的问题,进而给数据链路层提供透明传输比特流服务
注: 透明是指数据链路层看不见也无需看见物理层究竟使用什么方法来传输比特0和1,只管享受物理层提供的比特流传输服务即可
2.2 物理层下面的传输媒体(了解)
内容提要
- 导引型传输媒体
- 非导引型传输媒体
导引型传输媒体
- 同轴电缆
- 双绞线
- 光纤
只要从纤芯中射到纤芯表面的光线的入射角大于某一个临界角度,就可产生全反射,即可以存在多个角度入射的光线在一条光纤中传输,这种光纤叫多模光纤
- 电力线
非导引型传输媒体(自由空间)
利用电磁波在自由空间的传播来传送数据信息,下图为电磁波频谱
- 无线电波
- 微波
- 红外线
- 可见光
LiFi:实验研究阶段,前景较为看好
2.3 传输方式
内容提要
- 串行传输和并行传输
- 同步传输和异步传输
- 单向通信(单工)、双向交替通信(半双工)和双向同时通信(全双工)
串行传输和并行传输
-
串行传输
数据为 一个比特依次发送,在发送端和接收端之间只需要一条数据传输线路即可
-
并行传输
数据为 n个比特依次发送,在发送端和接收端之间需要n条数据传输线路
对比:并行传输的优点是速度为串行传输的n倍,但是有个严重的缺点,即就是成本高
数据在传输线路上传输采用串行传输,计算机内部的数据传输,常常采用并行传输
同步传输和异步传输
-
同步传输
数据块以 稳定的比特流的形式 传输,字节之间没有间隔,接收端在 每个比特信号的中间时刻进行检测,以判断接收到的是比特0还是比特1,由于不同设备的 时钟频率存在一定差异,不可能完全相同,在传输大量数据的过程中,所产生的判别时刻的累计误差,会导致接收端对比特信号的判别错位,需要 采取方法使收发双方的时钟保持同步
-
异步传输
数据块 以字节为独立的传输单位,字节之间 时间间隔不固定,接收端仅在每个字节的起始处对字节内的比特实现同步,通常在每个字节的前后分别加上起始位和结束位
单向通信(单工)、双向交替通信(半双工)和双向同时通信(全双工)
- 单向通信
- 通信双方只有一个数据传输方向
- 只需要一条信道
- 双向交替通信
- 通信双方可以相互传输数据,但是不能同时进行
- 需要两条信道(每个方向各一条)
-
双向同时通信
- 通信双方可以同时发送和接收信息
- 需要两条信道(每个方向各一条)
2.4 编码与调制
内容提要
- 常用编码
- 基本调制方法
- 混合调制
传输媒体与信道的关系:严格来说传输媒体和信道不能直接划等号
- 单工传输:传输媒体中只包含一个信道,要么是发送信道,要么是接收信道
- 半双工、全双工传输:传输媒体中包含两个信道,一个是发送信道,另一个是接收信道
- 使用信道复用技术,一条传输媒体中可包含多个信道
常用编码
- 不归零编码
-
需要额外一根传输线来传输时钟信号,吏发送方和接收方同步。
-
对于计算机网络,宁愿利用这根传输线传输数据信号,而不是传输时钟信号!
-
因此,由于不归零编码存在同步问题,计算机网络中的数据传输不采用这类编码
-
归零编码
-
每个码元传输结束后信号都要“归零”,所以接收方只要在信号归零后进行采样即可,不需单独时钟信号
-
实际上,归零编码相当于把时钟信号用“归零”方式编码在了数据之内,这称为“自同步”信号。
-
但是,归零编码中大部分的数据带宽,都用来传输“归零”而浪费掉了。编码效率低
-
曼彻斯特编码
-
码元中间时刻的跳变既表示时钟,又表示数据
-
差分曼彻斯特编码
- 跳变仅表示时钟
- 码元开始处电平是否发生变化表示数据
- 比曼彻斯特编码变化少,更适合较高的传输速率
基本调制方法
使用基本调制方法,1个码元只能包含1个比特信息。为了能使1个码元包含更多的比特,引出了混合调制
混合调制
因为频率和相位是相关的,即频率是相位随时间的变化率。所以一次只能调制频率和相位两个中的一个
通常情况下,相位和振幅可以结合起来一起调制,称为正交振幅调制QAM
2.5 信道的极限容量
码间串扰:信号波形失去了码元之间的清晰界限
奈氏重则和香农公式
基本调制方法:二元调制,只能产生两种不同的码元,即两种不同的基本波形,因此每个码元只能携带1比特信息量
混合调制:多元调制,如QAM16可调制16种不同的码元,因此每个码元能携带4比特信息量
例题:
2.6 章节小结及习题测试
习题测试
1.2. 3.
4.
5.
6.
7.
第三章 数据链路层
3.1 数据链路层的概述
内容提要
- 数据链路层的概述
- 数据链路层的三个重要问题
- 差错检测
- 可靠传输
数据链路层的概述
- 链路(Link):就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
- 数据链路(Data Link):是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
- 数据链路层以帧为单位传输和处理数据。
数据链路层的三个重要问题
使用点对点信道的数据链路层
-
封装成帧
-
差错检测
- 可靠传输
使用广播信道的数据链路层
-
除了上述三个问题还有以下问题
-
编址问题
-
共享式局域网中传输信号产生碰撞问题
3.2 封装成帧
内容提要
- 封装成帧
- 透明传输
封装成帧
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
- 帧头和帧尾中包含有重要的控制信息。
- 帧头和帧尾的作用之一就是帧定界。
注: 并不是每一种数据链路层协议的帧都包含有帧定界标志,如以太网版本2的MAC帧格式
以太网的数据链路层将封装好的MAC帧交付给物理层,物理层在其前面添加8字节前导码,将比特流转换成==电信号发送,前导码中前七个字节为前同步码==,使接收方的时钟同步,之后1字节为帧的开始定界符,表明其后紧跟着的就是MAC帧,另外以太网还规定了帧间间隔时间为96比特的发送时间,因此MAC帧不需要帧结束定界符
透明传输
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
- 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
- 面向比特的物理链路使用比特填充的方法实现透明传输。
相关练习
注:
3.3 差错检测
内容提要
- 差错检测
- 奇偶校验
- 循环冗余校验CRC(Cyclic Redundancy Check)
差错检测
- 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为==比特差错==
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为 误码率BER (Bit Error Rate)。
- 使用==差错检测码==来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
奇偶校验
循环冗余校验CRC(Cyclic Redundancy Check)
相关练习
注:
3.4 可靠传输
内容提要
-
可靠传输的基本概念
-
可靠传输的实现机制
可靠传输的基本概念
使用 差错检测技术 如循环冗余校验CRC),接收方的数据链路层可检测出帧在传输过程中是否产生了 误码(比特错误)
处理差错取决于数据链路层向上层提供的服务类型:
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
- 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。
注:比特差错 只是传输差错中的一种。从整个计算机网络体系结构来看,传输差错还包括 分组丢失、分组失序以及分组重复。
-
分组丢失
-
分组失序
- 分组重复
注:分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会比现在其上层。
可靠传输的实现机制
- 停止-等待协议SW(Stop-and-Wait)
- 发送方给接收方发送数据分组
- 接受方收到后对其进行差错检测,若没有误码,则接收分组,并给发送方发送确认分组,即ACK
- 发送方收到对所发送数据分组的确认分组后,才能发送下一个数据分组,假设这个数组在发送过程中出现误码
- 接收方收到后进行差错检测,发现误码,则丢弃该数据分组,并给发送方发送否认分组,即NAK
- 发送方收到对所发送数据分组的否认分组后,知道之前所发送的数据分组出现差错,而被接收方拒绝,于是立刻重传该数据分组
-
因此发送方每发送完一个数据分组,并不能立刻将该数据分组从缓存中删除,只有在收到针对该数据分组的确认分组后才将其从缓存中删除
-
实际情况中,接收方收不到数据分组,就不会发送ACK或NAK。如果不采取其他措施,发送方就会一直处于等待接收方ACK或NAK的状态。
-
为解决该问题,可以在发送方发送完一个数据分组时,启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍收不到接收方的任何ACK或NAK,则重传原来的数据分组,这就叫做超时重传。
-
一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
-
为避免分组重复这种传输错误,必须给每个分组带上序号。
-
对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其发送序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就够了。
-
停止-等待协议的信道利用率
- Ta一般远小于Td可以忽略,当往返时延RTT远大于数据帧发送时延Td时(例如使用卫星链路),信道利用率非常低。
- 若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
- 为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。
相关练习
- 回退N帧协议GBN(GO-Back-N)
案例演示
- 无差错情况:
- 发送方将数据分组依次连续发送出去,经过互联网传输,正确到达接收方,无乱序和误码
- 接收方按序接收,每接收一个接收窗口向前滑动一个位置,并给发送方发送针对所接收分组的确认分组
- 经过互联网传输正确到达了发送方,发送方每接收一个发送窗口向前滑动一个位置,新的序号将落入发送窗口
- 发送方可以将收到确认的数据分组从缓存中删除了,接收方可择机将已接收的数据分组交付上层处理
- 累积确认情况:
接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定)对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组都已正确接收。
优点:即使确认分组丢失,发送方也可能不必重传,可以减少接收方的开销,减少对网络资源的占用
缺点:不能及时向发送方反映出接收方已经接收数据分组
- 发送方将数据分组依次连续发送出去,经过互联网传输,正确到达接收方,无乱序和误码
- 接收方按序接收,接收完一部分(0~1) ,给发送方发送一个累积确认ACK1,又接收完一部分(2~4),给发送方再次发送一个累积确认ACK4
- 假设ACK1在传输过程中丢失,ACK4经过互联网传输正确到达了发送方
- 发送方接收ACK4知道,序号4及其之前数据分组已经被接收方正确接收,发送窗口向前滑动5个位置,新的序号将落入发送窗口
- 发送方可以将收到确认的数据分组从缓存中删除了,接收方可择机将已接收的数据分组交付上层处理
- 有差错情况:
- 发送方将数据分组依次连续发送出去,经过互联网传输,到达接收方,假设在传输过程中受到干扰出现误码
- 接收方通过数据分组中的检错码发现错误,于是丢弃该数据分组,后续到达的数据分组的序号与接收窗口的序号不匹配,接收方同样不能接收,将其丢弃,并对之前按序接收的最后一个数据分组进行确认,也即发送ACK4,每丢弃一个数据分组,就发送一个ACK4
- ACK4经过互联网传输正确到达了发送方,发送方之前就收到了ACK4,再次收到这些ACK4,就知道之前发送的数据分组有差错,于是可以不等超时计时器超时就立刻开始重传,对于收到几个重复确认就立刻重传,具体实现决定
- 假设这4个重复确认不会触发发送方立刻重传。一段时间后超时计时器出现超时,发送方将发送窗口内已发送过的这些数据分组全部重传
- 尽管之前一些数据分组正确到达接收方,但由于前面的数据分组误码而“受到牵连”不被接收,发送方仍重传这些数据分组,即回退N帧
总结
相关练习
- 选择重传协议SR(Stop-and-Wait)
注:选择重传协议为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认!
案例演示
- 发送方将序号落在发送窗口内的这4个数据分组依次连续发送,经过互联网传输,到达接收方,但其中2号数据分组丢失了
- 只要序号落入接收窗口内且无误码的数据分组,接收方都会接收,接收方接收0,1号数据分组,并发送0,1号确认分组,接收窗口向前滑动两个位置,接收方接收3号数据分组,并发送3号确认分组,但接收窗口不向前滑动,因为3号数据分组时未按序达到的数据分组
- 这些确认分组经过互联网传输正确到达了发送方,发送方每按序收入一个分组,发送窗口就向前滑动一个位置,接收0,1号确认分组,发送窗口向前滑动两个位置,接收3号确认分组,但发送窗口不向前滑动,因为只是一个未按序达到的确认分组,需要记录3号数据分组已收到确认,该数据分组就不会超时重发
- 接收方接收4、5号数据分组,并发送4、5号确认分组,但接收窗口不向前滑动
- 假设在4、5号确认分组的传输过程中,发送方针对2号数据分组的重传计时器超时了,发送方重传2号数据分组,4、5号确认分组陆续到达发送方,发送方接收4、5号确认分组,但发送窗口不向前滑动
- 接收方接收到重传的2号数据分组,并发送2号确认分组,接收窗口向前滑动4个位置
- 2号确认分组经过互联网传输,到达发送方,发送方接收2号确认分组,发送窗口向前滑动4个位置
总结
相关练习
3.5 点对点协议PPP
- 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议。
- PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661, RFC1662
- PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法(封装成帧)
- 链路控制协议LCP用于建立、配置以及测试数据链路的连接
- 一套网络控制协议NCPs其中的每一个协议支持不同的网络层协议
-
帧格式
-
透明传输
- 面向字节的异步链路采用插入转义字符的字节填充法
- 面向比特的同步链路采用插入比特0的比特填充法
-
差错检测
- 工作状态
3.6 媒体接入控制
内容提要
- 基本概念
- 静态划分信道
- 随机接入——载波监听多址接入/碰撞检测CSMA/CD
- 随机接入——载波监听多址接入/碰撞避免CSMA/CA
基本概念
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
静态划分信道
-
信道复用
- 复用(Multiplexing)是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。
- 当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
-
常见信道复用技术
-
频分复用FDM
-
时分复用TDM
-
波分复用WDM
-
码分复用CDM
码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA(Code Division Multiple Access)。
同理,频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TDMA(Time Division Multiple Access)。复用与多址的概念。可简单理解如下:
- 复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
- 多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。
- 某种程度上,FDMA、TDMA、CDMA可以分别看成是FDM、TDM、CDM的应用。
与FDM和TDM不同,CDM的每一个用户可以 在同样的时间使用同样的频带进行通信。
由于 各用户使用经过特殊挑选的不同码型,因此各用户之间 不会造成干扰。
CDM最初是用于军事通信的,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信中在CDMA中,每一个比特时间再划分为m个短的间隔,称为 码片(Chip)。通常m的值是64或128为了简单起见,在后续的举例中,我们假设m为8。
使用CDMA的每一个站被指派一个唯一的 m bit码片序列(Chip Sequence) 。- 一个站如果要发送比特1,则发送它自己的m bit码片序列;
- 一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码;
-
码片序列的挑选原则如下:
-
分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
-
分配给每个站的码片序列必须相互正交(规格化内积为0)。
令向量S表示站S的码片序列,令向量T表示其他任何站的码片序列。
两个不同站S和T的码片序列正交,就是向量S和T的规格化内积为0:
案例演示
相关练习
随机接入——载波监听多址接入/碰撞检测CSMA/CD
如何协调总线上各主机的工作,尽量避免产生碰撞是一个必须要解决的问题,早期共享式以太网采用 载波监听多址接入/碰撞检测
注: 96比特时间 指发送96比特所耗费的时间,也称为帧间最小间隔,其作用是使接收方可以检测出一个帧的结束,同时也使得所有其他站点都能有机会平等竞争信道并发送帧
争用期(碰撞窗口)
最小帧长
最大帧长
截断二进制指数退避算法
信道利用率
帧发送流程图
帧接收流程图
相关练习
3.
注:CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。
随机接入——载波监听多址接入/碰撞避免CSMA/CA
既然CSMA/CD协议已经成功地应用于使用广播信道的有线局域网,那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?
- 在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞。
- 在无线局域网中,不能使用碰撞检测CD,原因如下:
- 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。
- 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。
- 802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能。
- 由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了==数据链路层确认机制(停止-等待协议)==来保证数据被正确接收。
- 802.11的MAC层标准定义了两种不同的媒体接入控制方式:
- 分布式协调功能DCF(Distributed Coordination Function)。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式。
- 点协调功能PCF(Point Coordination Function)。PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。
帧间间隔IFS(InterFrame Space)
- 802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS。
- 帧间间隔的长短取决于该站点要发送的帧的类型:
- 高优先级帧需要等待的时间较短,因此可优先获得发送权
- 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。
- 常用的两种帧间间隔如下:
- 短帧间间隔SIFS(28us),是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
- DCF帧间间隔DIFS(128us),它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧。
CSMA/CA协议的工作原理
- 假设无线信道是空闲的,源站有数据帧要发送,当源站检测到信道空闲,则在等待帧间间隔DIFS后发送该数据帧(注:源站检测到信道空闲还等待一段时间DIFS,是因为考虑到可能有其他站有高优先级的帧要发送,若有,就要让高优先级帧先发送)
- 目的站若正确收到该数据帧,则经过帧间间隔SIFS后,向源站发送确认帧ACK(注:目的站在正确接收数据帧后还等待一段时间SIFS才发生ACK帧,是因为SIFS是最短的帧间间隔,用来分开属于一次对话的各帧,在这段时间内,一个站点应当能够从发送方式切换到接收方式)
- 若源站在规定时间内没有收到确认帧ACK,由重传计时器控制这段时间,就必须重传该数据帧,直到收到确认为止,或经过若干次的重传失败后放弃发送
- 在源站和目的站的一次对话过程中,无线信道处于忙状态,若无线信道处于忙状态时,其他无线站点要发送数据,则必须退避,当信道从忙状态转换到空闲状态,并经过帧间间隔DIFS后,其他要发送的无线站点要退避一段随机时间后才能发送(注:信道由忙状态转换到空闲状态且经过DIFS时间后,还要退避一段随机时间才使用信道,是防止多个站点同时发送数据而产生碰撞)
- 当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。
- 以下情况必须使用退避算法:
- 在发送数据帧之前检测到信道处于忙状态时
- 在每一次重传一个数据帧时
- 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)。
CSMA/CA协议的退避算法
案例演示
- 假设A正在占用无线信道发送帧,在A的发送过程中,B、C、D也要发送帧,于是进行载波监听,发现信道忙,需要退避。
- 根据退避算法,选择出一个随机的退避时间,并在每个时隙对信道进行一次检测,当检测到信道由忙状态转为空闲状态,且经过帧间间隔DIFS后,退避计时器开始倒计时
- 假设C的退避时间最短,当C的退避计时器到时后,C立即开始发送帧,此时信道由空闲状态转换为忙状态,当B和D检测到信道忙后,就冻结各自剩余的退避时间
- 假设在C占用无线信道发送帧的过程中,E也要发送帧,于是进行载波监听,发现信道忙,需要退避,根据退避算法选择出一个随机的退避时间,并在每个时隙对信道进行一次检测,当检测到信道由忙状态转为空闲状态,且经过帧间间隔DIFS后,退避计时器开始倒计时
- 当B和D检测到信道由忙状态转为空闲状态,且经过帧间间隔DIFS后,退避计时器重新开始从上次冻结的退避剩余时间开始倒计时
- D的退避计时器首先到时,D立即开始发送帧,此时信道由空闲状态转换为忙状态
- 当B和E检测到信道忙后,就冻结各自的剩余的退避时间,当D发送完帧后,信道转为空闲状态,当B和E检测到信道由忙状态转为空闲状态且经过帧间间隔DIFS后,退避计时器重新开始从上次冻结的退避剩余时间开始倒计时
- E的退避计时器首先到时,E立即开始发送帧,此时信道由空闲状态转换为忙状态
- 当B检测到信道忙后,就冻结自己剩余的退避时间,当E发送完帧后,信道转为空闲状态,当B检测到信道由忙状态转为空闲状态且经过帧间间隔DIFS后,退避计时器重新开始从上次冻结的退避剩余时间开始倒计时
- 当B的退避计时器到时后,B立即开始发送帧,若B发送完这一帧后还有帧要发送,则在检测到信道空闲且经过帧间间隔DIFS后,还必须再退避一段随机时间后才能发送
CSMA/CA协议的信道预约和虚拟载波监听
为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。
- 源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Reqest To Send),它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间。
- 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To end),它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。
- 源站收到CTS帧后,再等待━段时间SIFS后,就可发送其数据帧。
- 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
- 除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。
- 如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。
- 由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。802.11标准规定了3种情况供用户选择:
- 使用RTS帧和CTS帧
- 不使用RTS帧和CTS帧
- 只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧
- 除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。
- 由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。
相关练习
3.7 MAC地址、IP地址以及ARP协议
内容提要
- MAC地址
- IP地址
- ARP协议
- 总结
MAC地址
-
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址;
-
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为 MAC地址;
- MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址
-
MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
相关练习
-
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
注:给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址,具体可在以下网址查询http://standards.ieee.org/develop/regauth/grpmac/public.html
IP地址
- 数据包转发过程中源IP地址和目的IP地址保持不变;
- 数据包转发过程中源MAC地址和目的MAC地址逐个链路(或逐个网络)改变。
相关练习
ARP协议
- 每台主机都有一个ARP高速缓存表,记录有IP地址和MAC地址的对应关系,当主机B给主机C发送数据包时,先在自己的ARP高速缓存表中查找主机C的IP地址对应的MAC地址
- 但未找到,因此主机B需要发送ARP请求报文来获取主机C的MAC地址,ARP请求报文被封装在MAC帧中发送,目的地址为广播地址,主机B发送封装有ARP请求报文的广播帧,总线上的其他主机都能收到该广播帧
- 主机A的网卡收到该广播帧,将其送交上层处理,上层的ARP进程解析ARP请求报文,发现所询问的IP地址不是自己的IP地址,因此不予理会
- 主机C的网卡收到该广播帧,将其送交上层处理,上层的ARP进程解析ARP请求报文,发现所询问的IP地址正是自己的IP地址,需要进行响应
- 主机C首先将ARP请求报文中所携带的主机B的IP地址和MAC地址记录到自己的ARP高速缓存表中,然后给主机B发送ARP响应报文,以告诉自己的MAC地址
- 主机C给主机B发送封装有ARP响应报文的单播帧,总线上的其他主机都能收到该单播帧
- 主机A的网卡收到该单播帧后,发现其目的MAC地址与自己的MAC地址不匹配,直接丢弃该帧
- 主机B的网卡收到该单播帧后,发现其目的MAC地址就是自己的MAC地址,将其交付上层处理,上层的ARP进程解析ARP响应报文,将其所包含的主机C的IP地址与MAC地址记录到自己的ARP高速缓存表中
ARP高速缓存表中的每一条记录都有其类型,分为动态和静态两种
- 动态类型是指记录是主机自动获取到的,其生命周期默认为两分钟,当生命周期结束时,该记录将自动删除
- IP地址和MAC地址的对应关系不是永久性的,主机的IP地址没变,MAC地址再更换网卡后会改变
- 静态类型是指记录是用户或网络维护人员手工配置的,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效
ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用,需要逐段链路使用
总结
3.8 集线器与交换机的区别
对比集线器和交换机
-
单播
- 对于使用集线器的共享总线型以太网,单播帧会传播到总线上的其他各主机,各主机中的网卡根据帧的目的MAC地址决定是否接收该帧
- 对于使用交换机的交换式以太网,交换机收到单播帧后根据帧的目的MAC地址和自身的帧交换表,将帧转发给目的主机,而不是网络中的其他各主机
-
广播
- 对于使用集线器的共享总线型以太网,广播帧会传播到总线上的其他各主机,各主机中的网卡检测到帧的目的MAC地址是广播地址,就接收该帧
- 对于使用交换机的交换式以太网,交换机收到广播帧后,检测到帧的目的MAC地址是广播地址,于是从除该帧进入交换机接口外的其他各接口转发该帧,网络中除源主机的其他各主机接收到广播帧后,接受该广播帧
-
多台主机同时给另一台主机发送单播帧
- 对于使用集线器的共享总线型以太网,这必然会产生碰撞,遭遇碰撞的帧会传播到总线上的各主机
- 对于使用交换机的交换式以太网,交换机收到多个帧时,会将他们缓存起来,然后逐个转发给目的主机,不会产生碰撞
-
扩展以太网
- 发送单播帧
- 发送广播帧
- 多台主机同时给另一台主机发送单播帧
因此,如果仅仅使用集线器来扩展以太网,不仅会扩大广播域还同时扩大了碰撞域,但是使用交换机将原来各自独立的碰撞域连接起来,只会扩大广播域,不会扩大碰撞域,即交换机会隔离碰撞域
总结
3.9 以太网交换机自学习和转发帧的流程
- 以太网交换机工作在 数据链路层(也包括物理层)
- 以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
- 以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。
案例演示
-
假设主机A给主机B发送帧,该帧从交换机1的接口1进入交换机1
-
交换机1首先进行登记的工作,将该帧的源MAC地址A记录到自己的帧交换表中,将该帧进入自己的接口的接口号1相应的也记录到自己的帧交换表中,这就是交换机的自学习
-
之后,交换机1对该帧进行转发,该帧的目的MAC地址是B,在帧交换表中查找MAC地址B
-
找不到于是对该帧进行盲目地转发,也称为泛洪,即从除该帧进入交换机接口外的其他所有接口转发该帧(交换机一开始还是比较“笨”的,没有足够的知识来明确转发帧,只能进行盲目地转发)
-
主机B的网卡收到该帧后,根据帧的目的MAC地址B,就知道这是发送给自己的帧,于是接受该帧
-
主机C的网卡收到该帧后,根据帧的目的MAC地址B,发现这不是发送给自己的帧,于是丢弃该帧
-
该帧从交换机2的接口2进入交换机2,交换机2首先进行登记的工作,将该帧的源MAC地址A记录到自己的帧交换表中,将该帧进入自己的接口的接口号2相应的也记录到自己的帧交换表中
-
之后,交换机2对该帧进行转发,该帧的目的MAC地址是B,在帧交换表中查找MAC地址B,找不到于是对该帧进行盲目地转发
-
主机D、E、F都会收到该帧,根据帧的目的MAC地址B,发现这不是发送给自己的帧,于是丢弃该帧
-
主机B给主机A发送帧,该帧从交换机1的接口3进入交换机1
-
交换机1首先进行登记的工作,将该帧的源MAC地址B记录到自己的帧交换表中,将该帧进入自己的接口的接口号3相应的也记录到自己的帧交换表中
-
之后,交换机1对该帧进行转发,该帧的目的MAC地址是A,在帧交换表中查找MAC地址A
-
可以找到,于是按照MAC地址A所对应的接口号1,从接口1转发该帧,这是明确的转发
-
主机A的网卡收到该帧后,根据帧的目的MAC地址A,就知道这是发送给自己的帧,于是接受该帧,很显然,交换机2不会收到该帧
15. 主机E给主机A发送帧,该帧从交换机2的接口3进入交换机2
-
交换机2首先进行登记的工作
-
之后,交换机2对该帧进行转发,该帧的目的MAC地址是A,在帧交换表中查找MAC地址A
-
可以找到,于是按照MAC地址A所对应的接口号2,从接口2转发该帧,这是明确的转发
-
该帧从交换机1的接口4进入交换机1,交换机1首先进行登记的工作
-
之后,交换机1对该帧进行转发,该帧的目的MAC地址是A,在帧交换表中查找MAC地址A
-
可以找到,于是按照MAC地址A所对应的接口号1,从接口1转发该帧,这是明确的转发
-
主机A的网卡收到该帧后,根据帧的目的MAC地址A,就知道这是发送给自己的帧,于是接受该帧
给交换机1的接口1再连接一台主机G,这样主机A、G、交换机1的接口1就共享同一条总线
-
主机G给主机A发送帧,该帧通过总线进行传输,主机A和接口1都可以收到
-
主机A的网卡收到该帧后,根据帧的目的MAC地址A,就知道这是发送给自己的帧,于是接受该帧
-
交换机1收到该帧后首先进行登记的工作
-
之后,交换机1对该帧进行转发,该帧的目的MAC地址是A,在帧交换表中查找MAC地址A,可以找到
-
MAC地址A所对应的接口号1,但是该帧正是从接口1进入交换机1的,交换机1不会再从该接口将该帧转发出去,这是没有必要的,于是丢弃该帧,很显然,交换机2不会收到该帧
注:帧交换表中的每条记录都有自己的 有效时间,到期自动删除,这是因为MAC地址与交换机接口的对应关系并不是永久性的!
相关练习
2.
3.
3.10 以太网交换机的生成树协议STP
如何提高以太网的可靠性
- 添加冗余链路提高以太网可靠性
- 以太网交换机的生成树协议STP
3.11 虚拟局域网VLAN
内容提要
- 虚拟局域网VLAN概述
- 虚拟局域网VLAN实现机制
虚拟局域网VLAN概述
- 以太网交换机工作在 数据链路层 (也包括物理层)
- 使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域。
- 随着交换式以太网规模的扩大,广播域相应扩大。
- 巨大的广播域会带来很多==弊端== :
- 广播风暴
- 难以管理和维护
- 潜在的安全问题
- 广播风暴会浪费网络资源和各主机的CPU资源!,因此除非应用需求必须使用广播,否则网络中的主机应尽量不使用广播
网络中会频繁出现广播信息
- TCP/IP协议栈中的很多协议都会使用广播:
- 地址解析协议ARP (已知IP地址,找出其相应的MAC地址)
- 路由信息协议RIP(一种小型的内部路由协议)
- 动态主机配置协议DHCP(用于自动配置IP地址)
- NetBEUI: Widnows下使用的广播型协议
- IPX/SPX: Novell网络的协议栈
- Apple Talk: Apple公司的网络协议栈
分割广播域的方法
-
使用路由器可以隔离广播域
- 由于路由器默认情况下不对广播数据包进行转发,因此路由器很自然地就可以隔离广播域
- 然而,路由器成本很高,局域网内部全部使用路由器来隔离广播域是不现实的
-
虚拟局域网VLAN技术应运而生
- 虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求
- 同一个VLAN内部可以广播通信,不同VLAN之间不能广播通信
虚拟局域网VLAN实现机制
虚拟局域网VLAN技术是在交换机上实现的,需要交换机能够实现两大功能:
- 能够处理带有VLAN标记的帧,即 IEEE 802.1Q帧
- 交换机的各端口可以支持不同的端口类型
不同端口类型的端口对帧的处理方式有所不同
-
交换机各端口的缺省VLAN ID
-
在思科交换机上称为Native VLAN,即本征VLAN。
-
在华为交换机上称为Port VLAN ID,即端口VLAN ID,简记为PVID。
-
注:交换机的每个端口有且仅有一个PVID
-
交换机的端口类型有以下三种:
-
Access
-
Trunk
因此,在由多个交换机互连而成的交换式以太网中划分VLAN时,连接主机的交换机端口应设置为Access类型,交换机之间互连的端口应设置为Trunk类型
相关练习
-
- Hybrid(华为交换机私有的端口类型)
第四章 网络层
4.1 网络层的概述
-
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
-
要实现网络层任务,需要解决以下主要问题:
- 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
- 数据包传输过程中出现误码、被路由器丢弃、不能按序到达接收方等,网络层对这些传输错误采取措施使得接收方正确接收发送方所发送数据包即为可靠传输,网络层对这些传输错误不采取措施即为不可靠传输
- 不同网络体系结构所提供的服务可能不同
- 网络层寻址问题
- 路由选择问题
- 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
-
因特网 (Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
- 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为 网际层。
- 综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。
4.2 网络层提供的两种服务
面向连接的虚电路服务
- 可靠通信由网络来保证
- 必须建立网络层的连接—— 虚电路 VC(Virtual Circuit)
- 虚电路表示这是一条逻辑上的连接,分组都是沿着这条逻辑连接按照存储转发方式传送,而不是真正建立了一条物理连接,采用电路交换的电话通信,则是先建立一条真正的连接
- 通信双方沿着已建立的虚电路发送分组
- 分组交换的虚连接与电路交换的连接只是类似并不完全一样
- 目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号((构成虚电路的每一段链路都有一个虚电路编号)。
- 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
- 通信结束后,需要释放之前所建立的虚电路。
- 很多广域分组交换网都使用面向连接的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
无连接的数据报服务
- 可靠通信应当由用户主机来保证
- 不需要建立网络层连接
- 每个分组可走不同的路径
- 每个分组的首部必须携带目的主机的完整地址
- 这种通信方式所传送的分组可能误码、丢失、重复和失序。
- 由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
- 因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
总结
4.3 IPv4地址
内容提要
- IPv4地址的概述
- 分类编址的IPv4地址
- 划分子网的IPv4地址
- 无分类编址的IPv4地址
- IPv4地址的应用规划
IPv4地址的概述
- 在TCP/IP体系中,IP地址是一个最基本的概念,必须把它弄清楚。
- IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
- IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
- 我国用户可向亚太网络信息中心APNIC(Asia Pacific Network Information Center)申请IP地址,需要缴费。
- 2011年2月3日,互联网号码分配管理局IANA (由ICANN行使职能)宣布,IPv4地址已经分配完毕。
- 我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。
- 32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用 点分十进制表示方法 以方便用户使用。
相关练习
分类编址的IPv4地址
- A类地址
- B类地址
- C类地址
相关练习
注:所分配的IP地址应该互不相同,并且其主机号部分不能出现“全0”,因为这是网络地址,也不能出现“全1”,因为这是广播地址,网络地址和广播地址都不能分配给主机或路由器的各接口,因为他们无法唯一标识一台主机或路由器的莫个接口
划分子网的IPv4地址
- 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址
相关练习
- 默认的子网掩码是指在未划分子网的情况下使用的子网掩码。
总结
无分类编址的IPv4地址
-
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
-
为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
-
1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC 1517~1519和1520。
- CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念;
- CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
-
CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。
-
CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。
- 如: 128.14.35.7 / 20 网络前缀占用的比特数量:20;主机编号占用的比特数量:32-20=12
-
只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:
- 地址块的最小地址
- 地址块的最大地址
- 地址块中的地址数量
- 地址块聚合某类网络(A类、B类或C类)的数量
- 地址掩码(也可继德称为子网掩码)
相关练习
- 路由聚合(构造超网)
- 网络前缀越长,地址块越小,路由越具体
若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体
- 网络前缀越长,地址块越小,路由越具体
相关练习
总结
IPv4地址的应用规划
- 定长的子网掩码FLSM(Fixed Length Subnet Mask)
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成IP地址的浪费
案例演示
综上可知,采用定长的子网掩码进行子网划分,只能划分出2^n个子网,其中n是从主机号部分借用的用来作为子网号的比特数量,每个子网所分配的IP地址数量相同,容易造成IP地址的浪费
- 变长的子网掩码VLSM(Variable Length Subnet Mask)
- 使用不同的子网掩码来划分子网
- 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
案例演示
综上可知,采用变长的子网掩码进行子网划分,可以按需划分出相应数量的子网,每个子网所分配的IP地址数量可以不相同,尽可能减少对IP地址的浪费
相关练习
4.4 IP数据报的发送和转发过程
IP数据报的发送和转发过程包含以下两部分:
-
主机发送IP数据报
-
路由器转发IP数据报
源主机如何知道目的主机是否与自己在同一个网络中?
-
假设主机C给主机F发送IP数据报,主机C将自己的IP地址和子网掩码相与,得到主机C所在网络的网络地址
-
既然主机C给主机F发送IP数据报,一定知道主机F的IP地址,否则无法发送,主机C将主机F的IP地址与自己的子网掩码相与,得到目的网络的地址
-
该地址与主机C的网络地址不相等,则主机C知道主机F与自己不在同一个网络,他们之间的通信属于间接支付
-
主机C需要将IP数据报传输给路由器,由路由器将IP数据报转发给主机F
主机C是如何知道路由器R的存在的?
实际上,用户为了让本网络中的主机和其他网络上的主机进行通信,就必须给其指定本网络中的一个路由器,由该路由器帮忙进行转发,所指定的路由器,也被称为默认网关
- 假设主机A要给主机D发送IP数据报,这属于间接交付,主机A将该IP数据报传输给自己的默认网关
- 路由器首先检查IP数据报首部是否出错,若出错则丢弃该IP数据报并通告源主机,若没有出错。则进行转发
- 路由器根据IP数据报首部中的目的地址在自己的路由表中查找匹配的路由条目,若找到匹配的路由条目,则转发给路由条目中指示的下一跳,若找不到,则丢弃该IP数据报并通告源主机
假设主机A给本网络上的各设备发送了广播IP数据报,该网络中的各设备都会收到该广播IP数据报,但是路由器收到后,并不会转发该数据报,即路由器隔离广播
相关练习
4.5 静态路由配置及其可能产生的路由环路问题
- 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
- 使用静态路由配置可能出现以下导致产生路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
案例演示
- 静态路由配置
- 假设R1要转发一个IP数据报给该网络中某个主机,R1应该将该IP数据报转发给路由器R2的接口0,但R1的路由表中并没有关于该目的网络的路由条目,即R1并不知道目的网络的存在
- 需要使用路由器的相关配置命令给R1添加一条到达该目的网络的路由条目
- 假设R2要转发一个IP数据报给该网络中某个主机,R2应该将该IP数据报转发给路由器R1的接口1,但R2的路由表中并没有关于该目的网络的路由条目,即R1并不知道目的网络的存在
- 需要使用路由器的相关配置命令给R2添加一条到达该目的网络的路由条目
- 默认路由配置
- 假设R1要转发一个IP数据报给因特网中某个网络中某个主机,R1应该将该IP数据报转发给路由器R2的接口0,由于因特网中包含了众多的网络,给R1添加针对这些网络的每一条路由条目,则会给人工配置带来巨大的工作量,并且使R1的路由表变得非常大,降低查表转发的速度
- 对于具有相同下一跳的不同目的网络的路由条目,可以用一条默认路由条目来代替,默认路由条目中的目的网络地址为0.0.0.0,地址掩码也为0.0.0.0,其CIDR形式为0.0.0.0/0
- 特定主机路由配置
有时候可以给路由器添加针对某个主机的特定主机路由条目,一般用于网络管理人员对网络的管理和测试,在需要考虑某种安全问题时也可以采用特定主机路由
特定主机路由条目中的目的网络地址为该特定主机的IP地址,地址掩码为255.255.255.255,其CIDR形式为特定主机IP地址/32
特定主机路由的目的网络前缀最长,路由最具体,默认路由的目的网络前缀最短,路由最模糊,当有多条路由可选时,则采用”最长前缀匹配“的原则,选用目的网络前缀最长的那个路由条目进行转发
- 静态路由配置错误导致路由环路问题
假设将R2路由表中目的网络 192.168.1.0/24 的下一跳错误配置成了 10.0.1.2,即错误指向了R3的接口0
很显然,由于静态路由的配置错误,导致R2和R3之间产生了路由环路,为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。
P数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。
- 聚合了不存在的网络而导致路由环路问题
- 聚合路由实际包含了四个网络,其中有两条网络不存在于网络拓扑中
- 当R2要转发IP数据报到这个不存在的网络时,进行查表转发,找到了匹配的路由条目,下一跳转发给R1的接口1
- 对于这个不存在的网络,路由器应该不予转发,却错把它转发给了路由器R1,R1收到该IP数据报后,进行查表转发,只能走默认路由,下一跳转发给R2的接口0
很显然,R1和R2之间产生了路由环路,针对这种情况,可在R2的路由表中添加针对所聚合的、不存在的网络的黑洞路由,黑洞路由的下一跳为null0,这是路由器内部的虚拟接口,可以把他形象的看成黑洞,IP数据报进入后有去无回了,即路由器丢弃了该IP数据报,而不是转发该IP数据报
- 由于网络故障而导致的路由环路问题
- 假设路由器R1检测到其接口0所直连的网络出现故障而不可达,就会自动在其路由表中删除该直连网络的路由条目
- 之后,R2要转发IP数据报到该网络,进行查表转发,找到匹配的路由条目,下一跳转发给R1的接口1
- R1收到该IP数据报后,进行查表转发,找不到该IP数据报的目的网络的相关路由条目,只能走默认路由,下一跳转发给R2的接口0
- 这样就将该IP数据报错误的转发给了R2
很显然,R1和R2之间产生了路由环路,针对这种情况,可在R1的路由表中添加针对所聚合的、不存在的网络的黑洞路由,R1收到该IP数据报后,进行查表转发,找到匹配的路由条目,这是一条黑洞路由,下一跳为虚拟接口null0,因此该IP数据报会进入这个黑洞
假设一段时间后,之前的故障消失了,则R1又自动地得出了其接口0的直连网络的路由条目,并将之前人工配置的针对该直连网络的黑洞路由条目设置为失效状态
假设R1再次检测到其接口0所直连的网络出现故障而不可达,则会自动在其路由表中删除该直连网络的路由条目,并将之前人工配置的针对该直连网络的黑洞路由条目设置为生效状态
4.6 路由选择协议
内容提要
- 路由选择协议的概述
- 路由信息协议RIP的基本工作原理
- 开放最短路径优先OSPF的基本工作原理
- 边界网关协议BGP的基本工作原理
路由选择协议的概述
因特网所采用的路由选择协议的主要特点
- 自适应:因特网采用动态路由选择,能较好的适应网络状态的变化
- 分布式:因特网中各路由器通过相互间的信息交互,共同完成路由信息的获取和更新
- 分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System),在自治系统内部和外部分别采用不同类别的路由器选择协议,分别进行路由选择
案例演示
-
信号从某个输入端口进入路由器,物理层将信号转换成比特流,送交数据链路层处理
-
数据链路层从比特流中识别出帧,去掉帧头和帧尾后,送交网络层处理
- 如果送交网络层的分组是普通待转发的数据分组,则根据分组首部中的目的地址进行查表转发,若找不到匹配的转发条目则丢弃该分组,否则,按照匹配条目中所指示的端口进行转发
- 网络层更新数据分组首部中某些字段的值,如将数据分组的生存时间减1,然后送交数据链路层进行封装
- 数据链路层将数据分组封装成帧,送交物理层处理
- 物理层将帧看作是比特流,将其变换成相应的电信号进行发送
- 如果送交网络层的分组是路由器之间交换路由信息的路由报文,则把这种分组送交路由器选择处理机,路由选择处理机根据分组的内容来更新自己的路由表
-
路由选择处理机除了处理收到的路由报文外,还会周期性地给其他路由器发送自己所知道地路由信息
-
路由器的各端口还应具有输入缓冲区和输出缓冲区
- 输入缓冲区用来暂存新进入路由器还来不及处理的分组
- 输出缓冲区用来暂存已经处理完毕还来不及发送的分组
路由信息协议RIP的基本工作原理
-
路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。
-
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)”
-
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
- 路由器到直连网络的距离定义为1。
- 路由器到非直连网络的距离定义为所经过的路由器数加1。
- 允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。
-
因此,RIP只适用于小型互联网
-
RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。
-
当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
-
RIP包含以下三个要点:
- 和谁交换信息 仅和相邻路由器交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换(例如每30秒)
-
RIP的基本工作过程
- RIP的路由条目的更新规则
- 假设路由器C的RIP更新报文发送周期到了,则路由器C将自己路由表中的相关路由信息,封装到RIP更新报文中发送给路由器D,可以理解为路由器C将自己的路由表发送给了路由器D
- 路由器D收到后对其进行改造,将到达各目的网络的下一跳都改为C,距离都增加1
3. 路由器D现在可以根据改造好的路由表来更新自己先前的路由表了
相关练习
- RIP存在“坏消息传播得慢”的问题
-
假设R1到达其直连网络N1的链路出现故障,当R1检测出故障后,会将到达N1的路由条目中的距离修改为16,表示N1不可达,并等待RIP更新周期到时后,发送该路由信息给R2
-
而此时R2的路由表中关于N1的路由条目仍然是先前通过RIP协议获取到的,也就是到达N1距离为2,下一跳通过R1转发
-
假设R2的RIP更新周期先到时,即R2的这条路由信息先到达R1,而R1这条路由信息后到达R2
-
当R1收到R2的这条路由信息后,就会被该谣言误导,认为可以通过R2到达N1,距离为3,并在自己的RIP更新周期到时后,将这条信息发送给R2
-
当R2收到R1的这条路由信息后,被该谣言误导,认为可以通过R1到达N1,距离为4,并在自己的RIP更新周期到时后,将这条信息发送给R1
-
当R1收到R2的这条路由信息后,被该谣言误导,认为可以通过R2到达N1,距离为5,并在自己的RIP更新周期到时后,将这条信息发送给R2
-
很显然,只要当R1和R2的路由表中,到达N1的路由条目中的距离都增加到16后,R1和R2才都知道N1不可达,也就是才收敛
在此过程中,R1和R2之间出现了路由环路,时间长达数分钟
- “坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施 减少 出现该问题的概率或减小该问题带来的危害。
- 限制最大路径距离为15(16表示不可达)
当路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送 - 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)
- 限制最大路径距离为15(16表示不可达)
相关练习
开放最短路径优先OSPF的基本工作原理
- 开放最短路径优先OSPF(Open Shortest Path First),是为克服RIP的缺点在1989年开发出来的。
- “开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。
- OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
- OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
- OSPF不限制网络规模,更新效率高,收敛速度快。
- 链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)。
- “代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。
OSPF有以下五种分组类型
- 问候(Hello)分组:
- 用来发现和维护邻居路由器的可达性。
- 数据库描述(Database Description)分组
- 向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 链路状态请求(Link State Request)分组
- 向邻居路由器请求发送某些链路状态项目的详细信息。
- 链路状态更新(Link State Update)分组
- 路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。
- 链路状态确认(Link State Acknowledgment)分组
- 这是对链路状态更新分组的确认分组。
OSPF的基本工作过程
采用分层次划分区域的方法,虽然使交换信息的种类增多了,同时也使OSPF协议更复杂了,但这样做使每个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中
边界网关协议BGP的基本工作原理
-
内部网关协议IGP(例如路由信息协议RIP或开放最短路径优先OSPF)
- 设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络
- 无需考虑自治系统外部其他方面的策略
-
外部网关协议EGP(例如边界网关协议BGP)
-
在不同自治系统内,度量路由的“代价”(距离,带宽,费用等)可能不同。
因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。
-
自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)
-
BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子)而并非要寻找一条最佳路由
-
-
在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人"
-
不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
- 在此TCP连接上交换BGP报文以建立 BGP会话
- 利用BGP会话 交换路由信息 (例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
- 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的 邻站 (neighbor)或 对等站 (peer)
-
BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP。
-
BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
-
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。
- BGP-4有以下四种报文
- OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
- UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
- KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
- NOTIFICATION(通知)报文:用来发送检测到的差错。
相关练习
4.7 IPv4数据报的首部格式
-
版本:占4比特,表示IP协议的版本。
- 通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。
-
首部长度:占4比特,表示lP数据报首部的长度。
- 该字段的取值以4字节为单位。
- 最小十进制取值为5,表示IP数据报首部只有20字节固定部分;
- 最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
-
可选字段:长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
- 可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。
-
填充字段:确保首部长度为4字节的整数倍,使用全0进行填充
-
区分服务:占8比特,用来获得更好的服务。
- 该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。
- 1998年,因特网工程任务组IETF把这个字段改名为区分服务。
- 利用该字段的不同数值可提供不同等级的服务质量。
- 只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。
-
总长度:占16比特,表示lP数据报的总长度(首部+数据载荷)。
- 最大取值为十进制的65535,以字节为单位。
- 标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
- IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
- 标志:占3比特,各比特含义如下:
- DF位:1表示不允许分片;0表示允许分片
- MF位:1表示 “后面还有分片” ;0表示 “这是最后一个分片”
- 保留位:必须为0
- 片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
- 片偏移以8个字节为单位。
案例演示
- 生存时间TTL:
- 占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去lP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
- 现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
案例演示
假设在人工配置这条静态路由条目时,错将下一跳配置成了R1,这会导致将去往网络N2的IP数据报错误的转发给路由器R1,
- 假设某个IP数据报从网络N1发往网络N2,该IP数据报到达R1后,R1进行查表转发,发现了匹配的路由条目,其下一跳指示转发给R2,于是R1将该IP数据报转发给R2
- ,R2收到该IP数据报后,进行查表转发,发现了匹配的路由条目,其下一跳指示转发给R1,于是R2将该IPIP数据报转发给R1
很显然,形成了路由环路,如果没有其他措施,IP数据报将在路由环路中永久兜圈
- 协议:占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
- 首部检验和:占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。
- IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。
- 由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报。
- 源IP地址和目的IP地址:各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
相关练习
4.8 网际控制报文协议ICMP
- 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。
- 主机或路由器使用ICMP来发送差错报告报文和询问报文。
- ICMP报文被封装在IP数据报中发送。
ICMP差错报告报文共有以下五种:
-
终点不可达
- 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
- 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
-
源点抑制
- 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
- 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
-
时间超过
-
当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。
-
若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。
-
另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
-
-
参数问题
- 当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
- 当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
-
改变路由(重定向)
- 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
- 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
以下情况不应发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
相关练习
常用的ICMP询问报文有以下两种:
- 回送请求和回答
- ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
- 收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
- 这种询问报文用来测试目的站是否可达及了解其有关状态。
- 时间戳请求和回答
- ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
- 在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
- 这种询问报文用来进行时钟同步和测量时间。
ICMP应用举例
- 分组网间探测PING(Packet InterNet Groper)
- 用来测试主机或路由器间的连通性
- 应用层直接使用网际层的ICMP (没有通过运输层的TCP或UDP)
- 使用ICMP回送请求和回答报文
- 跟踪路由traceroute
- 用来测试IP数据报从源主机到达目的主机要经过哪些路由器
- Windows版本
- tracert命令
- 应用层直接使用网际层ICMP
- 使用了ICMP回送请求和回答报文以及差错报告报文
- Unix版本
- traceroute命令
- 在运输层使用UDP协议
- 仅使用ICMP差错报告报文
4.9 虚拟专用网VPN与网络地址转换NAT
内容提要
- 虚拟专用网VPN(Virtual Private Network)
- 网络地址转换NAT
虚拟专用网VPN(Virtual Private Network)
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
- 同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。
- 有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN。
- 在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种VPN称为远程接入VPN。
网络地址转换NAT
虽然因特网采用了无分类编址方式来减缓lPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题。
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
注:由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护。
第五章 运输层
5.1 运输层的概述
之前课程所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。
但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。
如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。
- AP1和AP4之间进行基于网络的通信,AP2和AP3之间进行基于网络的通信
- 运输层使用不同的端口对应不同的应用进程
- 通过网络层及其下层传输应用层报文
- 接收方的运输层通过不同的端口将收到的应用层报文交付给应用层中相应的应用进程
注:这里的端口指的是用来区分不同应用进程的标识符,而不是看得见摸得着的物理端口
- 为了简单起见,研究运输层时,简单认为运输层直接为应用进程的逻辑通信提供服务
- “逻辑通信”:运输层之间的通信,好像是沿水平方向传输数据,实际上并没有一条水平方向的物理连接
- 运输层向高层用户屏蔽了下面的网络核心部分细节
5.2 运输层端口号、复用与分用的概念
内容提要
- 运输层端口号
- 发送方的复用和接收方的分用
运输层端口号
- 运行在计算机上的进程使用进程标识符PID来标志。
- 因特网上的计算机并不是使用统一的操作系统,不同的操作系统(windows,Linux,Mac OS)又使用不同格式的进程标识符。
- 为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识。
- TCP/IP体系的运输层使用 端口号 来区分应用层的不同应用进程。
- 端口号使用16比特表示,取值范围0~65535;
- 熟知端口号:0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议
- 例如:FTP使用21/20,HTTP使用80,DNS使用53。
- 登记端口号:1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。
- 例如:Microsoft RDP微软远程桌面使用的端口是3389。
- 短暂端口号:49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
- 熟知端口号:0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议
- 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号是沿有联系的
- 端口号使用16比特表示,取值范围0~65535;
发送方的复用和接收方的分用
-
发送方的某些应用进程所发送的应用报文,在运输层使用UDP协议进行封装,称为UDP复用,另一些应用进程所发送的应用报文,在运输层使用TCP协议进行封装,称为TCP复用,运输层使用端口号区分不同的应用进程
-
不管是使用运输层的UDP协议封装的UDP用户数据报还是使用TCP协议封装的TCP报文段在网络层都需要使用IP协议封装成IP数据报,称为IP复用
-
IP数据报首部中协议字段的值用来表明IP数据报的数据载荷部分封装的是何种协议数据单元
-
接收方的网络层收到IP数据报后进行IP分用
-
根据协议字段把IP数据报的数据载荷部分所封装的信息上交运输层的TCP和UDP
-
运输层对TCP报文段进行TCP分用,对UDP用户数据报进行UDP分用,根据端口号将他们交付给上层相应的应用进程
- TCP/IP体系的应用层常用协议所使用的运输层熟知端口号
案例演示
- 用户PC中的DNS客户端进程发送一个DNS查询请求报文,需要使用运输层的UDP协议,封装成UDP用户数据报,其首部中源端口字段的值在短暂端口号中挑选一个未被占用的用来表示DNS客户端进程,目的端口是DNS服务端进程所使用的数值端口号
-
将UDP用户数据报封装在IP数据报中,通过以太网发送给DNS服务器,DNS服务器收到该数据报,从中解封出UDP用户数据报,UDP首部中的目的端口号表明要将该UDP用户数据报的数据载荷部分,即DNS查询请求报文交付给本服务器中的DNS服务器端进程,DNS服务器端进程解析DNS查询请求的内容然后按其要求查找对应的IP地址,给用户PC发送DNS响应报文
-
用户PC收到该数据报后从中解封出UDP用户数据报,将DNS响应报文交付给PC中的DNS客户端进程,DNS客户端进程解析出DNS响应报文的内容,现在用户PC中的HTTP客户端进程可以向Web服务器发送HTTP请求报文,,需要使用运输层的TCP协议,封装成TCP报文段
- 将TCP报文段封装在IP数据报中,通过以太网发送给Web服务器,Web服务器收到该数据报,从中解封出TCP报文段,TCP首部中的目的端口号表明要将该TCP报文段的数据载荷部分,即HTTP请求报文交付给本服务器中的HTTP服务器端进程,HTTP服务器端进程解析HTTP请求报文的内容然后按其要求查找首页内容,给用户PC发送HTTP响应报文,HTTP响应报文需要使用运输层的TCP协议封装成TCP报文段
- 将TCP报文段封装在IP数据报中,通过以太网发送给用户PC,用户PC收到该数据报从中解封出TCP报文段,TCP首部中的目的端口号表明要将该TCP报文段的数据载荷部分,即HTTP响应报文交付给用户PC中的HTTP客户端进程,HTTP客户端进程解析出HTTP响应报文的内容,并在网页浏览器中展示,这样我们就可以在网页浏览器中看到Web服务器所提供的首页内容
5.3 UDP和TCP的对比
-
UDP无连接,TCP面向连接
-
UDP支持单播、多播以及广播(即支持一对一,一对多,多对一和多对多交互通信),TCP仅支持单播(每一条TCP连接只能有两个端点,即一对一通信)
- UDP面向应用报文(对应用层交付的报文直接打包),TCP面向字节流
- UDP不可靠传输,不使用流量控制和拥塞控制,TCP可靠传输,使用流量控制和拥塞控制
- UDP首部开销小,仅8字节,TCP首部最小20字节,最大60字节
5.4 TCP的流量控制
- 一般来说,我们总是希望数据传输得更快一些。,但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
- 所谓**流量控制(flow control)**就是让发送方的发送速率不要太快,要让接收方来得及接收。
- 利用==滑动窗口机制==可以很方便地在TCP连接上实现对发送方的流量控制。
案例演示
注:TCP规定,即使接收窗口为0,也必须接收零窗口探测报文段、确认报文段以及携带有紧急数据的报文段
相关练习
5.5 TCP的拥塞控制
内容提要
- 拥塞控制
- 四种拥塞控制算法
拥塞控制
-
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞(congestion)。
- 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。
-
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
-
在吞吐量达到饱和之前,网络吞吐量应等于所输入的负载,故吞吐量曲线为45°的斜线,但当输入负载超过某一限度时,由于网络资源受限,吞吐量不再增长而保持水平线,即吞吐量达到饱和,表明输入的负载有一部分损失掉了,例如输入到网络中的某些分组被某个节点丢弃
-
虽然如此在这样理想的拥塞控制作用下,网络的吞吐量仍然维持在其所能达到的最大值,然而实际的网络情况,随着输入的负载增大,网络吞吐量的增长率逐渐减小,也就是在网络吞吐量未达到饱和前,就已经有一部分的输入分组被丢弃,当网络吞吐量明显小于理想的吞吐量时,网络接入轻度拥塞状态,当输入负载到达某一数值时,网络的吞吐量随输入负载的增大而减小,网络进入了拥塞状态,随着输入负载的继续增大,网络吞吐量减小为0,网络无法工作,即死锁
-
实际的拥塞控制曲线应该尽量接近理想的拥塞控制曲线
四种拥塞控制算法
- 慢开始
发送方每收到一个对新报文段的确认时就把拥塞窗口加1,然后开始下一轮的传输,拥塞窗口cwnd是几就能发送几个数据报文段
- 拥塞避免
当发送方拥塞窗口值增大到慢开始的门限值,将改用拥塞避免,即每个传输轮次后,拥塞窗口值只能线性加1,而不像慢开始中的每个传输轮次后,拥塞窗口值按指数规律增大
总结
注:慢开始和拥塞避免算法是1988年提出的TCP拥塞控制算法(TCP Tahoe版本)。1990年又增加了两个新的拥塞控制算法(改进TCP的性能),这就是快重传和快恢复(TCP Reno版本)。
-
快重传
有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞。这将导致发送方超时重传,并误认为网络发生了拥塞。发送方把拥塞窗口cwnd又设置为最小值1,并错误地启动慢开始算法,因而降低了传输效率。
采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
-
快恢复
总结
相关练习
5.6 TCP的超时重传时间的选择
-
超时重传时间的选择是TCP最复杂的问题之一
-
超时重传时间RTO的设置小于往返时间RTT会引起报文段不必要的重传,设置远大于往返时间RTT会使网络的空闲时间增大,降低传输效率
-
超时重传的时间RTO设置应略大于往返时间RTT
- 因为TCP下层是复杂的互联网环境,我们不能直接使用某次测量得到的RTT样本来计算超时重传时间RTO。
- 利用每次测量得到的RTT样本,计算加权平均往返时间RTTs(又称为平滑的往返时间)。
-
超时重传时间RTO应该略大于加权平均往返时间RTTs
-
RFC6298建议使用下式计算超时重传时间RTO:
由上述公式可知,不管是RTTs还是RTTD都是基于所测量的样本RTT进行计算的,如果测量的RTT样本不正确,所计算出的RTTs和RTTD也就不正确,进而RTO不正确,然而往返时间RTT的测量比较复杂
由上述例子可知,当发送方出现超时重传后,收到确认报文段时,无法判断出该确认是对原报文段的确认还是对重传报文段的确认,即无法准确测量RTT
- 针对出现超时重传时无法测准往返时间RTT的问题,Karn提出了一个算法:在计算加权平均往返时间RTTs时,只要报文段重传了,就不采用其往返时间RTT样本。也就是出现重传时,不重新计算RTTs,进而超时重传时间RTO也不会重新计算。
- 但是这又引出了新的问题,设想:报文段的时延突然增大了很多,并且之后很长一段时间都会保持这种时延。因此在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据Karn算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新。这会导致报文段反复被重传。
- 因此,要对Karn算法进行修正。方法是:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是将新RTO的值取为旧RTO值的2倍。
相关练习
5.7 TCP可靠传输的实现
内容提要
-
TCP基于以字节为单位的滑动窗口来实现可靠传输
-
虽然发送方的发送窗口是根据接收方的接收窗口设置的,但在同一时刻,发送方的发送窗口并不总是和接收方的接收窗口一样大。
- 网络传送窗口值需要经历一定的时间滞后,并且这个时间还是不确定的。
- 发送方还可能根据网络当时的拥塞情况适当减小自己的发送窗口尺寸。
-
对于不按序到达的数据应如何处理,TCP并无明确规定
- 如果接收方把不按序到达的数据一律丢弃,那么接收窗口的管理将会比较简单,但这样做对网络资源的利用不利,因为发送方会重复传送较多的数据。
- TCP通常对不按序到达的数据是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
-
TCP要求接收方必须有累积确认和捎带确认机制,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。
- 接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传,这反而浪费了网络的资源。
- TCP标准规定,确认推迟的时间不应超过0.5秒。若收到一连串具有最大长度的报文段,则必须每隔一个报文段就发送一个确认[RFC 1122].
- 捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。
-
TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段。因此,每一方都有自己的发送窗口和接收窗口。在谈到这些窗口时,一定要弄清楚是哪一方的窗口。
相关练习
5.8 TCP的运输连接管理
内容提要
- TCP运输连接
- TCP连接的建立
- TCP连接的释放
- TCP保活计时器
TCP运输连接
- TCP是面向连接的协议,它基于运输连接来传送TCP报文段。
- TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。
- TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行。
TCP连接的建立
- TCP的连接建立要解决以下三个问题
- 使TCP双方能够确知对方的存在
- 使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)
- 使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
TCP使用“三次握手”建立连接(三报文握手)
-
最初两端的进程都处在关闭(CLOSE)状态
-
一开始,TCP服务器进程首先创建传输控制块,用来存储TCP连接的一些重要信息,之后准备接收TCP客户进程的连接请求,此时TCP服务进程处于监听(LISTEN)状态,被动等待TCP客户进程的连接请求,称为被动打开连接
-
TCP客户进程也是首先创建传输控制块,然后在打算建立TCP连接时,向TCP服务器进程发送TCP连接请求报文段,并进入同步已发送(SYN-SENT)状态。TCP连接请求报文段首部中的同步位SYN被设置为1,表明这是一个TCP连接请求报文段,序号字段seq被设置了一个初始值x作为TCP客户进程所选择的初始序号(注意:TCP规定SYN被设置为1的报文段不能携带数据,但要消耗掉一个序号),TCP连接建立是由TCP客户主动发起的,称为主动打开连接
-
TCP服务器进程收到TCP连接请求报文段后,如果同意建立连接,则向TCP客户进程发送连接请求确认报文段,并进入同步已接收(SYN-RCVD)状态。该报文段首部中的同步位SYN和确认位ACK被设置为1,表明这是一个TCP连接请求确认报文段,序号字段seq被设置了一个初始值y作为TCP服务进程所选择的初始序号,确认号字段ack的值设置成x+1,对TCP客户进程所选择的初始序号的确认(注意:这个报文段也不能携带数据)
-
TCP客户进程收到连接请求确认报文段后,还要向TCP服务器进程发送一个普通的TCP确认报文段,并进入连接已建立(ESTABLISHED)状态。该报文段首部中的确认位ACK被设置为1,表明这是一个普通的TCP确认报文段,序号字段seq被设置了一个初始值x+1,作为TCP客户进程第二个报文段的序号,(注意:这个报文段可以携带数据,但如果不携带数据,则不消耗序号,所发送的下一个序号仍为x+1),确认号字段ack的值设置成y+1,对TCP服务进程所选择的初始序号的确认
-
TCP服务器进程收到该确认报文段后也进入连接已建立(ESTABLISHED)状态
-
现在TCP双方都进入了连接已建立状态,他们可以基于建立好的TCP连接进行可靠的数据传输
注意:不可简化为“两次握手”
综上,采用“三报文握手”而不是“两报文握手”是为了防止连接请求报文段突然又传送到了TCP服务器,因而导致错误
相关练习
TCP连接的释放
TCP使用“四次挥手”释放连接(四报文挥手)
- 最初两端的进程都处在连接已建立(ESTABLISHED)状态
- TCP客户进程的应用进程通知其主动关闭TCP连接,TCP客户进程会发送TCP连接释放报文段,并进入终止等待1(FIN-WAIT-1)状态。该报文段首部中的终止位FIN和确认位ACK被设置为1,表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认,序号字段seq被设置为u,它等于TCP客户进程之前已传送过的数据的最后一个字节的序号加1(注意:TCP规定FIN被设置为1的报文段即使不携带数据,也要消耗掉一个序号),确认号字段ack的值设置成v,它等于TCP客户进程之前已收到过的数据的最后一个字节的序号加1
- TCP服务器进程收到TCP连接释放报文段后,会发送一个普通的TCP确认报文段并进入关闭等待(CLOSE-WAIT)状态,该报文段首部中的确认位ACK被设置为1,表明这是一个普通的TCP确认报文段,序号字段seq被设置为v,它等于TCP服务器进程之前已传送过的数据的最后一个字节的序号加1,这也与之前收到的TCP连接释放报文段中的确认号匹配,确认号字段ack的值设置成u+1,这是对TCP连接释放报文段的确认,TCP服务器进程这时通知高层应用进程,TCP客户进程要断开与自己的TCP连接
- 此时从TCP客户进程到TCP服务器进程这个方向的连接就释放了,这时的TCP连接属于半关闭状态,即TCP客户进程已经没有数据要发送了,但TCP服务器进程如果还有数据要发送,TCP进程仍要接收,也即从TCP服务器进程到TCP客户进程这个方向的连接并未关闭,这个状态可能会持续一段时间
- TCP客户进程收到TCP确认报文段后进入终止等待2(FIN-WAIT-2)状态,等待TCP服务器进程发出的TCP连接释放报文段,若使用TCP服务器进程的应用进程已经没有数据要发送了,应用进程就通知其TCP服务器进程释放连接,TCP服务器进程发送TCP连接释放报文段并进入最后确认(LAST-ACK)状态,该报文段首部中的终止位FIN和确认位ACK被设置为1,表明这是一个TCP连接释放报文段,同时也对之前收到的报文段进行确认,序号字段seq被设置为w,这是因为在半关闭状态下,TCP服务器进程可能又发送了一些数据,确认号字段ack的值设置成u+1,这是对之前收到的TCP连接释放报文段的重复确认
- TCP客户进程收到连接释放报文段后,必须针对该报文段发送普通的TCP确认报文段,之后进入时间等待(TIME-WAIT)状态,该报文段首部中的确认位ACK被设置为1,表明这是一个普通的TCP确认报文段,序号字段seq被设置了一个初始值u+1,作为TCP客户进程之前发送的TCP连接释放报文段虽然不携带数据,但是消耗了一个序号,确认号字段ack的值设置成w+1,对TCP连接释放报文段的确认,TCP服务进程收到该报文段后进入了关闭(CLOSE)状态
- TCP客户进程还要经过2MSL后才进入关闭(CLOSE)状态
TCP客户进程在发送完最后一个确认报文段之后,直接进入关闭状态,会出现以下情景:
综上,时间等待状态以及处于该状态2MSL时长,可以确保TCP服务器进程可以收到最后一个TCP确认报文段而进入关闭状态,另外TCP客户进程在发送完最后一个TCP确认报文段后,再经过2MSL时长,可以使本次连接持续时间内所产生的所有报文段都从网络中消失,这样可以使下一个TCP连接中不会出现旧连接中的报文段
TCP保活计时器
5.9 TCP报文段的首部格式
- 为了实现可靠传输,TCP采用了面向字节流的方式。
- 但TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。
- 一个TCP报文段由**首部和数据载荷**两部分构成
- TCP的全部功能都体现在它首部中各字段的作用。
- 源端口:占16比特,写入源端口号,
- 用来标识发送该TCP报文段的应用进程。
- 目的端口:占16比特,写入目的端口号,
- 用来标识接收该TCP报文段的应用进程。
- 序号:占32比特,取值范围[0,2^32-1],序号增加到最后一个后,下一个序号就又回到0。
- 指出本TCP报文段数据载荷的第一个字节的序号。
- 确认号:占32比特,取值范围[0,2"1],确认号增加到最后一个后,下一个确认号就又回到0。
- 指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。
- 若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据
- 确认标志位ACK:取值为1时确认号字段才有效;取值为0时确认号字段无效。
- TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1
- 数据偏移:占4比特,并以4字节为单位。
- 用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。
- 这个字段实际上是指出了TCP报文段的首部长度。
首部固定长度为20字节,因此数据偏移字段的最小值为0101(二进制)5*4 - 首部最大长度为60字节,因此数据偏移字段的最大值为1111(二进制)15*4
-
保留:占6比特,保留为今后使用,但目前应置为0。
-
窗口:占16比特,以字节为单位。
- 指出发送本报文段的一方的接收窗口。
- 窗口值作为接收方让发送方设置其发送窗口的依据。
- 这是以接收方的接收能力来控制发送方的发送能力,称为流量控制。
- 发送窗口的大小还取决于拥塞窗口的大小,应该从接收窗口和拥塞窗口取小者
-
校验和:占16比特,检查范围包括TCP报文段的首部和数据载荷两部分。
- 在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。
-
同步标志位SYN:在TCP连接建立时用来同步序号。
- 终止标志位FIN:用来释放TCP连接。
-
复位标志位RST:用来复位TCP连接。
- 当RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接。
- RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
-
推送标志位PSH:接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。
-
紧急标志位URG:取值为1时紧急指针字段有效;取值为0时紧急指针字段无效。
-
紧急指针:占16比特,以字节为单位,用来指明紧急数据的长度。
- 当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。
- 紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。
-
选项:
- 最大报文段长度MSS选项:TCP报文段数据载荷部分的最大长度。
- 窗口扩大选项:为了扩大窗口(提高吞吐率)。
- 时间戳选项:
- 用来计算往返时间RTT
- 用于处理序号超范围的情况,又称为防止序号绕回PAWS
- 选择确认选项
-
填充:由于选项的长度可变,因此使用填充来确保报文段首部能被4整除。因为数据偏移字段,也就是首部长度字段,是以4字节为单位的
第六章 应用层
6.1 应用层的概述
应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
- 早期基于文本的应用(电子邮件、远程登录、文件传输、新闻组)
- 20世纪90年代将因特网带入千家万户的万维网WWW
- 当今流行的即时通信、P2P文件共享及各种音视频应用
- 计算设备的小型化和“无处不在”,宽带住宅接入和无线接入的日益普及和迅速发展,为未来更多的新型应用提供了广阔的舞台。
6.2 客户/服务器方式和对等方式
内容提要
- 概述
- 客户/服务器方式(C/S方式)
- 对等方式(P2P方式)
概述
- 网络应用程序运行在处于网络边缘的不同的端系统上,通过彼此间的通信来共同完成某项任务。
- 开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系。目前流行的主要有以下两种:
- 客户/服务器(Client/Server,C/S)方式
- 对等(Peer-to-Peer,P2P)方式
客户/服务器方式(C/S方式)
-
客户/服务器(Client/Server,C/S)方式
- 客户和服务器是指通信中所涉及的两个应用进程
- 客户/服务器方式所描述的是进程之间服务和被服务的关系。
- 客户是服务请求方,服务器是服务提供方。
- 服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80),而运行服务器的主机也具有固定的IP地址。
-
C/S方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式。包括万维网www、电子邮件、文件传输FTP等。
-
基于C/S方式的应用服务通常是==服务集中型==的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
- 由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。
- 为此,在C/S应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器。
对等方式(P2P方式)
-
对等(Peer-to-Peer,P2P)方式
- 在P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者。
- 目前,在因特网上流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。
- 基于P2P的应用是==服务分散型==的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中,这些计算机并不为服务提供商所有,而是为个人控制的桌面计算机和笔记本电脑,它们通常位于住宅、校园和办公室中。
- P2P方式的最突出特性之一就是它的==可扩展性==。因为系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低.
- P2P方式具有成本上的优势,因为它通常不需要庞大的服务器设施和服务器带宽。为了降低成本,服务提供商对于将P2P方式用于应用的兴趣越来越大。
6.3 动态主机配置协议DHCP
内容提要
- DHCP的作用
- DHCP的工作过程
DHCP的作用
配置用户主机使用户主机正常访问Web服务器,网络中数量比较多的情况下,手工配置工作量大,易出错,在网络中添加DHCP服务器,设置好可在其他主机配置的网络配置信息,网络中各主机开机后自动启动DHCP程序,向DHCP服务器请求自己的网络配置信息,自动获取无需手工参与
DHCP的工作过程
- DHCP是TCP/IP协议体系应用层中的协议,它使用运输层的UDP所提供的服务,DHCP报文在运输层会被封装成UDP用户数据报,DHCP服务器使用的UDP端口是67,DHCP用户使用的UDP端口是68
- 这两个端口都是熟知端口,封装有DHCP报文的UDP用户数据报,在网络层被封装成IP数据报,再根据所使用的网络接口,封装成相应的数据链路层的帧进行发送,例如封装成以太网帧
- DHCP客户和DHCP服务器的交互过程
- 当启用主机的DHCP后,DHCP客户将广播发送DHCP发现报文,之所以使用广播发送是因为主机现在并不知道网络中有哪几个DHCP服务器,网络中的所有设备都会收到IP数据报,并对其层层解封,解封出封装有DHCP发现报文的UDP用户数据报
- DHCP服务器收到DHCP发现报文后,根据其中封装的DHCP客户端的MAC地址来查找自己的数据库,看是否有针对该MAC地址的配置信息,有则使用这些配置信息来构建并发送DHCP提供报文,没有则采用默认配置信息来构建并发送DHCP提供报文,目的地址仍为广播地址,是因为主机目前还没有配置IP地址,为了使主机可以收到,只能发送广播,DHCP客户根据DHCP提供报文中的事务ID,判断该报文是否是自己所请求的报文
-
DHCP客户会收到多个DHCP服务器发来的DHCP提供报文,一般选择先到的,并向所选择的DHCP服务器发送DHCP请求报文,封装该报文的IP数据报的源IP地址仍为0.0.0.0,因为此时DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器,首先要征得该服务器的同意,之后才能正式使用该DHCP服务器租用的IP地址
-
所挑选的DHCP服务器给DHCP客户发送DHCP确认报文,DHCP客户收到该确认报文就可使用所租用的IP地址了,在使用租用的IP地址之前,主机会使用ARP检测该IP地址是否已被网络其他主机占用
-
当租用期过了一半时,DHCP客户会向DHCP服务器发送DHCP请求报文,请求更新租用期
- 若DHCP服务器同意则发回DHCP确认报文,这样DHCP客户就得到了新的租用期,
- 若DHCP服务器不同意则发回DHCP否认报文,这时DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址
- 若DHCP服务器未响应则在租用期过了87.5%时,DHCP客户必须重新发送DHCP请求报文,继续等待DHCP服务器可能做出的反应,若DHCP服务器未做出反应,则租用期到期后DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址
- DHCP客户可随时提前终止DHCP服务器所提供的租用期,这时只需要向DHCP服务器发送DHCP释放报文段即可
总结
DHCP中继代理
使用DHCP中继代理是因为不需要在每个网络上都设置一个DHCP服务器,这样会使DHCP服务器数量太多
6.4 域名系统DNS
内容提要
- 域名系统DNS的作用
- 域名
- 域名服务器
- 域名解析的过程
域名系统DNS的作用
- 当我们在浏览器地址中输入某个Web服务器的域名时,用户主机会首先在自己的DNS高速缓存中查找该域名所对应的IP地址
-
若没有找到则向某台DNS服务器查询,DNS服务器中有域名和IP地址映射关系的数据库
-
当DNS服务器收到DNS查询报文后,在其数据库中进行查询,将查询结果发送给主机
-
用户主机中的浏览器可以通过Web服务器的IP地址对其进行访问了
- 英特网是否可以只使用一台DNS服务器
- 尽管理论上可行,但是实践中这种做法不可取,因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。
- 早在1983年,因特网就开始采用层次结构的命名树作为主机的名字(即域名),并使用分布式的域名系统DNS
- DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。
- 由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。
域名
-
顶级域名TLD (Top Level Domain)分为以下三类:
-
国家顶级域名nTLD:采用ISO 3166的规定。如cn表示中国,us表示美国,uk表示英国、等等。
-
通用顶级域名gTLD:最常见的通用顶级域名有七个,即: com(公司企业)、net(网络服务机构)、org (非营利性组织)、int(国际组织)、edu(美国教育结构)、gov(美国政府部门) 、mil(美国军事部门)。
-
反向域arpa:用于反向域名解析,即IP地址反向解析为域名。
-
-
在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。
-
我国则将二级域名划分为以下两类:
- 类别域名:共七个: ac(科研机构)、com(工、商、金融等企业).edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和org (非营利性组织)。
- 行政区域名:共34个,适用于我国的各省、自治区、直辖市。例如:bj为北京市、sh为上海市、js为江苏省,等等。
-
注意:名称相同的域名其等级未必相同,如com是通用顶级域名,但我国顶级域名cn下也有一个名称为com的二级域名
注意:这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名查询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。
域名服务器
- 域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
- 域名服务器可以划分为以下四种不同的类型:
- 根域名服务器
- 根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有 13个 不同IP地址的根域名服务器。尽管我们将这13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的 服务器群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
- 顶级域名服务器
- 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
- 权限域名服务器
- 这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
- 本地域名服务器
- 本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用。会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为==默认域名服务器==。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
- 根域名服务器
域名解析的过程
- 递归查询
-
迭代查询
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。
- 为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了 高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
-
由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
-
不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。
-
DNS报文使用运输层的UDP协议进行封装,运输层端口号为==53==
相关练习
2.
6.5 文件传送协议FTP
内容提要
- FTP基本概述
- FTP的基本工作原理
FTP基本概述
-
将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。
-
文件传送协议FTP (File Transfer Protocol)是因特网上使用得 最广泛 的文件传送协议。
-
FTP提供交互式的访问, 允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。
-
FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
-
在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信量的三分之一 ,而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。只是到了1995年,万维网WWW的通信量才首次超过了FTP。
-
根据应用需求的不同,FTP服务器可能需要一台高性能和高可靠性的服务器计算机,也可能只需要一台普通的个人计算机即可。
-
FTP的常见用途是在计算机之间传输文件,尤其是用于批量传输文件。FTP的另一个常见用途是让网站设计者将构成网站内容的大量文件批量.上传到他们的Web服务器。
FTP的基本工作原理
- 主动模式
- FTP服务器监听熟知端口号21,FTP客户随机选择一个临时端口号与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送FTP相关控制命令
- 即这条TCP连接是FTP客户与服务器之间的命令通道
- 当有数据要传输时,FTP客户通过命令通道告知FTP服务器来与自己的另一个临时端口号建立TCP连接,即建立数据通道。
- FTP使用自己的熟知端口号20与FTP客户另一个临时端口号建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送文件
- 即这条TCP连接是FTP客户与服务器之间的数据通道,由于建立数据通道时,FTP服务器主动连接FTP客户,因此称为 主动模式
- 被动模式
- FTP服务器监听熟知端口号21,FTP客户随机选择一个临时端口号与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送FTP相关控制命令
- 即这条TCP连接是FTP客户与服务器之间的命令通道
- 当有数据要传输时,FTP客户通过命令通道告知FTP服务器开启某个临时端口被动等待TCP连接,即建立数据通道。
- FTP使用自己的随机选择的临时端口号与FTP客户另一个临时端口号建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送文件
- 即这条TCP连接是FTP客户与服务器之间的数据通道,由于建立数据通道时,FTP服务器被动连接FTP客户,因此称为 被动模式
注意:控制连接在整个会话期间一直保持打开,用于传送FTP相关控制命令。数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。
相关练习
6.6 电子邮件
内容提要
- 电子邮件基本概述
- 简单邮件传送协议SMTP (Simple Mail Transfer Protocol)的基本工作原理
- SMTP的工作过程
- 电子邮件的信息格式
- 常见邮件读取协议POP和IMAP
- 基于万维网(WWW)的电子邮件
电子邮件基本概述
-
电子邮件(E-mail)是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要、最实用的应用之一。
-
传统的电话通信属于实时通信,存在以下两个缺点:
- 电话通信的主叫和被叫双方必须同时在场;
- 一些不是十分紧迫的电话也常常不必要地打断人们的工作或休息。
-
而电子邮件与邮政系统的寄信相似。
- 发件人将邮件发送到自己使用的==邮件服务器==;
- 发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱;
- 收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取收到的电子邮件。
-
电子邮件使用方便、传递迅速而且费用低廉。它不仅可以传送文字信息,而且还可附上声音和图像。
-
由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。在我国,电信局的电报业务也因电子邮件的普及而濒临消失。
-
电子邮件系统采用 客户/服务器方式。
-
电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议。
- 用户代理:是用户与电子邮件系统的接口, 又称为电子邮件客户端软件。
- 邮件服务器:是电子邮件系统的基础设施。 因特网.上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
- 协议:包括邮件发送协议 (例如SMTP)和邮件读取协议(例如POP3, IMAP)。
- 发送方的用户代理作为SMTP客户和发送方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议来发送邮件给发送方邮件服务器
- 发送方邮件服务器中的SMTP客户与接收方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议来发送已收到的待转发邮件给接收方邮件服务器
- 接收方的用户代理作为POP3客户,与接收方邮件服务器中的POP3服务器进行TCP连接,然后基于这条连接使用POP3协议从接收方邮件服务器读取邮件
简单邮件传送协议SMTP (Simple Mail Transfer Protocol)的基本工作原理
- 发送方邮件服务器周期性地扫描邮件缓存,如果发现有待转发地邮件,则发送方邮件服务器中的SMTP客户会与接收方邮件服务器中的SMTP服务器进行TCP连接,端口号为25
- SMTP客户就可基于这条TCP连接给SMTP服务器发送SMTP命令,共14条,SMTP服务器也会给SMTP客户发送相应的应答,共21种
- SMTP客户与服务器间,通过命令与应答的交互方式,最终实现SMTP客户发送邮件给SMTP服务器
SMTP的工作过程
- SMTP服务器会主动推送服务就绪应答给SMTP客户,应答代码 220 后面可能跟有描述信息
- SMTP客户收到该应答后向服务器表明身份,告知自己SMTP服务器的域名,具体命令为 HELO,其后为命名参数
- SMTP服务器若认为身份有效,则发回应答代码 250,否则发回其他错误代码,例如421表示服务不可用
- SMTP客户收到该应答后,使用命令 MAIL FROM 来告诉服务器邮件来自何处
- SMTP服务器若认为合理,则发回应答代码 250,否则发回其他错误代码
- SMTP客户收到该应答后,使用命令 RCPT TO 来告诉服务器邮件去往何处,即收件人邮箱
- SMTP服务器中如果有该收件人邮箱,则发回应答代码 250,否则发回其他错误代码
- SMTP客户收到该应答后,使用命令 DATA 来告诉服务器准备发送邮件内容
- SMTP服务器如果准备好接收,则发回应答代码 354,否则发回其他错误代码
- SMTP客户收到该应答后,就向服务器发送邮件内容,待发送完后还要发送结束符
- SMTP服务器若收件成功,则发回应答代码 250,否则发回其他错误代码
- SMTP客户收到该应答后,使用命令 QUIT 向服务器请求断开连接
- SMTP服务器发回应答代码 221 表示接收请求并主动断开连接
电子邮件的信息格式
电子邮件的信息格式并不是由SMTP定义的,而是在RFC 822中单独定义的。这个RFC文档已在2008年
更新为RFC 5322。一个电子邮件有信封和内容两部分。而内容又由 首部 和 主体 两部分构成。
- 首部
- From:后面填入发件人的电子邮件地址,一般由邮件系统自动填入
- To:后面填入一个或多个收件人的电子邮件地址
- Cc:后面填入一个或多个收件人以外i的抄送人的电子邮件地址,抄送人收到邮件可看可不看邮件,可会可不会邮件
- Subject:后面填入邮件的主题,反映了邮件的主要内容
- SMTP协议只能传送ASCI码文本数据,不能传送可执行文件或其他的二进制对象。
- SMTP不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。并且许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)也无法用SMTP传送。
- 为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME (Multipurpose Internet Mail Extensions)
- 增加了5个新的邮件首部字段,这些字段提供了有关邮件主体的信息。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
- 实际上,MIME不仅仅用于SMTP,也用于后来的同样面向ASCII字符的HTTP。
常见邮件读取协议POP和IMAP
常用的邮件读取协议有以下两个:
- 邮局协议POP (Post Office Protocol) :POP3是其第三个版本, 是因特网正式标准。
- 非常简单、功能有限的邮件读取协议。用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户方计算机。不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹, 对邮件进行分类管理等)。
- 常见邮件读取协议POP和IMAP (Internet Message Access Protocol):IMAP4是其第四个版本,目前还只是因特网建议标准。
- 功能比POP3强大的邮件读取协议。用户在自己的计算机.上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个联机协议。
- POP3和IMAP4都采用基于TCP连接的客户/服务器方式。POP3使用熟知端口110, IMAP4使用熟知端口143。
基于万维网(WWW)的电子邮件
- 通过浏览器登录 (提供用户名和口令) 邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。这种工作模式与IMAP很类似,不同的是用户计算机无需安装专门的用户代理程序,只需要使用通用的万维网浏览器。
- 邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站.上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。
相关练习
6.7 万维网WWW
内容提要
- 万维网基本概述
- 超文本传输协议HTTP
- HTTP报文格式
- Cookie
- 万维网缓存与代理服务器
万维网基本概述
-
万维网WWW (World Wide Web) 并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
-
万维网利用网页之间的==超链接==将不同网站的网页链接成一 -张逻辑上的信息网。
-
万维网是欧洲粒子物理实验室的Tim Berners-Lee最初于1989年3月提出的。
-
1993年2月,第一个图形界面的浏览器Mosaic。
-
1995年著名的Netscape Navigator浏览器上市。
-
浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示。
- 不同的浏览器内核对网页内容的解析也有不同,因此同一网页在不同内核的浏览器里的显示效果可能不同;
- 网页编写者需要在不同内核的浏览器中测试网页显示效果。
-
为了方便地访问在世界范围的文档,万维网使用==统一资源定位符URL==来指明因特网上任何种类“资源”的位置。
-
URL的一般形式由四个部分组成:<协议>://<主机>:<端口> / <路径>
-
万维网文档
- HTML:超文本标记语言HTML(HyperText Markup Language) 使用多种“标签”来描述网页的结构和内容
- CSS:层叠样式表CSS(Cascading Style Sheets)从审美的角度来描述网页的样式
- JavaSeript:一种脚本语言(和Java没有任何关系),控制网页的行为
超文本传输协议HTTP
HTTP(HyperText Transfer Protocol) 定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
- HTTP/1.0采用 非持续连接 方式。在该方式下,每次浏览器要请求-个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。
- 每请求一个文档就要有两倍的RTT的开销。若-一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。
- 为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务于大量客户的请求,这会使其负担很重。
- HTTP/1.1采用 持续连接 方式。在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面.上引用的对象,而是只要这些文档都在同-个服务器上就行。
- 为了进一步提高效率,HTTP/1.1 的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的-一个接-一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的效率。
HTTP报文格式
HTTP是面向文本的,其报文中的每一个字段都是一 些ASCII码串, 并且每个字段的长度都是不确定的。
- HTTP请求报文格式
方法 | 描述 |
---|---|
GET | 请求URL标志的文档 |
HEAD | 请求URL标志的文档的首部 |
POST | 向服务器发送数据 |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除URL标志的文档 |
CONNECT | 用于代理服务器 |
OPTIONS | 请求一些选项信息 |
TRACE | 用来进行环回测试 |
PATCH | 对PUT方法的补充,用来对已知资源进行局部更新 |
HTTP响应报文格式
状态码(五大类33种) | 描述 |
---|---|
1XX | 表示通知信息,如请求收到了或正在进行处理 |
2XX | 表示成功,如接受或知道了 |
3XX | 表示重定向,即要完成请求还必须采取进一步的行动 |
4XX | 表示客户的差错,如请求中有错误的语法或不能完成 |
5XX | 表示服务器的差错,如服务器失效无法完成请求 |
Cookie
使用Cookie在服务器上记录用户信息
- 早期的万维网应用非常简单, 仅仅是用户查看存放在不同服务器上的各种静态的文档。因此HTTP被设计为一种 无状态 的协议。这样可以简化服务器的设计。
- 现在, 用户可以通过万维网实现各种复杂的应用,如网上购物、电子商务等。这些应用往往需要万维网服务
器能够识别用户。 - Cookie提供 了- -种机制使得万维网服务器能够 “记住”用户,而无需用户主动提供用户标识信息。 也就是说,Cookie是一种对无状态的HTTP进行状态化的技术。
Cookie工作原理
万维网缓存与代理服务器
- 在万维网中还可以使用缓存机制以提高万维网的效率。
- 万维网缓存又称为 Web缓存 (Web Cache),可位于客户机,也可位于中间系统上,位于中间系统上的Web缓存又称为 代理服务器 (Proxy Server)。
- Web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源。
案例演示
-
当校园网中某台主机要访问因特网上的原始服务器时,首先向校园网上的代理服务器发送请求
-
若代理服务器中存放有所请求的对象,则代理服务器向该主机发回包含所请求对象的响应
- 若代理服务器中没有有所请求的对象,则代理服务器向因特网上的原始服务器发送请求,原始服务器将包含有所请求对象的响应发回给代理服务器,代理服务器将该响应存入Web缓存,然后给主机发回该响应
- 若Web缓存的命中率比较高,则路由器R1和R2之间的链路上的通信量将大大减少,因而可以减少校园网各主机访问因特网的时延
相关练习
1.
2.
更多推荐
所有评论(0)