第1章 概述
1、计算机网络的功能(意义)
数据通信、资源共享、负荷均衡、分布处理和提高系统安全与可靠性。
2、互联网的组成
(1)边缘部分
由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或者视频)和资源共享。
(2)核心部分
由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
3、三种交换
(1)电路交换
整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。
(2)报文交换
整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
(3)分组交换
单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转接到下一结点。
-
如果连接传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。
-
报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。
-
由于一个分组的长度往往小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。
4、计算机网络的性能
(1)速率
数据的传送速率,也称为数据率或是比特率。
(2)带宽
本来是指某个信号具有的频带宽度(单位是赫)。在计算机网络中,表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的“最高数据率”,单位是bit/s。
(3)吞吐量
表示单位时间内通过某个网络的实际数据量。(可以用每秒传输的字节数和帧数表述)。
(4)时延
数据(一个报文或分组、甚至比特)从网络(或链路) 的一段传送到另一端所需的时间。
-
发送时延
是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起到该帧的最后一个比特发送完毕所需要的时间。 -
传播时延
传播时延是电磁波在信道中传播一定的距离需要花费的时间。 -
处理时延
主机或路由器在收到分组时要花费一定的时间进行处理,例如分组的首部,从分组中提取数据部分,进行差错检验或查找适当的路由。 -
排队时延
分组在进入路由器后要先在输入队列中排队等待处理。总时延 = 发送时延+传播时延+处理时延+排队时延
(5)时延带宽积
表示链路可容纳多少个比特。
- 时延带宽积 = 传播时延 * 带宽
(6)往返时间RTT
双向交互的花费时间,包括往返的传播时延。
(7) 利用率U
利用率有信道利用率和网络利用率(过大会引发很大的时延)
-
D 代表网络当前的时延
D0 表示网络空闲时的时延U表示现在的网络利用率
D = D0/(1-U)
5、网络协议三要素
(1)语法
即数据与控制信息的结构或格式
(2)语义
即需要发出何种控制信息,完成何种动作以及做出何种响应
(3)同步
即事件实现顺序的详细说明
6、网络体系结构
(1)OSI七层协议
(2)TCP/IP 四层协议
(3)我们教学的五层协议
- 应用层
通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是主机中正在运行的程序。
- 运输层
负责向两台主机中进程之间的通信提供通用的数据传输服务。
- 网络层
负责向分组交换网上的不同主机提供通信服务。
- 数据链路层
将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(同步控制,地址控制,差错控制等),如果这个帧有差错,则会直接丢弃这个帧。
- 物理层
比特流的透明传输,接收数据链路层的帧,通过比特流的形式传输。
7、分层体系结构相关概念
- 对等层:两个系统的相同层次叫对等层。比如主机A和主机B的网络层。
- 协议数据单元PDU:对等层次之间传送的数据单位。
- 实体:任何可发送或接收信息的硬件或软件进程。
- 协议:控制两个或多个对等实体进行通信的规则的集合。
- 服务:同一系统中相邻两层的实体的数据交换。
- 服务数据单元SDU:层与层之间交换的数据单位
8、分层的优点
- 各层之间是独立的
- 灵活性好
- 结构上可分割开
- 易于实现和维护
- 能促进标准化工作
第2章 物理层
物理层的协议也称为物理层的规程
1、物理层的特性
可以将物理层的主要任务描述为确定与传输媒体的接口有关的一些特性:
- 机械特性:指明接口所用的接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等。
- 电气特性:指明在接口电缆的各条线上出现的电压的范围。
- 功能特性:指明某条线上出现的某一电平的电压的意义。
- 过程特性:指明对于不同功能的各种可能事件的出现顺序。
2、数据通信系统
分为三大部分:源系统、传输系统和目的系统
(1)源系统(发送端、发送方)
包括下面两个部分:
- 源点:源点设备产生要传输的数据。又称为源站或信源。
- 发送器:通常源点生成的数据比特流要通过发送器编码后才能够在传输系统中进行传输。典型的发送器就是调制器。
(2)传输系统(传输网络)
(3)目的系统(接收端、接收方)
包括下面两个部分:
- 接收器:接受传输系统传送来的信号,转换为能被目的设备处理的信息。典型的接收器就是解调器。
- 终点:终点设备从接收器获取传送来的数字比特流,然后把信息输出。又称为目的站或信宿。
3、消息、数据和信号
-
消息(Message):是通信系统中传输的具体对象。(如符号、文字、语音、图像等)
-
数据(Data):是运送消息的实体。
-
信号(Signal):是数据的电气或电磁表现
4、信道和调制
(1)信道一般是用来表示向某一个方向传送信息的媒体。因此,一条通信电路往往包含一条发送信道和一条接收信道。
从通信双方信息交互的方式来看,分为三种基本方式:
- 单向通信:又称单工通信,即只能有一个方向的通信而没有反方向的交互。有线电广播、电视广播等。
- 双向交替通信:又称为半双工通信,即通信的双方都可以发送信息,但不能同时发送。
- 双向同时通信:又称为全双工通信,即通信的双方可以同时发送和接收信息。
PS:单向通信只需要一条信道,剩下两种都需要两条信道。
(2)来自信源的信号称为基带信号,往往包含较多的低频分量,甚至直流分量,信道并不能传输,所以需要对基带信号进行调制。
调制分为两大类:
-
基带调制
仅仅对基带信号的波形进行变换,使它能与信道特性相适应,变换后的信号仍然是基带信号。也被称为编码。
常用的编码:
-
不归零制:正电平代表1,负电平代表0
-
归零制:正脉冲代表1,负脉冲代表0
-
曼彻斯特编码:位周期中心的向上跳变代表0,向下跳代表1。但也可以反过来定义。
-
差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表0,而位开始边界没有跳变代表1。
-
-
带通调制
使用载波进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能更好地在信道中传输。经过载波调制后的信号称为带通信号(即仅在一段频率范围内能够通过信道)。
基本的带通调制方法:
-
调幅(AM):载波的振幅随基带数字信号而变化。例如,0或1分别对应于无载波或有载波输出。
-
调频(FM):载波的频率随基带数字信号而变化。例如,0或1分别对应于频率f1或f2。
-
调相(PM):载波的初始相位随基带数字信号而变化。例如,0或1分别对应于相位0度或180度。
-
5、信道的极限容量
码元指用一个固定时长的信号波形(数字脉冲),代表不同离散数值的基本波形。
限制码元在信道上的传输速率的因素有以下两个:
(1)信道能够通过的频率范围
奈式准则
在带宽为W(Hz)的低通信道中,若不考虑噪声影响,则码元传输的最高速率是2W(码元/秒)。传输速率超过此上限,就会出现严重的码间串扰问题,使接收端对于码元的判决(识别)成为不可能。
(2)信噪比
信噪比就是信号的平均功率和噪声的平均功率之比,常记为S/N。使用分贝(dB)作为度量单位。即:
信噪比(dB) = 10 log10(S/N)(dB)
香农公式
信道的极限信息传输速率C是
C = W log2(1 + S/N)(bit/s)
式中,W(Hz)为信道的带宽,S为信道内所传信号的平均功率,N为信道内部的高斯噪声功率。
6、传输媒体
分为两大类:
(1)导引型传输媒体(固体媒体)
- 双绞线 古老又最常用
- 同轴电缆 很好的抗干扰特性
- 光缆 带宽很大
(2)非导引型传输媒体(自由空间)
- 无线电微波通信
- 卫星通信 通信距离远,且通信费用与通信距离无关,较大的传播时延,保密性相对较差,造价高
7、信道复用
-
频分复用 FDM:同时占用不同带宽资源。
-
时分复用 TDM: 不同时间占用相同的带宽资源。
-
统计时分复用 STDM:把低速的数据集中起来通过高速线路发送。又称异步时分复用,普通的时分复用称为同步时分复用。
-
波分复用 WDM:光的频分复用
-
码分复用 CDM:可以在同样的时间使用同样的频带进行通信,有很强的抗干扰能力,频谱类似于白噪声,不易被敌人发现。当码分复用信道为多个不同地址的用户所共享时,就称为码分多址CDMA。
每一个比特时间再划分为m个短的间隔,称为码片,通常m的值是64或128。每个站被指派一个唯一的码片序列S,S和其他站的码片序列T内积为0,和它自身的内积为1。
第3章 数据链路层
以太网发送的数据使用的是曼彻斯特编码的信号,所以频带宽度比原始的基带信号增加了一倍,因为每秒传送的码元数加倍了(码元率是数据率的2倍)。
1. 链路与数据链路
- 结点:主机和路由器
- 链路:从一个结点到相邻结点的一段物理线路,而中间没有其他交换结点。
- 数据链路:当需要在一条线上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制在这些数据的传输,把实现这些协议的硬件和软件加到链路上,构成数据链路。
也有人会把链路称为物理链路,数据链路称为逻辑链路。
2、三个基本问题
(1)封装成帧
把网络层交下来的IP数据报添加首部和尾部封装成帧。
(2)透明传输
SOH、EOT一个是开始的控制字符,一个是结束的控制字符。
用特殊比特流实现帧同步,某一个实际存在的事物看起来却好像不存在一样。表示无论是什么样的比特组合数据,都能够按照原样没有差错地通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的。
为了解决透明传输的问题,就必须设法使数据中可能出现的SOH和EOT在接收端不被解释为控制字符。在SOH或是EOT前面插入一个转义字符ESC。而在接收端的数据链路层在把数据送往网络层之前删除这些插入的控制字符。这种方法称为字节填充或字符填充。
(3)差错检测
循环冗余校验CRC:CRC是一种校错方法。
- 首先在被除数后面添加n个(比除数少1位)0,然后用二进制的模2运算,最后得到的n位余数就是数据发送前添加在数据后面的冗余码FCS。
例子:
被除数M = 10110011,除数P = 11001
首先在被除数后面加4个0
最后得到的FCS为0100,所以最后发送的帧是101100110100
- 如果传输过程中无差错,那么接收方CRC校验后得到的余数R肯定是0。如果不是0,就代表帧有差错,丢弃。
PS:数据链路层如果仅仅用CRC,则只能做到对帧的无差错接受,即凡是接收端数据链路层接受的帧,可以以非常接近于1的概率认为这些帧在传输过程中没有产生差错。因为有差错的帧都被丢弃了,可以近似表述为凡是接收端数据链路层接受的帧均无差错。
3、点对点协议PPP
目前使用的最广泛的数据链路层协议。不可靠传输,全双工。
(1)特点
- 简单:数据链路层的帧不需要纠错、不需要序号、不需要流量控制。
- 封装成帧:必须规定特殊的字符作为帧定界符。比如SOH、EOT。
- 透明性:必须保证特殊字符的透明性,也就是说如果数据中碰巧出现了和帧定界符一样的比特组合时候,就要采取特殊的措施,比如字节填充。
- 多种网络层协议:必须能够在同一条物理链路上同时支持多种网络层协议(IP和IPX等)的运行。当然也必须支持局域网或是路由器运行的各种网络层协议。
- 多种类型链路:必须能在多种类型的链路上运行。串行或并行、同步或异步、低速或高速、电的或光的等等。
- 差错检测:必须能够对接收端收到的帧进行检测,并立即丢失有错误的帧。如果无法进行差错检测,那么错误的无用帧就会在链路层上继续前进,浪费许多网络资源。
- 检测连接状态:必须具有一种机制能够及时(不超过几分钟)自动检测链路是否处于正常工作的状态。
- 最大传送单元:必须对点对点的链路设置最大传送单元MTU,如果高层发送分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。强调一点:MTU是数据链路层的帧可以载荷的数据部分的最大长度,不是帧的总长度。
- 网络层地址协商:必须提供一种机制使得通信的两个网络层(例如两个IP层)的实体能够通过协商知道或能够配置彼此的网络地址。
- 数据压缩算法:必须提供一种方法来协商使用数据压缩算法,但是PPP协议并不要求数据压缩算法进行标准化。
(2)组成
- 一个将IP数据报封装到串行链路的方法。
- 一个用来建立、配置和测试数据链路层连接的链路控制协议LCP。
- 一套网络控制协议NCP。
(3)帧格式
-
各字段的意义
F:标志字段,规定为0x7E
A:地址字段,规定为0xFF
C:控制字段,规定为0x03
-
字节填充
当信息字段出现和标志字段一样的比特(0x7E)组合时,必须采取一些措施。当PPP使用异步传输时,把转义字符定义为0x7D。
- 信息字段中出现的每一个0x7E转变为2字节序列(0x7D,0x5E)
- 信息字段中出现的每一个0x7D转变为2字节序列(0x7D,0x5D)
- 信息字段中出现ASCII码的控制字符(数值小于0x20的字符),加上转义字符,同时改变该字符的编码。如0x03变为(0x7D,0x23)
-
零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下就要采用零比特填充方法来实现透明传输。
- 在发送端像扫描整个信息字段。
- 只要发现5个连续地1,则立即填入一个0.
- 接收方收到一个帧,先找到一个标志字符F,确定一个帧的边界。
- 发现5个连续1时,就把5个连续的1后的一个0删除,还原成原来的信息比特流。
(4)工作状态
- 物理层连接建立
- 再进行LCP配置协商,如果协商失败,则链路静止。
- 如果成功进行鉴别,鉴别失败则链路终止
- 鉴别成功或无须鉴别,则进入网络层协议,进行NCP配置协商。
- 当网络层配置完毕后,链路就进入可进行数据通信的链路打开状态。
LCP(链路控制协议)是PPP协议的底层,负责链路控制;
NCP(网络控制协议)是PPP协议的上层,负责网络控制。
4、共享通信媒体资源技术
(1)静态划分信道
频分复用、时分复用、波分复用和码分复用等。
(2)动态媒体接入控制
信道并非在用户通信时固定分配给用户。
- 随机接入:所有用户可随机地发送信息。但如果恰巧有两个或更多地用户通信同一时刻发送信息,那么在共享媒体上产生碰撞(发生冲突)。
- 受控接入:用户不能随机的发送信息而必须必须服从一定的控制。这类的典型代表有分散控制的令牌环局域网和集中控制的多点线路探询,也称为轮询。
5、ALOHA协议
(1)纯ALOHA协议
不监视信道,不按时间槽发送,随机重发。
如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到确认就判断发生冲突,等一个随机时间重传。
随机性很强,导致发送成功率很低。
(2)时隙ALOHA协议
把时间分成若干个相同的时间片(时隙),所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等待下一个时间片开始时刻再发送。
6、CSMA/CD协议
载波监听,多点接入,碰撞检测,为了减少冲突发生的概率。不可靠传输,半双工。
- 多点接入:说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是“载波监听”和“碰撞检测”。
- 载波监听:也就是“边发送边监听”。不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道。
- 碰撞检测:适配器边发送数据边检测信道上的信号电压的变化情况,一旦发现总线上出现了碰撞,适配器就要立即停止发送。
7、争用期、截断二进制指数退避、最短帧长和强化碰撞
-
争用期:从上图可以看出,最先发送的数据帧的A站,在发送数据帧后至多经过2τ时间就可知道所发送的数据帧是否发生了碰撞。因此以太网的端到端往返时间2τ称为争用期,又称碰撞窗口。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
-
截断二进制指数退避:通过此算法来确定重传的时机。发生碰撞的站在停止发送数据后,退避一个随机的时间。从离散的整数集合[0,1, … ,(2k - 1)]中随机取一个数,记为r。退避时间就是r倍的争用期。
k = Min[重传次数,10]
-
最短帧长:最短帧长是64字节,凡是小于64字节的帧都是由于冲突而异常终止的无效帧。只要收到了这种无效帧,就应该立即将其丢弃。
-
强化碰撞:发送数据的站一旦发现发生了碰撞,除了立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号。以便让所有用户都知道发生了碰撞。
8、以太网信道利用率
假定发送帧需要的时间是T0
要提高信道利用率,就必须减小τ与T0之比。定义参数α=τ/T0
-
a->0,表示一发生碰撞就立即可以检测出来,并且立刻停止发送,因而信道利用率很高。
-
a越大,表面争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,是的信道利用率降低。
所以,以太网连线的长度受到限制(否则τ的数值会太大),同时以太网的帧长不能太短(否则T0太小)。
极限信道利用率Smax为:
S m a x = T 0 T 0 + τ = 1 1 + a S_{max} =\frac{T_0}{T_0 + τ} =\frac{1}{1 + a} Smax=T0+τT0=1+a1
9、以太网的MAC层
(1)MAC层的硬件地址
硬件地址又称物理地址或MAC地址。
(2) I/G位
地址字段的第一个字节的最低位为I/G位,当I/G位为0时,地址字段表示一个的单个站地址。当I/G位为1时表示组地址,用来进行多播。
(3)G/L位
地址字段第1字节的最低第二位规定为G/L位,当G/L为0时候是全球管理(保证全球没有相同的地址),当G/L为1时时本地管理,这时用户可任意分配网络上的地址。
(4)帧类型
- 单播帧 (一对一):收到的帧的MAC地址与本站的MAC地址相同。
- 广播帧(一对全体):即发送给本局域网上所有站点的帧(全1地址)。
- 多播帧(一对多):即发送给本局域网上的一部分站点的帧。
(5)MAC帧格式
以太网V2的MAC帧较为简单,由五个字段组成:
- 前两个字段分别为6字节长的目的地址和源地址字段。
- 第三个字段是2字节的类型字段。用来表示标志上一层使用的是什么协议,以便把收到来的MAC帧的数据上交到上一层的这个协议。
- 第四个字段是数据字段。长度在46(最小长度64字节减去18字节的首部和尾部)到1500字节之间。
- 最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。
10、以太网交换机、生成树协议
(1)以太网交换机
最初在数据链路层扩展以太网使用的是网桥。
网桥对收到的帧根据其MAC帧的目的地址进行转发和过滤。当网桥收到一个帧时,并不是向所有的端口转发此帧,而是根据此帧的目的MAC地址,查找网桥中的地址表,然后确定将该帧转发到哪一个端口,或者把他丢弃(即过滤)。
后面交换式集线器淘汰了网桥,交换式集线器又称以太网交换机或第二层交换机,强调这种交换机工作在数据链路层。
以太网交换机实质上是一个多端口的网桥。每个端口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。以太网交换机还具有并行性,即能同时连通多对端口,使多对主机能同时通信(网桥一次只能分析和转发一个帧)。
相互通信的主机都独占传输媒体,无碰撞地传输数据。具有N个端口路的以太网交换机的碰撞域共有N个。
以太网交换机是一种即插即用设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的。实际上,这种交换表就是一个内容可寻址存储器CAM。
(2)生成树协议
不改变网络的实际拓扑,但在逻辑上则切断了某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。
11、交换机与集线器比较、虚拟局域网VLAN
(1)交换机与集线器比较
交换机淘汰了集线器。
- 工作层次不同:集线器是工作在第一层(物理层)和,而交换机是工作在第二层(数据链路层)。
- 数据传输方式不同:集线器是广播方式,而交换机是有目的的,只对目的节点发送,只是在MAC地址表中找不到的情况下第一次使用广播发送,之后就不会了。这样做的好处是数据传输效率提高,不会出现广播风暴,也更安全。
- 带宽占用方式不同:集线器所有端口共享集线器的总带宽,而交换机每个端口都有自己的带宽,传输速度快很多。
- 传输模式不同:集线器只能采用半双工方式传输,因为集线器是共享传输介质的,这样在上行通道上集线器一次只能传输一个任务,要么接收,要么发送。
(2)虚拟局域网VLAN
VLAN是由一些局域网网段构成的与物理地址无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个VLAN。
每一个VLAN的计算机处在不同的局域网中。
12、以太网物理层标准
在100Mbit/s
的以太网中采用的方法是保持最短帧长不变,对于铜缆100Mbit/s
以太网,一个网段的最大长度是100m
,其最短帧长64字节
,即512比特
,因此争用期是5.12μs
,帧间最小间隔现在是0.96μs
,都是10Mbit/s
以太网的1/10
。
13、载波延伸、分组突发、ADSL
半双工方式时才使用(吉比特以太网)
(1)载波延伸
使最短帧长仍然为64字节(保留兼容性),同时将争用期增大为512字节。凡发送的MAC帧不足512字节时,就用一些特殊字符填充在帧的后面,使长度增大到512字节,这对有效荷载并无影响。这是为了延长发送的时间,减少碰撞。
(2)分组突发
当很多短帧要发送时,第一个短帧要采用载波延伸的方法进行填充。随后的短帧可以一个接一个地发送,它们之间只需留有必要的帧间最小间隔即可。这是为了避免载波延伸开销。
(3)ADSL
非对称数字用户线ADSL技术就是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带数字业务。
ADSL 技术把低端频谱留给传统电话使用, 而把原来没有被利用的高端频谱留给用户上网使用。DSL 就是数字用户线的缩写。
第4章 网络层
互联网设计思路:网络层向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺,也就是说,所传送的分组可能出错、丢失、重复和失序,当然也不保证分组交付的时限。
1、为什么不能用交换机组网?
-
路由功能:路由器能在不同的网络之间转发数据报。而交换机只能在一个单一的广播域内工作,无法在不同的网络之间进行数据报的转发。
-
异构网络互连:交换机组网无法实现异构网络的互连。由于交换机的路由功能有限,它只能用于连接相同类型的网络,如以太网、令牌环网等。而路由器则可以连接不同类型的网络,如以太网、光纤通道、ATM等,实现异构网络的互连。
-
协议支持:路由器在网络层支持多种协议,如IP、IPX、AppleTalk等,可以实现不同协议之间的转换和路由。而交换机通常只支持一种或少数几种协议,无法实现多种协议之间的转换和路由。
-
网络管理:路由器在网络层提供丰富的网络管理功能,如访问控制列表(ACL)、防火墙等,可以对网络进行更加细致的管理和控制。而交换机通常只有简单的配置和管理功能,无法提供像路由器那样的高级网络管理功能。
2、网络层的核心功能:分组转发与路由选择
(1)网际协议IP
与协议IP配套使用的三个协议:
- 地址解析协议ARP
- 网际控制报文协议ICMP
- 网际组管理协议IGMP
(2)一些概念
- 转发器:物理层使用的中间设备
- 网桥或桥接器或交换机:数据链路层使用的中间设备
- 路由器:网络层使用的中间设备
- 网关:网络层以上使用的中间设备,用网关连接两个不兼容的系统需要在高层进行协议的转换
- 转发:将分组从路由器的输入端口移动到适当的路由器输出端口
- 路由选择:决定分组到目的地所采用的路径(路由选择算法)
3、数据报服务和虚电路服务
(1)虚电路网络
两台计算机进行通信时,先建立连接(在分组交换中是建立一条虚电路VC),以预留双方通信所需的一切网络资源。然后双方沿着已建立的虚电路发送分组。这样的分组不需要填写完整的目的主机地址,而只需要填写这条虚电路的编号。
每个路由器的转发表,记录着经过该路由器的每一条虚电路。路由器需要维护虚电路的连接状态信息。
(2)数据报网络
不需要建立连接,每一个分组独立发送,与其前后的分组无关(不进行编号)。分组携带目的主机地址,路由器根据分组目的地转发分组。
PS:虚电路就是分组全部按照建立好的路径,而数据报的每一个分组都是独立选路(路径并不一定相同)。
4、IP地址、子网掩码、无类地址、子网划分、路由聚合
(1)IP地址及其表示方法
整个互联网就是一个单一的、抽象的网络。IP地址就是给互联网的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。IP地址的结构使我们可以在互联网上很方便地进行寻址。IP地址现在由互联网名字和数字分配机构ICANN进行分配。
IP地址可以记为:
IP 地址 ::= { <网络号>、<主机号> }
::=表示“定义为”。
(2)分类的IP地址
- A、B、C类的网络号字段分别1、2、3个字节长,而在网络号字段的最前面有1-3位类别位,其数值分别规定为0,10,110
- D类地址用于多播(一对多通信)
- E类地址保留为以后使用
A类地址网络号为全0的IP地址表示“本网络”,网络号为127(即01111111)的保留作为本地软件环回测试本主机的进程之间的通信之用。
全0和全1的主机号一般不指派。全0是网络地址,全1是广播地址。
专用地址
- 224.0.0.0 ~ 224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其他地址供路由协议使用。
- 224.0.1.0 ~ 224.0.1.255是公用组播地址,可以用于Internet。
- 224.0.2.0 ~ 238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效。
- 239.0.0.0 ~ 239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效
(3)无分类编址CIDR
-
网络前缀
CIDR把网络号改称为“网络前缀”(或简称为前缀),后面的部分仍然是主机号(或称为后缀)。CIDR的记法是:
IP 地址 ::= { <网络前缀>、<主机号> }
最大的区别是前缀的位数n不是固定的了。
-
地址块
网络前缀都相同的所有连续的IP地址组成一个“CIDR地址块”。我们常使用地址块中的最小地址和网络前缀的位数指明一个地址块,比如128.14.31.0/20地址块。也可以用二进制代码表示:10000000 00001110 0010*。在不需要指明网络地址时,也可把这样的地址块简称为“/20地址块”。
-
地址掩码
又称为子网掩码。在CIDR记法中,斜线后面的数字就是地址掩码中1的个数。例如,/20地址块的地址掩码是:11111111 11111111 11110000 00000000(20个1和12个0)。地址掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分(主机地址和地址掩码做AND运算得到网络地址)。
CIDR地址中还有三个特殊的地址块:
- 前缀n=32,即没有主机号。用于主机路由。
- 前缀n=31,这个地址块只有两个IP地址,其主机号为0和1,用于点对点链路。
- 前缀n=0同时IP地址也是全0,即0.0.0.0/0。用于默认路由。
使用CIDR可以更加有效地分配IP地址空间。一个大的CIDR地址块往往包含很多小地址块,所以在路由器的转发表中就利用较大的一个CIDR地址块来代替许多较小的地址块,这种方法叫做路由聚合。
(4)IP地址的特点
-
每一个IP地址都有网络号和主机号两部分组成,从这个意义上说,IP地址是一种分等级的地址结构。优点如下:
- IP地址管理机构在分配IP地址的时只分配网络前缀,而剩下的主机号则由得到该网络前缀的单位自行分配。方便了IP地址的管理。
- 路由器根据目的主机所连接的网络前缀(即地址块)来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减少了路由表所占的存储空间,缩短查找路由表的时间。
-
实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络前缀必须是不相同的。这种主机称为多归属主机。
-
一个网络是指具有相同网络前缀的主机的集合,因此,用转发器或交换机连接起来的若干个局域网仍为一个网络。具有不同的网络前缀的局域网必须使用路由器进行互连。
-
在IP地址中,所有分配到网络前缀的网络都是平等的。所谓平等,是指互联网同等对待每一个IP地址。
前面说到/31地址块专门为点对点链路的两端使用,但为了节省IP地址资源,对于点对点链路构成的特殊“网络”,现在也常常不分配IP地址。通常把这样的特殊网络叫做无编号网络或匿名网络。
5、IP地址与MAC地址
MAC地址是数据链路层使用的地址
IP地址是网络层和以上各层使用的地址,是一种逻辑地址
- 在IP层抽象的互联网上只能看到IP数据报。
- 路由器只根据目的站的IP地址进行转发。
- 在局域网的链路层,只能看见MAC帧。
- 尽管互连在一起的网络的MAC地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。
PS:
127.0.0.1和192.168.1.xxx的区别:
-
127.0.0.1 是本机地址,ping 127.0.0.1 是可以联通的
-
192.168.1.xxx 这个地址是本地地址在局域网分配的IP,如果没有局域网,这个是无法ping通的。
6、地址解析协议ARP
地址解析协议ARP是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
为什么不直接使用MAC地址,而去使用两种地址(IP地址和MAC地址)?
因为全世界存在着各种各样的网络,它们使用不同的MAC地址。要使这些异构网络能够互相通信就必须进行非常复杂的MAC地址转换工作,由用户或用户主机完成这项任务几乎是不可能的。IP编址解决了这个问题,连接到互联网的主机只需要各自的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须需要多次ARP来找到MAC地址,但这个过程是计算机软件自动进行的,对用户来说是看不到的。
7、IP数据报的格式
(1)版本
占 4 位,指 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。
(2)首部长度
占 4 位。这个字段所表示数的单位是 32 位字长(1 个 32 位字长是 4 字节)。因为IP首部的固定部分是 20 字节,因此首部长度字段的最小值是 5 。而当首部长度字段为 1111 时(即十进制的 15),就表明首部长度达到最大值—— 60 字节。当 IP 分组的首部长度不是 4 字节的整数倍时,必须利用最后的填充字段加以填充。
数据部分永远在 4 字节的整数倍时开始,这样在实现 IP 协议时较为方便。首部长度限制为 60 字节的缺点是,长度有时可能不够用,但这样做是希望用户尽量减少开销。最常用的首部长度就是 20 字节,不使用任何可选字段。
(3)区分服务
占 8 位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998 年 IETF 把这个字段改名为区分服务DS。只有在使用区分服务时,这个字段才起作用。
(4)总长度
总长度指首部和数据之和,单位为字节。总长度字段为 16 位,因此数据报的最大长度为 216-1=65535 字节。
IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU。若所传送的数据报长度超过MTU值,就必须把过长的数据报进行分片处理。
协议IP规定,在互联网中所有的主机和路由器必须能够接受长度不超过576字节的数据报。这是假定上层交下来的数据长度有512字节(合理的长度),加上最长的IP首部60字节,再加上4字节的富余量,就得到576字节。当主机需要发送长度超过576字节的数据报时,应当先了解一下,目的主机能否接受所要发送的数据报长度。否则,就要进行分片。
(5)标识
占 16 位。IP 软件在存储器中维持一个计数器。每产生一个数据报,计数器就加 1,并将此值赋给标识字段(不是序号,因为IP是无连接服务,不存在按序接收)。当数据报的长度超过网络的 MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装为原来的数据报。
(6)标志
占 3 位。第一位未使用,其值为 0。
第二位称为 DF(Don’t Fragment)。只有当DF = 0时才允许分片。
第三位称为 MF(More Fragment)。MF = 1即表示后面“还有分片”的数据报。MF = 0表示这已是若干数据报片中的最后一个。
(7)片偏移
占 13 位。当报文被分片后,该字段标记该分片在原报文中的相对位置。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。
(8)生存时间(TTL)
表示数据报在网络中的寿命,占 8 位。由发出数据报的源点设置。其目的是防止无法交付的数据报无限制地在网络中传输,从而消耗网络资源。
路由器在转发数据报之前,先把 TTL 值减 1。若 TTL 值减少到 0,则丢弃这个数据报,不再转发。因此,TTL 指明数据报在网络中最多可经过多少个路由器。TTL 的最大数值为 255。若把 TTL 的初始值设为 1,则表示这个数据报只能在本局域网中传送。
(9)协议
占 8 位。协议字段指出此数据报携带的数据使用何种协议,以便使目的主机的 IP 层知道应将数据部分上交给哪个协议进行处理。
常用的一些协议和相应的协议字段值如下:
协议名 | ICMP | IGMP | IP | TCP | EGP | IGP | UDP | IPv6 | ESP | AH | ICMP-IPv6 | OSPF |
---|---|---|---|---|---|---|---|---|---|---|---|---|
协议字段值 | 1 | 2 | 4 | 6 | 8 | 9 | 17 | 41 | 50 | 51 | 58 | 89 |
(10)首部检验和
占 16 位。这个字段只校验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。
(11)源地址
占 32 位。发送IP数据报的主机的IP地址。
(12)目的地址
占 32 位。接收IP数据报的主机的IP地址。
(13)可选字段
该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。
(14)填充
由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍。
(15)数据部分
表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。
8、IP层转发分组的过程
(1)基于终点的转发
分组在互联网上传送和转发是基于分组首部中的目的地址的。
主机首先必须确定,目的主机是否连接在本网络上?
那么怎么判断是否在本网络上呢?把要发送的分组的目的地址和本网络的子网掩码按位进行AND运算,得出运算结果。
- 如果运算结果等于本网络N 的前缀,就表明目的主机连接在本网络上;
- 否则,就必须把分组发送到路由器,由路由器完成后续的任务。
(2)最长前缀匹配
在采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前缀最长的一个作为匹配的前缀。这个原则称为最长前缀匹配。网络前缀越长,其地址块就越小,因而路由就越具体。
实际的转发表有时还可能增加两种特殊的路由,就是主机路由和默认路由。
- 主机路由,又叫作特定主机路由,这是对特定目的主机的IP地址专门指明的一个路由。采用特定主机路由可使网络管理人员更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。在对网络的连接或转发表进行排错时,指明到某一台主机的特殊路由就十分有用。假定这个特定主机的点分十进制IP地址是a.b.c.d,那么在转发表中对应于主机路由的网络前缀就是a.b.c.d/32。实际的网络不可能使用32位的前缀,因为没有主机号的IP地址是没有实际意义的。但这个特殊的前缀却可以用在转发表中。不难看出,32个1的子网掩码和IP地址a.b.c.d 按位进行AND运算后,得出的结果必定是a.b.c.d,也就是说,找到了匹配。这时就把收到的分组转发到转发表所指出的下一跳。主机路由在转发表中都放在最前面。
- 还有一种特殊路由是默认路由。这就是不管分组的最终目的网络在哪里,都由指定的路由器R来处理。这在网络只有很少的对外连接时非常有用。在实际的转发表中,用一个特殊前缀0.0.0.0/0来表示默认路由。这个前缀的掩码是全0(/0表示网络前缀是0位,因此掩码是32个0)。用全0的掩码和任何目的地址进行按位AND运算,结果一定是全0,即必然是和转发表中的0.0.0.0/0相匹配的。这时就按照转发表的指示,把分组送交下一跳路由器R来处理(即间接交付)。
(3)使用二叉线索查找转发表
先找出对应于每一个IP地址的唯一前缀。所谓唯一前缀就是在表中所有的IP地址中,该前缀是唯一的。这样就可以用这些唯一前缀来构造二叉线索。在进行查找时,只要能够和唯一前缀相匹配就行了。
假定有一个IP地址是10011011 01111010 00000000 00000000,需要查找该地址是否在此二叉线索中。很容易发现,查到第三个字符(即前缀10后面的0)时,在二叉线索中就找不到匹配的,说明这个地址不在这个二叉线索中。
二叉线索只是提供了一种可以快速在转发表中找到匹配的叶节点的机制。但这是否和网络前缀匹配,还要和子网掩码进行一次逻辑AND运算。
9、网际控制报文协议ICMP
ICMP网际控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
(1)ICMP报文的种类
ICMP报文种类 | 类型的值 | ICMP报文的类型 |
---|---|---|
差错报告报文 | 3 | 终点不可达 |
11 | 时间超过 | |
12 | 参数问题 | |
5 | 改变路由 | |
询问报文 | 8或0 | 回送请求或回送回答 |
13或14 | 时间戳请求或时间戳回答 |
①ICMP差错报告报文
- 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
- 时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向远点发送时间超过报文。
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(也就是说找到了更好的路由)。
不应发送ICMP的差错报告报文的情况:
- ICMP差错报告报文,不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
- 对具有多播地址的数据报,都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.1或0.0.0.0)的数据报,不发送ICMP差错报告报文。
②ICMP询问报文
-
回送请求或回送回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
-
时间戳请求或时间戳回答:在ICMP时间戳请求报文发出后,就能够收到对方响应的ICMP时间戳回答报文。利用报文中记录的时间戳)如报文的发送时间和接收时间),发送方很容易计算出当前网络的往返时延。
(2)格式
10、IPv6
(1)IPv6产生的原因
解决IP地址耗尽的措施有三种:
- 采用无类别编址CIDR,使IP地址的分配更加合理
- 采用网络地址转换(NAT)方法以节省全球IP地址
- 采用具有更大地址空间的新版本IPv6
前两种只是延长了IPv4地址分配完毕的时间,只有第三种方法从根本上解决了问题。
(2)IPv6所引进的主要变化:
- 更大的地址空间
- 扩展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用
- 支持资源的预分配
- 首部改为8字节对齐
(3)IPv6数据报格式
首部某些字段进行了如下更改:
- 取消了首部长度字段,改为固定首部长度(40字节)。
- 取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。
- 取消了总长度字段,改用有效载荷长度字段。
- 取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中。
- 把TTL字段改为跳数限制字段。
- 取消了协议字段,改用下一个首部字段。
- 取消了校验和字段。
- 取消了选项字段,而用扩展首部来实现选项功能。
(3)IPv6基本地址类型
IPv6数据报的目的地址可以是以下三种基本类型地址之一:
- 单播:单播就是传统的点对点通信。
- 多播:多播是一点对多点的通信,数据报发送到一组计算机中的每一个。IPv6没有采用广播的术语,而是将广播看作多播的一个特例。
- 任播:这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。
IPv6的地址使用冒号十六进制记法,如 FF05:0:0:0:0:0:0:B3。允许省略0,可压缩为:FF05::B3,在任一地址中只能使用一次零压缩。
(4)从IPv4向IPv6过渡
-
双栈协议
双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。 -
隧道技术
通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。
11、有关路由选择协议的几个基本概念
(1)理想的路由算法
具有如下特点:
- 算法必须是正确的和完整的
- 算法在计算上应简单
- 算法应能适应通信量和网络拓扑的变化
- 算法应具有稳定性
- 算法应是公平的
- 算法应是最佳的
两种路由算法:
- 静态路由选择策略(非自适应路由选择)
- 动态路由选择策略(自适应路由选择)
(2)分层次的路由选择协议
-
内部网关协议IGP
即在一个自治系统内部使用的路由选择协议,而这与在互联网中其他自治系统选用什么路由选择协议无关。目前这类路由选择协议使用的最多的是RIP和OSPF协议。 -
外部网关协议EGP
若源主机和目的主机处在不同的自治系统中,那么在不同的自治系统AS之间的路由选择,就需要使用外部网关协议EGP。目前使用最多的外部网关协议是BGP的版本4(BGP-4)。
自治系统之间的路由选择也叫做域间路由选择,在自治系统内部的路由选择叫做域内路由选择。
12、RIP、OSPF、BGP
(1)内部网关协议RIP
RIP是一种分布式的基于距离向量的路由选择协议。协议RIP的“距离”也称跳数,就是他通过的网络数目。RIP允许一条路径最多只能包含15个网络。因此距离等于16相当于不可达。可见RIP只适用于小型互联网。
①特点
存什么
-
自己到每一个目的网络的距离记录
和谁发
-
仅和相邻的路由器交换信息。
发什么
-
交换的信息是当前路由器所知道的全部信息,即自己现在的路由表。
何时发
-
按固定的时间间隔交换路由信息。(如每隔30s)
②距离向量算法
首先对收到的X发送的RIP报文,将下一跳都改为X,距离+1。然后:
- 没有的网络直接添加。
- 已有的、下一跳不同的选择跳数少的替换。若一样,保留原来的。
- 已有的、下一跳相同的直接替换。
③好消息传播得快,坏消息传播得慢
(2)内部网关协议OSPF
协议的名字是开放最短路径优先OSPF,使用了Dijkstra提出的最短路径算法SPF。
①特点
存什么
-
全网共有多少个路由器,以及哪些路由器是相连的,其代价多少等等。
和谁发
-
向本自治系统中所有路由器发送信息。
发什么
-
发送的信息就是本路由器相邻的所有路由器的链路状态
何时发
-
当链路状态发生变化或每隔一段时间(如30分钟),路由器才向所有路由器用洪泛法发送此信息。
②OSPF的五种分组类型
- 问候(Hello)分组:用来发现和维持邻站的可达性。
- 数据库描述(Database Description)分组:向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 链路状态请求(Link State Request)分组:向对方请求发送某些链路状态项目的详细信息。
- 链路状态更新(Link State Update)分组:用洪泛法对全网更新链路状态。这种分组是最复杂的,也是OSPF协议最核心的部分。路由器使用这种分组将其链路状态通知给邻站。链路状态更新分组共有五种不同的链路状态。
- 链路状态确认(Link State Acknowledgment)分组:对链路更新分组的确认。
(3)外部网关协议BGP
边界网关协议BGP只能是力求选择出一条能够到达目的网络前缀且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。但有时不严格地称为最佳路由。BGP采用了路径向量路由选择协议。
①BGP路由
从eBGP对等端收到的BGP路由。可通过iBGP告诉同一AS内的对等端。反过来也是可以的,即从iBGP对等端收到的BGP路由,可通过eBGP告诉在不同AS的对等端。但是,从iBGP对等端收到BGP路由,不能转告给同一个AS内不同iBGP的对等端。
②BGP的路由选择
- 本地偏好LOCAL-PREF值最高的路由首先选择
- 选择具有AS跳数最小的路由
- 使用热土豆加热算法
- 选择路由器BGP标识符的数值最小的路由
③BGP的四种报文
- OPEN
- UPDATE
- KEEPALIVE
- NOTIFICATION
建立TCP连接后必须接着发送OPEN报文。收到OPEN报文的路由器回送KEEPALIVE报文表示接受BGP连接。
UPDATE报文是BGP协议的核心,用来撤销它曾经通知过的路由,或宣布增加新的路由。撤销路由可以一次撤销许多条,但增加新路由时,每个更新报文只能增加一条。
NOTIFICATION报文用来发送检测到的差错。
13、IP多播(网际组管理协议IGMP)
IP多播是对硬件多播的抽象,是对标准IP网络层协议的扩展。它通过使用特定的IP多播地址,按照最大投递的原则,将IP数据报传输到一个多播群组的主机集合。
它的基本方法是:当某一个人向一组人发送数据时,它不必将数据向每一个人都发送数据,只需将数据发送到一个特定的预约的组地址,所有加入该组的人均可以收到这份数据。这样对发送者而言,数据只需发送一次就可以发送到所有接收者,大大减轻了网络的负载和发送者的负担。
14、虚拟专用网VPN和网络地址转换NAT
(1)VPN
VPN的功能是:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据的加密和数据目标地址的转换实现远程访问。VPN可通过服务器、硬件、软件等多种方式实现。
(2)NAT
NAT,网络地址转换是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网(私网IP)连接到因特网(公网IP)的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址(公网IP地址)。这样,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
第5章 运输层
1、进程之间的通信
从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。
从IP层来说,通信的两端是两台主机。但这种说法还不够明确,从运输层来说,通信的两端应当是两个主机中的应用进程。也就是说,端到端的通信是应用进程之间的通信。
2、UDP和TCP
运输层有两种不同的运输协议,面向连接的TCP和无连接的UDP。
- 用户数据报协议UDP
- 传输控制协议TCP
两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU。
(1)复用
应用层所有的应用进程都可以通过运输层再传送到IP层(网络层)。
(2)分用
运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程。显然,给应用层的每个应用进程赋予一个非常明确的标志是至关重要的。
应用层的各种协议进程与运输实体进行层间交互的地点称为协议端口。
(1)服务器使用的端口号
- 熟知端口号或全球通用端口号,数值为0~1023
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(trap) | POP3 | HTTPS |
---|---|---|---|---|---|---|---|---|---|---|
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 | 110 | 443 |
- 登记端口号,数值为1024~49151
(2)客户端使用的端口号
数值为49152~65535.仅在客户进程运行时才动态选择,因此又叫作短暂端口号。
3、用户数据报协议UDP
(1)概述
- 无连接的
- 尽最大努力交付
- 面向报文
- 没有拥塞控制
- 支持一对一、一对多、多对一和多对多的交互通信
- 首部开销小,只有8字节,比TCP的20字节小
(2)UDP的首部格式
在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。和IP数据报的检验和只检验IP数据报的首部不同,UDP的检验和是把首部和数据部分一起都检验。分成许多的16为的字串,按二进制反码运算求和。
4、传输控制协议TCP
(1)最主要的特点
- 面向连接的运输层协议
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
- 提供可靠交付的服务
- 提供全双工通信
- 面向字节流
(2)TCP的首部格式
TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。
-
数据偏移字段的单位是32位字,因为他有4位,所以TCP首部的最大字节为60(即选项长度不能超过40字节)。
-
和UDP用户数据报一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。伪首部的格式和UDP用户数据报的伪首部一样。但应把伪首部第4个字段中的17改为6(TCP的协议号是6)。
5、TCP连接的建立和释放(P247)
①TCP的连接建立,三次握手
为什么客户端最后还要发送一次确认呢?
防止已失效的连接请求报文段突然传送到了服务器,因而产生错误。
②TCP的连接释放,四次挥手
MSL叫作最长报文段寿命
为什么A在TIME-WAIT状态必须等待2MSL的时间呢?
- 为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK报文可能丢失,服务器就会超时重传FIN+ACK报文段,这样客户端能在2MSL内收到并重发最后一个ACK。
- 防止已失效的连接请求报文段出现在本连接中。等待2MSL可以使本连接持续时间内所产生的所有报文段都从网络中消失。
6、可靠传输
(1)停止等待协议
可靠传输中这个协议是最简单的,但是运输层并不是使用这个协议的。这里只是为了引出可靠传输的问题而已。
这种可靠传输协议常称为自动重传请求ARQ
(2)连续ARQ协议
因为停止等待协议信道利用率太低了,所以采用连续ARQ协议。
具体实现:
(1)以字节为单位的滑动窗口
假定A收到了B发来的确认报文段,其中窗口是20字节,确认号是31。根据这两个数据,A构造出自己的发送窗口。
(2)超时重传时间的选择
TCP保留了RTT的一个加权平均往返时间RTTS(又称平滑的往返时间)。第一次测到RTT时,RTTS就取RTT,之后每次测到RTT时,都得计算一次新的RTTS。
新的RTTS = (1- α)× 旧的RTTS + α × 新的RTT
式中,0 ≦ α < 1。推荐的取值为0.125。
超时计时器设置的超时重传时间RTO应略大于RTTS:
*** RTO = RTTS + 4 × RTTD***
RTTD是RTT的偏差的加权平均值。第一次测到RTT时,RTTD就取RTT的一半,之后每次测到RTT,都得计算一次新的RTTD。
新的RTTD = (1 - β)× 旧的RTTD + β × |RTTS - 新的RTT|
β是个小于1的系数,他的推荐值是0.25。
报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是取旧重传时间的2倍。当不再发生报文段重传时才根据上面的式子计算超时重传时间。
(3)选择确认SACK
接收方接收到的序号不连续,如何只让发送方重传没有收到的序号。
和前后字节不连续的字节块都有两个边界:左边界和右边界。左边界是字节块的第一个字节的序号,右边界减1才是字节块的最后一个序号。
如果要使用选择确认SACK,就得在建立TCP连接时,在TCP首部的选项字段加上“允许SNAK”的选项,而且双方必须事先商定好。
首部选项字段最长40字节。指明SNAK选项以及指明SNAK选项要占多少字节需要用2字节。每一个字节块有两个边界,一个边界的序号是32位,即4字节。所以最多只能一次指明4个字节块,用了34字节。若要指明5个字节块,就得42字节,超了。
然后,SNAK文档并没有指明发送方该怎样响应SNAK。因此大多数的实现还是重传所有未被确认的数据块。
7、TCP的流量控制
(1)利用滑动窗口实现流量控制
发送方的发送窗口不能超过接收方给出的接收窗口的数值。TCP窗口的单位是字节,不是报文段。
我们假设一种情况,B向A发送了零窗口的报文段之后不久,B的接收缓存又有了一些存储空间。所以B向A发送了自己新的接收窗口大小(非0)的报文段。然而这个报文段丢失了,A一直在等待收到B发送的非零窗口的通知,B也一直在等待A发送数据。这就形成了死锁局面。
为了解决这个问题,TCP为每一个连接设有一个持续计时器。只要一方收到对方的零窗口通知,就启动持续计时器。若时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。
-
如果窗口仍是0的话,那么收到的这个报文段的一方就重新设置持续计时器。
-
如果窗口不是0的话,那么就会打破等待。
(2)TCP的传输效率
假设TCP接收方的缓存已经满了,而交互式的应用进程一次只从接收缓存中读取1字节,然后向发送方发送确认,并把窗口设置为1个字节(但发送的数据报是40字节长),接着发送方又发来了1个字节的数据(请注意,发送方发送的IP数据报是41字节长)。接收方发回确认,仍然为1个字节。这样下去会使得网络的效率很低。
为了解决这个问题,可以让接收方等待一段时间,使得或是接收缓存已有足够空间容纳一个最长的报文段,或等到接收缓存已有一半空闲的空间。只要出现这两种情况之一,接收方就发出确认报文,并向发送方通知当前的窗口大小。此外,发送方不要发送太小的报文段,而是把数据积累成足够大的报文段,或达到接收方缓存的空间的一半大小。
8、TCP的拥塞控制
防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。
(1)慢开始和拥塞避免
-
慢开始
cwnd的初值置为1,发送窗口swnd等于拥塞窗口cwnd。每次收到确认报文后,将cwnd变为2倍。
-
拥塞避免
当拥塞窗口cwnd等于慢开始门限ssthresh时,改用拥塞避免算法。cwnd每次只能增加1。
-
快速重传
发送方只要一连收到3个重复确认,立即进行重传。然后执行快恢复。
-
快恢复
门槛值ssthresh = cwnd / 2。同时设置cwnd = ssthresh。
拥塞避免阶段,拥塞窗口是按照线性规律增大的,这就是加法增大AI。而一旦出现超时或3个重复的确认,就要把门限值设置为当前拥塞窗口值得一半,并大大减小拥塞窗口的值(3个重复ack拥塞窗口变为一半,超时则是变为1开始执行慢开始),这称为乘法减小MD。二者合在一起就是所谓的AIMD算法。
在设置发送方的窗口大小时,我们还需要考虑接收方窗口值rwnd
发送方窗口的上限值 = Min[rwnd,cwnd]
第6章 应用层
1、网络应用程序的体系结构
(1)C/S(客户-服务器方式)
服务器:
- 永远在线
- 具有固定的、众所周知的IP地址
- 使用数据中心提供不间断服务
客户机:
- 只与服务器通信
- 可以间歇地连接服务器
- 可以具有动态的IP地址
- 彼此之间并不通信
(2)P2P对等通信
实质上是一种特殊的客户服务器方式。
- 无需永远在线的服务器
- 任意的端系统直接通信
- 对等方彼此请求服务,并提供服务
- 对等方间歇地连接,并允许改变IP地址
客户-服务器方式和P2P方式文件分发时间的计算:
主机有N台,下载的文件记为F。服务器的上传速率记为uS,单位是bit/s。主机和互联网连接的链路的上传速率和下载速率分别为ui和di,单位都是bit/s。下载速率最慢的主机下载速率为dmin。
客户-服务器方式所有主机都下载完成文件F的最少时间是:
TCS = max{ N F u S \frac{NF}{u~S~} u S NF, F d m i n \frac{F}{d~min~} d min F}
整个系统中所有主机的上传速率之和是uT = uS + u1 + u2 + … + uN
P2P方式所有主机都下载完成文件F的最少时间的下限是:
TP2P = max{ F u S , F d m i n , N F u T \frac{F}{u~S~},\frac{F}{d~min~},\frac{NF}{u~T~} u S F,d min F,u T NF}
2、域名系统DNS
(1)顶级域名
-
国家顶级域名nTLD
-
通用顶级域名gTLD
-
基础结构域名,又称反向域名
(2)我国把二级域名划分为“类别域名”和“行政区域名”两大类。
(3)域名系统不是以“域”为管理单位,而是以“区” (zone)为管理单位。区可能等于或小于域,但一定不能大于域。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
(4)本地域名服务器采用迭代查询
根据域名服务器所起的作用,可以把域名服务器划分为以下四种不同的类型:
-
根域名服务器:不管是哪一个本地域名服务器,只要自己无法解析,就首先求助于根域名服务器。
-
顶级域名服务器:当收到 DNS 查询请求时,一般情况下会给出下一步应当找的权限域名服务器的 IP 地址(但也可能是最后的结果)。
-
权限域名服务器:权限域名服务器负责最终的域名到 IP 地址的解析。
-
本地域名服务器:本地域名服务器也称为默认域名服务器。当一个主机发出 DNS 查询请求时,该查询请求报文就首先发送给本地域名服务器。并且本地域名服务器会缓存其最近查询过的域名的解析,当所要查询的主机位于本地域名服务器的缓存中时,本地域名服务器就能立即将所查询的主机名转换为它的 IP 地址,而不需要再去询问其他的域名服务器。
(5)本地域名服务器采用递归查询
为什么DNS支持UDP和TCP呢 ?
大多数情况下 DNS 使用 UDP 进行传输(因为一般返回的内容不会超过 UDP 报文的最大长度,即 512 字节。用 UDP 传输时,不需要经过 TCP 三次握手的过程,从而大大提高了响应速度),因此这也要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。但在两种情况下会使用 TCP 进行传输:
- 如果返回的响应超过的 512 字节
- 区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据,这个数据量一般都很大)。
3、文件传送协议FTP
文件传送协议 FTP 使用 TCP 可靠的运输服务,是互联网上使用得最广泛的文件传送协议。FTP 使用客户-服务器方式,并且一个 FTP 服务器进程可同时为多个客户进程提供服务。
FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作步骤:
(1)打开熟知端口(端口号为21),使客户进程能够连接上。
(2)等待客户进程发出连接请求。
(3)启动从属进程处理客户进程发来的请求,处理完毕后即终止从属进程。
(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。
简单文件传送协议TFTP
熟识端口号为69。
使用UDP数据报,因此有自己的差错更改措施。TFTP只支持文件传输而不支持交互。TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
TFTP的主要特点:
(1)每次传送的数据报文中有512字节的数据,但最后一次可不足512字节。
(2)数据报文按序编号,从1开始。
(3)支持ASCII码或二进制传送。
(4)可对文件进行读或写。
(5)使用很简单的首部。
4、远程终端协议TELNET
以前广泛使用,但安全性较差,逐渐被SSH协议所取代。
(1)用户用 TELNET 就可在其所在地通过 TCP 连接登录到远地的另一台主机上。
(2)TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。
(3)TELNET 使用客户-服务器方式,在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。
(4)TELNET 可以适应许多计算机和操作系统的差异(TELNET 定义了数据和命令的标准格式,即网络虚拟终端 NVT 格式)。
客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。服务器软件把收到的数据和命令从 NVT 格式转换成远地系统所需的格式。向用户返回数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。
5、万维网WWW
万维网WWW是一个大规模的、联机式的信息储藏所。
万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
万维网是一个分布式的超媒体系统,是超文本系统的扩充。而超文本是指包含指向其他文档的链接的文本。
超媒体与超文本的区别:文档内容不同。
- 超文本文档仅包含文本信息 。
- 超媒体文档还包含其他形式的信息 ,如图形、图像、声音、 动画以及视频等 。
工作方式
万维网以客户-服务器方式工作。在万维网文档所驻留的主机上运行服务器程序,这个主机也称为万维网服务器;在客户主机上运行客户程序,万维网客户程序又叫做浏览器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在客户程序主窗口上显示出的万维网文档称为页面。
需要解决的问题
(1)怎样标志分布在整个互联网上的万维网文档?
统一资源定位符 URL
使用统一资源定位符 URL。使每一个文档在整个互联网的范围内具有唯一的标识符 URL。
URL的一般形式是:
<协议>://<主机>:<端口>/<路径>
- 协议:指出使用什么协议来获取该万维网文档,比如:FTP、HTTP、HTTPS。
- 主机:万维网文档所存放的主机的域名。通常以www开头,但也可用IP地址。
- 端口:协议使用的端口。使用默认端口号时可以省略。
- 路径:万维网文档所存放的目录。若省略<路径>,则URL指向互联网中某个主页。
(2)用什么协议来实现万维网上的各种链接?
超文本传送协议 HTTP
使用超文本传送协议 HTTP。HTTP 是一个应用层协议,使用 TCP 连接进行可靠的传送。HTTP 定义了浏览器与万维网服务器通信的格式和规则。
请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间 RTT。
①非持续连接:
HTTP/1.0 每请求一个文档就要有两倍 RTT 的开销。若一个页面上有很多链接的对象(如图片等)需要依次进行链接,那么每一次链接下载都导致两倍 RTT 的开销。
万维网服务器往往要同时服务于大量客户的请求,这种非持续连接会使万维网服务器的负担很重。
②持续连接:
HTTP/1.1 使用持续连接:万维网服务器在发送响应后仍然在一段时间内保持这条 TCP 连接,使同一个客户和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文,只要这些文档都在同一个服务器上就行。
持续连接有两种工作方式:
-
非流水线方式
客户在收到前一个响应后才能发出下一个请求。在 TCP 连接建立后,客户每访问一次对象都要用去一个往返时间 RTT。这比非持续连接要用去两倍 RTT 的开销,节省了建立 TCP 连接所需的一个 RTT 时间。
非流水线方式的缺点:服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
-
流水线方式
客户在收到 HTTP 响应报文之前能够接着发送新的请求报文。连续的多个请求报文到达服务器后,服务器就可连续发回响应报文。(这和滑动窗口机制很像)
流水线工作方式使 TCP 连接中的空闲时间减少,提高了下载文档的效率。
HTTP/2 是 HTTP/1.1 的升级版本,其新增特性如下:
-
服务器可以使用同一个TCP连接并行地发回响应。
-
允许客户复用 TCP 连接进行多个请求,节省连续多次建立和释放 TCP 连接所花费的时间。
-
把所有的报文都划分为许多较小的二进制编码的帧,并采用新的压缩算法,不发送重复的首部字段,大大减小了首部的开销,提高了传输效率。
代理服务器
代理服务器把最近的一些请求和响应暂存在本地磁盘中。当与暂时存放的请求相同的新请求到达时,代理服务器就返回暂存的响应,而不需要按 URL 去互联网访问该资源。
HTTP的报文结构
HTTP 有两类报文:请求报文和响应报文。
这两种报文都由三部分组成:
-
开始行:用于区分是请求报文还是响应报文。这两种报文的区别就是开始行不同。请求报文的开始行叫请求行,响应报文的开始行叫状态行。
-
首部行:说明浏览器、服务器或报文主体的一些信息。可以有多行,也可以不使用。首部行每一个字段的值都是一些 ASCII 码串,因此每个字段的长度是不确定的。
-
实体主体:请求报文中一般不用;响应报文中一般是万维网文档,但也可不用。
请求行包括:方法,请求资源的URL,HTTP的版本。
方法指对所请求的对象进行的操作,实际上就是一些命令。请求报文的类型由它所采用的方法决定。
状态行包括:HTTP的版本,状态码,短语
状态码指服务器操作完成的状态。分为5大类:
短语指解释状态码的简单短语。如“Accepted、Not Found。
万维网站点使用 Cookie 来识别、跟踪用户
①当用户 A 浏览某个使用 Cookie 的网站时,该网站的服务器就为 A 生成一个唯一的识别码,并作为索引写入数据库。服务器在给 A 的 HTTP 响应报文中添加一个叫做Set-cookie 的首部行,其值就是赋予该用户的识别码。
②浏览器收到后就把服务器的主机名和识别码作为一项写入 Cookie 文件。
③当用户 A 继续浏览此网站时,每发送一个 HTTP 请求报文,浏览器都会从其 Cookie 文件中取出这个网站对应的识别码,并放到 HTTP 请求报文的 Cookie 首部行中。利用此识别码,这个网站就能够跟踪该用户在该网站的活动。
④服务器并不是想通过 Cookie 获得用户 A 的真实姓名等信息,只是想知道 A 都做了些什么以提供更加便利、友好的服务。
(3)怎样使不同作者创作的不同风格的万维网文档都能在互联网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接?
超文本标记语言 HTML
超文本标记语言 HTML 是一种制作万维网页面的标准语言
万维网文档的类别:
- 静态文档 :文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。
- 动态文档 :在浏览器访问万维网服务器时,由应用程序动态创建。
- 活动文档 :浏览器端运行活动文档程序,使浏览器的屏幕显示连续更新。
(4)怎样使用户能够很方便地找到所需的信息?
搜索引擎
分为两大类:
-
全文检索搜索引擎
谷歌、必应、百度。
-
分类目录搜索引擎
雅虎、搜狐、新浪。
6、电子邮件(SMTP,POP3,IMAP)
电子邮件系统由三个主要构件组成:用户代理,邮件服务器,以及邮件发送协议和邮件读取协议。
- 用户代理,是用户与电子邮件系统的接口,又被称为电子邮件客户端软件。
- 邮件服务器,主要用来发送和接收邮件,同时还要向发件人报告邮件传送的结果。
- 用户代理向邮件服务器发送邮件或邮件服务器之间发送邮件,使用简单邮件传送协议 SMTP。
- 用户代理从邮件服务器读取邮件时,使用邮局协议第 3 版 POP3。
SMTP 和 POP3 都使用 TCP 连接来可靠地传送邮件,并且都使用客户-服务器的工作方式。
网际报文存取协议IMAP
和POP3一样,属于邮件读取协议。
区别:
- POP3 的特点是只要用户从服务器上读取了邮件,就把该邮件删除。但最新版本的 POP3 可以不删除邮件。
- IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除。IMAP 这种做法可以让用户随时随地去访问服务器上的邮件。
(1)基于万维网的电子邮件
上面介绍的电子邮件的实现,需要在计算机中安装用户代理软件UA(不同用户的电脑可能不同),很不方便。因此基于万维网的电子邮件就出世了,你可以非常方便的在一种浏览器上收发电子邮件。比如QQ邮箱、网易邮箱。
- 电子邮件从 A 的浏览器发送到 A 的邮件服务器使用 HTTP 协议的 POST 方法。
- 两个邮件服务器之间传送邮件仍然使用 SMTP 协议。
- 邮件从 B 的邮件服务器传送到 B 的浏览器使用 HTTP 协议的 GET 方法。
(2)通用互联网邮件扩充MIME
SMTP不能传送可执行文件或其他二进制文件,只能传送7位的ASCII文本文件。所以需要使用MIME对邮件内容的格式进行转换。
7、动态主机配置协议DHCP
连接到互联网的计算机的协议软件需要配置以下项目:
- IP 地址
- 子网掩码
- 默认路由器的 IP 地址(即默认网关)
- 域名服务器的 IP 地址
动态主机配置协议 DHCP (即插即用的连网方式) 允许主机自动获取以上配置信息而不需要手工干预。
大概步骤:(DHCP 使用客户-服务器方式)
-
需要 IP 地址的主机在启动时广播发送发现报文(DHCPDI-SCOVER) (将目的 IP 地址置为 255.255.255.255),这时该主机就成为 DHCP 客户。发送广播报文是因为现在还不知道 DHCP 服务器在什么地方,因此要发现(DISCOVER) DHCP 服务器的 IP 地址。这台主机目前还没有自己的 IP 地址,因此它将 IP 数据报的源 IP 地址设为全 0。
-
本地网络上的所有主机都能够收到这个广播报文,但只有 DHCP 服务器才回答此广播报文。DHCP 服务器先在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息;若找不到,则从服务器的 IP 地址池(address pool) 中取一个地址分配给该计算机。DHCP 服务器使用提供报文(DHCPOFFER) 将配置信息返回给请求方。
DHCP 中继代理
广播发送的发现报文无法跨网络传输,而在每一个网络中设置一个 DHCP 服务器又会使 DHCP 服务器的数量太多,因此需要在每一个网络中至少部署一个 DHCP 中继代理(路由器大多具有中继代理功能),它配置了 DHCP 服务器的 IP 地址信息。
然后,当 DHCP 中继代理收到主机 A 以广播形式发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再把此提供报文发回给主机 A。
租用期
DHCP 服务器分配给 DHCP 客户的 IP 地址是临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期,其值可在 DHCP 服务器中设定。
DHCP 服务器在给 DHCP 客户发送的提供报文的选项中给出租用期的数值。若租用期过半,DHCP 客户需要发送请求报文(DHCPREQUEST) 更新租用期(即续租)。
为什么需要两个熟知端口(67、68)呢?
从DHCP协议的工作原理阐述:
①DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文。
② DHCP 客户从 UDP 端口 68 发送 DHCP 发现报文 。
③凡收到 DHCP 发现报文的 DHCP 服务器都发出 DHCP 提供报文,因此 DHCP 客户可能收到多个 DHCP 提供报文。
④DHCP 客户从几个 DHCP 服务器中选择一个,并向其发送 DHCP 请求报文。
⑤被选择的 DHCP 服务器发送确认报文 ,DHCP 客户收到确认报文后就可以使用这个 IP 地址了。
⑥DHCP 客户现在要根据服务器提供的租用期 T 设置两个计时器 T1 和 T2,它们的超时时间分别是 0.5T 和 0.875T。
⑦租用期过半(T1 时间到),DHCP 客户发送请求报文,要求更新租用期。
⑧若 DHCP 服务器同意,则发回确认报文 。DHCP 客户得到了新的租用期,需要重新设置计时器。
⑨若 DHCP 服务器不同意,则发回否认报文。这时 DHCP 客户必须立即停止使用原来的 IP 地址,而必须重新申请 IP 地址(回到步骤 2)。
但是,若 DHCP 服务器不响应步骤 7 的请求报文,则在租用期过了 87.5% 时 (T2 时间到),DHCP 客户必须重新发送请求报文(重复步骤 7),然后继续后面的步骤。
最后,DHCP 客户可随时终止服务器所提供的租用期,这时只需向 DHCP 服务器发送释放报文即可。
第9章 无线网络和移动网络
1、无线局域网的组成
(1)有固定基础设施的无线局域网
-
一个基本服务集 BSS 包括一个基站和若干个移动站,即一个AP与连接它的计算机。所有的站在本 BSS 以内都可以直接通信,但在和本 BSS 以外的站通信时 ,都要通过本 BSS 的基站。
-
基本服务集内的基站叫做接入点 AP ,其作用和网桥相似。当网络管理员安装 AP 时,必须为该 AP 分配一个不超过 32 字节的服务集标识符 SSID (即无线WLAN的名字)和一个信道(即规定使用什么频率)。
-
一个基本服务集可以是孤立的,也可通过接入点 AP连接到一个主干分配系统(相当于交换机) DS,然后再接入到另一个基本服务集,构成扩展的服务集ESS。扩展服务集内设备的地址可以是同一网段。
-
ESS 还可通过门户(portal)为无线用户提供到非 802.11 无线局域网的接入。例如通过添加路由器把无线用户接入到有线连接的因特网,门户的作用就相当于一个网桥。
-
移动站 A 从某一个基本服务集漫游到另一个基本服务集(到 A’ 的位置),仍可保持与另一个移动站 B 进行通信。
(2)与接入点AP建立关联
- 一个移动站(用户的通信设备)若要加入到一个基本服务集 BSS,就必须先选择一个接入点 AP(相当于基站),并与此接入点建立关联。
- 建立关联就表示这个移动站加入了选定的 AP 所属的子网,并和这个 AP 之间创建了一个虚拟线路。
- 只有关联的 AP 才向这个移动站发送数据帧,而这个移动站也只有通过关联的 AP 才能向其他站点发送数据帧。
(3)移动站与 AP 建立关联的方法
-
被动扫描:即移动站等待接收接入站周期性发出的信标帧。
信标帧中包含有若干系统参数(如服务集标识符 SSID 以及支持的速率等)。
-
主动扫描:即移动站主动发出探测请求帧,然后等待从 AP 发回的探测响应帧。
(4)热点
- 现在许多地方,如办公室、机场、快餐店、旅馆、购物中心等都能够向公众提供有偿或无偿接入 Wi-Fi 的服务。这样的地点就叫做热点。
- 由许多热点和 AP 连接起来的区域叫做热区。
(5)手机打电话的过程
当拥有移动设备手机的用户A出现在城市A时,他的手机会自动连接最近的,信号最强的基站A并进行注册。用户通过手机与基站连接,基站通过查找数据库找到通信方所注册的基站,通过光纤与之连接,再通过该基站实现与通信方的通信。而非手机间直接通信,因为没有这么大的信号强度。
同样的,手机也是通过联通或移动的基站来访问Internet。手机通过3G或4G信号连接联通或移动的基站,基站通过光纤连接路由器,通过在路由器上设置网关便能连接Internet。这样只要有信号,手机能打电话,就能联系到基站,就能通过基站连接光纤接入Internet。这就是为什么我们感觉无论在哪里打开手机都能上网,其实就是通过基站连接Internet的。
2、移动自组网络
(1)简介
自组网络是没有固定基础设施(即没有 AP)的无线局域网。这种网络由一些处于平等状态的移动站之间相互通信组成的临时网络。
(2)移动自组网络的应用前景
- 在军事领域中,携带了移动站的战士可利用临时建立的移动自组网络进行通信;
- 这种组网方式也能够应用到作战的地面车辆群和坦克群,以及海上的舰艇群、空中的机群;
- 当出现自然灾害时,在抢险救灾时利用移动自组网络进行及时的通信往往很有效的;
3、802.11局域网的MAC层协议
(1)CSMA/CA协议
无线局域网不能简单地搬用 CSMA/CD 协议:
-
碰撞检测(CD)要求:一个站点在发送本站数据的同时,还必须不间断地检测信道,但接收到的信号强度往往会远远小于发送信号的强度,在无线局域网的设备中要实现这种功能就花费过大。
即使能够实现碰撞检测的功能,并且在发送数据时检测到信道是空闲的时候,在接收端仍然有可能发生碰撞。
-
无线局域网的隐蔽站问题:由于无线信号覆盖范围和穿透能力有限,A 和 C 检测不到彼此的无线信号,都以为 B 是空闲的,因而都向 B 发送数据,结果发生碰撞。
①改进:增加碰撞避免CA,尽量减少碰撞发生的概率。
②使用 CSMA/CA 的同时,使用停止等待协议:链路层确认,解决碰撞后重传。
CSMA/CA协议的要点:
①站点若想发送数据必须先监听信道。若信道在时间间隔DIFS内均为空闲,则发送整个数据帧。否则,进行②
②站点选择一随机数,设置退避计时器。计时器的运行规则是:若信道忙,则冻结退避计时器,继续等待,直至信道变为空闲(这叫做推迟接入);若信道空闲,并在时间间隔DIFS内均为空闲,则开始争用信道,进行倒计时。当退避计时器的时间减到零时(显然这只能发生在信道空闲时),站点就发送数据帧,把一整帧发送完。
③站点若收到接收方发来的确认帧,且还有后续帧要发送,就转到②。若在设定时间内未收到确认,则准备重传,并转到②,但会在更大的范围内选择一随机数。
(2)时间间隔DIFS的重要性
两种常用的帧间间隔:
- 分布协调功能帧间间隔 DIFS
- 短 (Short) 帧间间隔 SIFS
DIFS 很重要:A 监听信道,若信道在时间间隔 DIFS 一直都是空闲的,A 就可以在 t0 时间发送数据帧 DATA。B 收到数据帧后进行 CRC 检验。若检验无差错,再从接收状态转为发送状态。经过时间间隔 SIFS 后,向 A 发送确认帧 ACK。 从 A 发送数据帧 DATA 开始,到收到确认 ACK 为止的这段时间 (DATA + SIFS + ACK) 内,必须不允许任何其他站发送数据,这样才不会发生碰撞。
避免发生碰撞的两种机制
(3)MAC的两个子层:DCF和PCF
通过协调功能来确定在基本服务集 BSS 中的移动站何时可以发送或接收数据。
① 802.11 的 MAC 层:分布协调功能 DCF
DCF 子层:不采用任何中心控制。每个节点使用 CSMA/CA 机制的分布式接入算法,让各个站通过争用信道来获取发送权。因此 DCF 向上提供争用服务,所有实现都必须有 DCF 功能。
② 802.11 的 MAC 层:**点协调功能 PCF **
PCF 子层:可选。使用集中控制的接入算法,用类似于探询的方法把发送数据权轮流交给各个站,从而避免碰撞。自组网络没有 PCF 子层。 对时间敏感的业务,如分组话音,应使用提供无争用服务的 PCF。
(4)争用信道的过程
① 在站点 A 和 B 通信的过程中,站点 C 和 D 也要发送数据。但 C 和 D 检测到信道忙,因此必须推迟接入,以免发生碰撞。
② 在等待信道进入空闲状态后,都经过规定的时间间隔 DIFS 再同时发送数据必然产生碰撞。因此CSMA/CA 规定:所有推迟接入的站都必须在争用期执行统一的退避算法开始公平地争用信道。
③ 争用期也叫做争用窗口 CW 。争用窗口由许多时隙组成。建议CW最小值可取15,最大值可取1023。
CSMA/CA规定,如果未收到确认帧,则必须重传。但每重传一次,争用窗口的数值就近似加倍。
假定:选择初始争用窗口CW = 24 - 1 = 15,第i次退避就在24+i - 1个时隙中随机地选择一个,即:
- 第1次重传时,随机退避的时隙数应在0 ~ 31之间生成。
- 第2次重传时,随机退避的时隙数应在0 ~ 63之间生成。
- 第3次重传时,随机退避的时隙数应在0 ~ 127之间生成。
- 第4次重传时,随机退避的时隙数应在0 ~ 255之间生成。
- 第5次重传时,随机退避的时隙数应在0 ~ 511之间生成。
- 第6次以及6次以上重传时,随机退避的时隙数应在0 ~ 1023之间生成,争用窗口CW不再增大了。
④时隙长度的确定
在下一个时隙开始时,每个站点都能检测出在前一个时隙开始时信道是否忙(这样就可采取适当对策)。 时隙长短在不同 802.11 标准中可以有不同数值。 例如:802.11g 一个时隙时间为 9us; SIFS = 10 us;DIFS应比SIFS的长度多两个时隙,为28us。
⑤退避算法
站点在进入争用期时,应在 0 ~ CW 个时隙中随机生成一个退避时隙数,并设置退避计时器。当几个站同时争用信道时,计时器最先降为零的站首先接入媒体,发送数据帧。这时信道转为忙,而其他正在退避的站则冻结其计时器,保留计时器的数值不变,推迟到下次争用信道时接着倒计时。 这样的规定对所有的站是公平的。
⑥ 推迟接入和退避的区别
-
推迟接入: 发生在信道处于忙的状态,为的是等待争用期的到来,以便执行退避算法来争用信道。 这时退避计时器处于冻结状态。
-
退避: 是争用期各站点执行的算法,退避计时器进行倒计时。 这时信道是空闲的,并且总是出现在时间间隔 DIFS 的后面。
⑦退避算法的使用场景
-
要发送数据时检测到信道忙;
-
已发出的数据帧未收到确认,重传数据帧;
-
接着发送后续的数据帧(为了防止一个站长期垄断发送权)
(5)对信道进行预约
如果A和B生成了同样大小的随机退避时隙数,结果会发生碰撞。还有隐蔽站的问题。为了进一步减少碰撞,采取信道预约。
在A站向AP发送数据帧之前,先发送一个很短的控制帧,叫作请求发送RTS,目的是告诉所有能收到RTS的站:“我将要占用信道一段时间:[SIFS + CTS + SIFS + DATA + SIFS + ACK]”。这段时间写在RTS帧的首部中。
接入点AP若能正确收到RTS帧,经过最短时间间隔SIFS后,就向A站发送一个叫做允许发送CTS的控制帧,目的不仅是告诉A站可以发送数据了,而且也告诉所有能收到CTS的站:“A站要和我通信,要占用信道一段时间:[SIFS + DATA + SIFS + ACK]”。这段时间写在CTS控制帧的首部中。
使用 RTS 帧和 CTS 帧会使整个网络的通信效率有所下降,多浪费信道的时间 [RTS + SIFS + CTS + SIFS]。 但与数据帧相比,开销不算大。这两种控制帧都很短,其长度分别为 20 字节和 14 字节。而数据帧最长可达 2346 字节。 若不使用这种控制帧,一旦发生碰撞而导致数据帧重发,浪费的时间就更多。
①信道预约不能完全避免碰撞
即使使用了 RTS 和 CTS 对信道进行预约,但碰撞也有可能发生。 例如:有的站可能在时间 t1 或 t2 就发送了数据(这些站可能是没有收到 RTS 帧或 CTS 帧或 NAV),结果必定与 RTS 帧或 CTS 帧发生碰撞。 A 站若收不到 CTS 帧,就不能发送数据帧,而必须重传 RTS 帧。 A 站只有正确收到 CTS 帧后才能发送数据帧。
②信道预约不是强制的
信道预约不是强制性规定。各站可以自己决定使用或不使用信道预约。 只有当数据帧的长度超过某一数值时,使用 RTS 帧和 CTS 帧才比较合适。 因为无线信道的误码率比有线信道的高得多,所以,无线局域网的 MAC 帧长一般应当短些,以便在出错重传时减小开销。
如果用的是PCF,DIFS需要改为PIFS
4、802.11 局域网的 MAC 帧
802.11 帧三种类型:控制帧、数据帧、管理帧。
802.11数据帧的地址
数据帧有四个地址字段:
- 地址 1 是接收地址(即直接接收数据帧的节点地址)
- 地址 2 是发送地址(即实际发送数据帧的节点地址)
- 地址 3 和地址 4 取决于数据帧中的“来自AP”和“去往AP”这两个字段的数值。
注意:上述地址都是 MAC 地址,即硬件地址,而 AP 的 MAC 地址是 BSSID。
去往AP | 来自AP | 地址1 | 地址2 | 地址3 | 地址4 |
---|---|---|---|---|---|
0 | 1 | 接收地址 = 目的地址 | 发送地址 = AP地址 | 源地址 | —— |
1 | 0 | 接收地址 = AP地址 | 发送地址 = 源地址 | 目的地址 | —— |
现假定在一个基本服务集中的站点A向站点B发送数据帧。在A发往AP的数据帧的帧控制字段中,“去往AP = 1”而“来自AP = 0”。
A->AP的数据帧首部:
地址1:接收地址(不是目的地址)是AP的BSSID
地址2:发送地址,即源地址,也就是A的地址MACA
地址3:目的地址(不是接收地址)是B的地址MACB
AP收到数据帧后,转发给B,但在数据帧的帧控制字段中,“去往AP = 0”而“来自AP = 1”。
AP->B的数据帧首部:
地址1:接收地址就是目的地址MACB
地址2:发送地址(不是源地址)是AP的地址BSSID
地址3:源地址(不是发送地址)是A的地址MACA
下面讨论另一种稍复杂些的情况,即站点 A 向站点 B 发送数据帧(如图所示)。现在 A 和 B 分别处在不同的两个子网 N1和 N2中,因此在网络层看,是地址为 IPA 的站点A,把 IP 数据报从子网 N1 经过路由器 R 转发到子网 N2。在网络层看不见链路层的接入点AP1和 AP2。IP 数据报必须装入链路层的帧才能在链路层发送。但链路层不认识 IP 地址只认识 MAC 地址,即硬件地址。站点 A 使用协议 ARP 获得了默认路由器 R 的接口1 的地址MACR-1。这样,站点 A 先把 802.11 数据帧发到接入点AP1,然后AP1把 802.11 帧转换为802.3帧,发送到路由器R的接口1。站点A发送的802.11帧的帧控制字段中, "去往AP=1”而“来自 AP=0”。
A->AP1的数据帧首部:
地址1:接收地址(不是目的地址)是AP1的BSSID1
地址2:发送地址,即源地址,也就是A的地址MACA
地址3:目的地址(不是接收地址)是本子网中路由器R接口1的地址MACR-1
当接入点AP1,收到802.11数据帧后,就转换成802.3帧(802.3帧只有两个地址),其目的地址是MACR-1,而源地址是MACA (而不是接入点AP1的地址BSSID1)。
路由器 R 收到 802.3 顿后,剥去首部和尾部,上交给网络层。网络层根据 IP 数据报首部中的目的地址 IPB 查找转发表,知道应从接口 2 转发给地址为 IPB 的设备。再使用协议ARP,获得此设备的硬件地址是 MACB,这个地址就是 802.3 帧的目的地址,路由器 R 接口2 的地址MACR-2是这个802.3 帧的源地址。
接入点 AP2 收到 802.3 帧,将其转换为 802.11 帧,其帧控制字段中,“去往 AP=0”而“来自 AP=1”
AP2->B的数据帧首部:
地址1:接收地址(即目的地址)是B的地址MACB
地址2:发送地址是AP2的地址BSSID2
地址3:源地址(不是发送地址)是路由器R的接口2的地址MACR-2
帧的长度超过某一数值时,使用 RTS 帧和 CTS 帧才比较合适。 因为无线信道的误码率比有线信道的高得多,所以,无线局域网的 MAC 帧长一般应当短些,以便在出错重传时减小开销。
如果用的是PCF,DIFS需要改为PIFS
4、802.11 局域网的 MAC 帧
802.11 帧三种类型:控制帧、数据帧、管理帧。
802.11数据帧的地址
数据帧有四个地址字段:
- 地址 1 是接收地址(即直接接收数据帧的节点地址)
- 地址 2 是发送地址(即实际发送数据帧的节点地址)
- 地址 3 和地址 4 取决于数据帧中的“来自AP”和“去往AP”这两个字段的数值。
注意:上述地址都是 MAC 地址,即硬件地址,而 AP 的 MAC 地址是 BSSID。
去往AP | 来自AP | 地址1 | 地址2 | 地址3 | 地址4 |
---|---|---|---|---|---|
0 | 1 | 接收地址 = 目的地址 | 发送地址 = AP地址 | 源地址 | —— |
1 | 0 | 接收地址 = AP地址 | 发送地址 = 源地址 | 目的地址 | —— |
现假定在一个基本服务集中的站点A向站点B发送数据帧。在A发往AP的数据帧的帧控制字段中,“去往AP = 1”而“来自AP = 0”。
A->AP的数据帧首部:
地址1:接收地址(不是目的地址)是AP的BSSID
地址2:发送地址,即源地址,也就是A的地址MACA
地址3:目的地址(不是接收地址)是B的地址MACB
AP收到数据帧后,转发给B,但在数据帧的帧控制字段中,“去往AP = 0”而“来自AP = 1”。
AP->B的数据帧首部:
地址1:接收地址就是目的地址MACB
地址2:发送地址(不是源地址)是AP的地址BSSID
地址3:源地址(不是发送地址)是A的地址MACA
[外链图片转存中…(img-NFRQQhEm-1705493996013)]
下面讨论另一种稍复杂些的情况,即站点 A 向站点 B 发送数据帧(如图所示)。现在 A 和 B 分别处在不同的两个子网 N1和 N2中,因此在网络层看,是地址为 IPA 的站点A,把 IP 数据报从子网 N1 经过路由器 R 转发到子网 N2。在网络层看不见链路层的接入点AP1和 AP2。IP 数据报必须装入链路层的帧才能在链路层发送。但链路层不认识 IP 地址只认识 MAC 地址,即硬件地址。站点 A 使用协议 ARP 获得了默认路由器 R 的接口1 的地址MACR-1。这样,站点 A 先把 802.11 数据帧发到接入点AP1,然后AP1把 802.11 帧转换为802.3帧,发送到路由器R的接口1。站点A发送的802.11帧的帧控制字段中, "去往AP=1”而“来自 AP=0”。
A->AP1的数据帧首部:
地址1:接收地址(不是目的地址)是AP1的BSSID1
地址2:发送地址,即源地址,也就是A的地址MACA
地址3:目的地址(不是接收地址)是本子网中路由器R接口1的地址MACR-1
当接入点AP1,收到802.11数据帧后,就转换成802.3帧(802.3帧只有两个地址),其目的地址是MACR-1,而源地址是MACA (而不是接入点AP1的地址BSSID1)。
路由器 R 收到 802.3 顿后,剥去首部和尾部,上交给网络层。网络层根据 IP 数据报首部中的目的地址 IPB 查找转发表,知道应从接口 2 转发给地址为 IPB 的设备。再使用协议ARP,获得此设备的硬件地址是 MACB,这个地址就是 802.3 帧的目的地址,路由器 R 接口2 的地址MACR-2是这个802.3 帧的源地址。
接入点 AP2 收到 802.3 帧,将其转换为 802.11 帧,其帧控制字段中,“去往 AP=0”而“来自 AP=1”
AP2->B的数据帧首部:
地址1:接收地址(即目的地址)是B的地址MACB
地址2:发送地址是AP2的地址BSSID2
地址3:源地址(不是发送地址)是路由器R的接口2的地址MACR-2