计算机网络
概述
基本概念
带宽
有两种含义
第一种含义:
“带宽” 指信号具有的频带宽度。基本单位是赫。
比如wifi频率有2.4G和5G
第二种含义:
“带宽”是数字信道所能传送的最高数据率的同义语,单位是比特/秒(bit/s)。
比如上行带宽100M,下行带宽1M
吞吐量
表示在单位时间内通过某个网络(或信道、接口)的数据量。
吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
吞吐量受网络的带宽或网络的额定速率的限制。
简单的说就是一段时间内通过的某个端口数据量,和电流大小的、水流大小的概念类似
时延
指数据从网络(或链路)的一端传送到另一端所需的时间。
发送时延
主机或路由器发送数据帧所需要的时间。
受到网卡的限制
传输时延
电磁波在信道中需要传播一定的距离而花费的时间。
受到传输介质的限制,光纤比铜线快
排队时延
结点缓存队列中分组排队所经历的时延。
中间节点和最后的节点可能前面还有数据待处理需要排队等待
处理时延
交换结点为存储转发而进行一些处理所费的时间。
收到信息之后要进行处理
利用率
信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
网络利用率则是全网络的信道利用率的加权平均值。
并不是利用率越高越高,太高了会堵塞,太低了会造成资源的浪费
交换方式
分层体系
物理层
基本概念
物理层的主要任务描述为确定与传输媒体接口的四个特性。
机械特性:
指明接口所用接线器的形状和尺寸、引线数目和排列等。
电气特性 :
指明在接口电缆的各条线上出现的电压的范围。
功能特性 :
指明某条线上出现的某一电平的电压表示何种意义。
过程特性:
指明对于不同功能的各种可能事件的出现顺序
数据通信系统模型
发送器:将数据转换成可以在传输介质上传输的信号
基本术语
数据:运送消息的实体。
信号:数据的电气的或电磁的表现。
模拟信号:代表消息的参数的取值是连续的。
数字信号:代表消息的参数的取值是离散的。
信道: 向某一个方向传递信息的通道。
通信方式
单向通信(单工通信):只能有一个方向的通信
而没有反方向的交互。
双向交替通信(半双工通信):通信的双方都可
以发送信息,但不能双方同时发送、同时接收。
双向同时通信(全双工通信):通信的双方可以
同时发送和接收信息。
信源数据与传输信号转换关系
调制:使用载波进行调制, 把数字信号的频率范
围搬移到较高的频段,并转换成模拟信号,以便在模
拟信道中传输。
解调:把接收到的模拟信号还原成数字信号。
常见的调制方式
1.基带调制
又称为编码,转换后依然是基带信号
2.带通调制
利用载波低频转高频,更好的在模拟信道上传输,调制完的信号叫做带通信号
信道的极限容量
1、奈奎斯特定理
在任何信道中,码元传输的速率是有上限的,超过此上限,就会出现严重的码间串扰问题。
如果信道的频带越宽,则可以用更高的速率传送码元
而不出现码间串扰。
2、香农公式
带宽受限且有高斯白噪声干扰的信道的极限信息传输速率
W 是信道的带宽(以 Hz 为单位);
S 为信道内所传信号的平均功率; N 为信道内部的噪声功率。
信噪比S/N通常用分贝(dB)来表示:
通过编码,可以增加每一个码元携带的信息量
信道复用
频分复用
将信道的可用频带分割成若干条较窄的子频带,每一条子频带传输一路信号。
用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
光的频分复用:波分复用
时分复用
同步时分复用
将时间划分为一段段等长的时隙,每一个用户占用固定序号的时隙传输数据。
每一个用户所占用的时隙是周期性地出现。
时分复用的所有用户在不同的时间占用同样的频带宽度
统计时分复用(异步时分复用)
先进行统计,然后依次将需要发送的数据进行时分复用,但是因为每一个时间是不确定的,所以需要在数据帧上加上地址信息
码分复用
每个用户被分配一个码片序列,这些码片序列是互相正交的,
当需要发送1的时候,则发送序列
当需要发送0的时候,则发送序列反码
所以用户的序列和其他用户的序列內积是0
而序列和序列的规格化內积是1,序列与序列的反码的规格化內积为-1
数据链路层
基本概念
设置数据链路层的原因
- 传输介质种类多,通信规程不相同, 性能有差异;
- 物理层中,数据是以比特为单位进行传输, 效率低;
- 在原始的物理线路上, 信号传输可能会有差错, 且物理层不知道是否出错;
- 从网络参考模型的角度看,物理层之上的各层都有改善数据传输质量的责任, 而数据链路层是最重要的一层。
设置数据链路层的目的
在原始的、有差错的物理传输线路的基础上,采取差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,向网络层提供高质量的服务。
信道主要有以下两种类型
- 点对点信道: 这种信道使用一对一的点对点通信方式。
- 广播信道: 这种信道使用一对多的广播通信方式。广播信道上连接的主机很多,须使用专用的共享信道协议来协调这些主机的数据发送。
链路(link)
是从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点。
- 数据通信时,两个计算机之间的通信路径往往需要经过多个这
种链路,也称为物理链路; - 一条链路只是一条通路(路径)的组成部分;
- 物理线路:点对点( 结点到相邻结点)
- 物理线路:有线的、无线的、局域网
数据链路(data link)
把实现通信协议的硬件和软件加到链路上,就构成了数据链路,也称为逻辑链路。
- 适配器(即网卡)来实现这些协议的硬件和软件;
- 适配器:一般包括了数据链路层和物理层的功能;
- 逻辑链路是建立在物理链路之上;
- 如果物理线路都不通,不可能建立用于数据传输的逻辑链路。
基本功能
封装成帧
- 数据链路层传输单位是“帧”。
- 把数据报组装成“帧”,正确发送、接收、解封。
透明传输
- 无论哪种比特组合, 都可以在数据链路上进行有效传输;
- 要区分数据信息、控制信息。
差错控制
- 数据通信中难免出现传送错误,要降低出错率,提高可靠性。
- 要尽可能地检测错误,并纠正错误。
流量控制
- 控制数据通信的流量,确保数据通信的有序进行;
- 避免因为接收方来不及接收, 而造成数据丢失。
链路管理
- 通信时,双方先要建立一条数据链路; 传输数据时要维持数据链路; 通
信完毕时要释放数据链路。
MAC寻址
- MAC子层主要功能。
- 指的是网卡的MAC地址, 即“物理地址”、“硬件地址” 。
三个基本问题
封装成帧
- 封装成帧就是在一段数据的前后分别添加首部和尾部构成
一个帧。 - 首部和尾部的一个重要作用就是进行帧定界。
每个帧有最大长度限制
透明传输
- 无论什么样的比特组合的数据都能够通过数据链路层进行传送。也可以说数据链路层对这些数据来说是透明的。
- 字节填充或字符填充 :发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”。接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
通过添加字符防止误判
类似于c语言里面的输出字符'\'的时候,需要用\\表示
差错检测
- 在传输过程中可能会产生比特差错: 1变成0或者0变成1。
- 在一段时间内,传输错误的比特占所传输比特总数的比率
称为误码率BER 。 - 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
- 差错检测编码:纠错码和检错码
在发送端:
数据分成组,每一组k个bit,然后在后面加上n位冗余码
例如:M=101001(k=6),最后发送的时候数据长度为k+n
获得这n(事先已经确定了)位冗余码的方法:
1.先添加n个0,就变成了=101001000
2.计算(其中除数P也是事先确定了的,此处设为1101)
3.把余数R放到M的后面也就是,即101001001
接收端:
将这段数据除以P,看最后的余数
- 若所得余数R=0,则判定这个帧没有差错,就接受。
- 若余数R≠0,则判定这个帧有差错,就丢弃。
ppp协议
- 点对点协议 PPP (Point-to-Point Protocol)是现在全世界使用得最多的广域网数据链路层协议。
- 用户使用拨号电话线接入因特网时,一般都是使用PPP 协议。 PPP协议就是计算机和ISP进行通信时所使用的数据链路层协议。
PPP协议的功能
- 封装成帧
- 透明传输
- 差错检测
- 支持多种网络层协议
- 支持多种类型链路
- 检测连接状态
- 数据压缩协商
- 网络层地址协商
- 支持身份验证
帧格式
- 标志字段:标志帧的开始
- 地址字段:因为是点对点所以不用设置地址,直接设置成FF
- 控制字段:目前也没有给出意义
- 协议:
- 当协议字段为 0x0021 时, PPP 帧的信息字段就是IP 数据报。
- 若为 0xC021, 则信息字段是 PPP 链路控制数据。
- 若为 0x8021,则表示这是网络控制数据。
- IP数据报:不超过1500字节,如果过长会进行分片,在网络层就已经解决了长度的问题
- FCS:检验字段
- 结束字段:标注帧的结束
透明传输
因为标志字段的0x7E用二进制标志为01111110,即中间是6个0,为了避免产生错误,所以采用零比特填充的方式,即发送方每遇到5个1则填充一个0,接收方每遇到5个1删除后面的一个0
PPP协议的工作状态
当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,建立一条物理连接。
PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧),以便建立数据链路连接。这些分组及其响应选择一些 PPP 参数。
进行网络层配置, NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
-
通信完毕时, NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着, LCP 释放数据链路层连接。最后释放的是物理层的连接。
PPP包括 链路层控制协议与网络层控制协议
LCP为链路控制协议用于链路层的建立,删除,监控等。可以建立点对点的链路层,监控链路状态,避免环路等功能并且提供PAP与CHAP的认证方式
NCP为网络控制协议,常用IPCP,IPXCP。用于协商网络层的协议
局域网
局域网的拓扑
信道共享技术
静态划分信道
- 频分复用
- 时分复用
- 波分复用
- 码分复用
动态媒体接入控制(多点接入):
信道并非在用户通信时固定分配给用户。
-
随机接入
所有的用户可随机发送信息。如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享信道上就要产生碰撞,使得这些用户的发送都失败。
-
受控接入
用户不能随机发送信息而必须服从一定的控制。
-
轮训系统
工作原理:主站依次询问次站有无数据发送。
-
令牌环
A向D发送数据
- A截获空令牌,封装成数据帧发送
- B转发
- C转发
- D把此数据帧复制收下,原帧仍然转发
- A收下此数据帧,还原出空令牌
-
以太网
DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约,定义了以无源的电缆为总线的基带总线局域网。
IEEE 的 802.3 标准。
两个标准比较类似,一般情况下同等看待
MAC
IEEE 802标准为局域网规定了48位的全球地址,指局域网上的每一台计算机中固化在适配器的ROM中的地址。
IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)。地址字段中的后三个字节(即低位 24位)由厂家自行指派。
-
当收到mac帧时
- 如果是发往本站的帧则收下,然后再进行其他的处理。
- 否则就将此帧丢弃,不再进行其他的处理。
-
“发往本站的帧”包括以下三种帧:
- 单播帧:一方发送,一方接收
- 广播帧:一方发送,全体接收
- 多播帧:一方发送,多个成员接收
-
MAC帧的格式
类型字段用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议 ,在802.3中也可以表示长度
数据部分是上一层传下来的ip数据报
46个字节的最短长度是因为以太网CSMA/CD规定的最短帧长为64字节,去掉首部(6+6+2=14)和尾部(4),剩下46,如果数据长度不够46个字节会填充若干个字节凑够
ppp协议中有帧的首部和尾部中都会有标志字段,标志帧的开始和结束,在mac协议中是采用了在前面添加前同步码的方式来标志帧的开始,但是接收方是不会接收他们的
在帧的前面插入的 8 字节中的第一个字段共 7 个字节, 是前同步码,用来迅速实现 MAC 帧的比特同步。 第二个字段是帧开始定界符,表示后面的信息就是MAC 帧。
-
无效的MAC帧
- 数据字段的长度与长度字段的值不一致;
- 帧的长度不是整数个字节;
- 用收到的帧检验序列 FCS 查出有差错;
- 数据字段的长度不在 46 ~ 1500 字节之间。
对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。由传输层负责
扩展以太网
在物理层扩展以太网
-
使用集线器扩展
使用多个集线器可连成更大的、 多级星形结构的以太网。原来的碰撞域是独立的,用集线器连接之后碰撞域就扩大了
-
优点
- 使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。
- 扩大了以太网覆盖的地理范围。
-
缺点
- 碰撞域增大了,但总的吞吐量并未提高。
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
在数据链路层扩展以太网
-
以太网交换机
-
定义
- 又称为交换式集线器。
- 每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
- 以太网交换能同时连通多对接口,使多对主机独占传输媒体,无碰撞地传输数据。
-
优点
- 即插即用
- 使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
- 从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要做任何改动。
- 一般都具有多种速率的接口,方便了各种不同情况的用户。
-
转发方式
-
存储转发方式
把整个数据帧先缓存后再进行处理。缺点是速度慢
-
直通转发方式
接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,因而提高了帧的转发速度。缺点是不能差错检验
-
-
自学习功能
以太网交换机运行自学习算法处理收到的帧和建立交换表
自学习和转发帧的步骤
交换机收到一帧后先进行自学习。 查找交换表中与收到帧的源地址有无相匹配的项目。如没有,就在交换表中增加一个项目(源地址、进入的接口和有效时间)。如有,则把原有的项目进行更新。
-
转发帧。 查找交换表中与收到帧的目的地址有无相匹配的项目。
如没有, 则向所有其他接口(进入的接口除外)转发。
-
如有,则按交换表中给出的接口进行转发。
若交换表中给出的接口就是该帧进入交换机的接口,则应丢弃这个帧(因为这时不需要经过交换机进行转发)。
-
生成树协议
由来:为了在部分链路产生故障的时候依然可以正常使用,需要增加冗余
增加冗余链路时, 自学习的过程就可能导致以太网帧在网络的某个环路中无限制地兜圈子。
为了解决这个问题IEEE 802.1D 标准制定了一个生成树协议 STP (SpanningTree Protocol)。
其要点是: 不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。
-
CSMA/CD
载波监听多点接入/碰撞监测
要点
- 多点接入:表示许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
- 碰撞检测:计算机边发送数据边检测信道上的是否有碰撞产生。通过检查总线上信号电压值的大小来实现。
传播时延对载波监听的影响
当发送数据的站一旦发现发生了碰撞
- 立即停止发送数据
- 再继续发送若干比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞。
特点
- 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
争用期(碰撞窗口)
最先发送数据帧的站,在发送数据帧后至多经过时间(2τ)就可知道发送的数据帧是否遭受了碰撞。 以太网的端到端往返时延 2τ 称为争用期,或碰撞窗口。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
截断二进制指数退避算法
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。
- 确定基本退避时间,一般是取为争用期 2τ。
- 定义重传次数 k , k ≤ 10,即k = Min[重传次数, 10]
- 从整数集合[0,1,…, (2k -1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。
- 当重传达 16 次仍不能成功时即丢弃该帧,并向高层
报告
作用:
- 减小重传时再次发生碰撞的概率。
- 若连续多次发生冲突,则表明可能有较多的站参与争用信道。使用退避算法可使重传需要推迟的平均时间随重传次数而增大(也称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。
以太网(10M)的指标
争用期的长度: 51.2 µs
最短有效帧长: 64 字节
如果发生碰撞,就一定是在发送的前 64 字节之内。由于一检测
到碰撞就立即中止发送,这时已经发送出去的数据一定小于 64 字节。
所以以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的
帧都是由于碰撞而异常中止的无效帧。
帧间最小间隔: 9.6 µs
一个站在检测到总线开始空闲后,还要等待 9.6 µs 才能再次发送数据
为了处理刚接收到的帧
要求最短帧的原因
因为,结点检测是否发生碰撞是根据信号电压来判断,但是并不知道是哪个帧发生了碰撞,为了让数据包发生碰撞的时候能够之后重传,必须让发送方知道自己发送的帧发生了碰撞
所以应该让这个帧足够长,以至于在这个帧到达终点之前,不能完成发送,即发送数据的帧检测到碰撞的时候,正在发送数据,这个时候,它就知道它在发送的这一帧是失效的,之后就可以重发
引用谢希仁的网络原理上的一段话
网络层
网络层提供的两种服务
IP协议
分类的IP地址
每一类地址都由两个固定长度的字段组成, 其中一个字段是网络号 net-id, 它标志主机(或路由器) 所连接到的网络, 而另一个字段则是主机号 host-id, 它标志该主机(或路由器) 。
用转发器或网桥连接起来的若干个局域网仍为一个网络, 因此这些局域网都具有同样的网络号 net-id。
点分十进制记法
常用的三种类别的IP地址
A:网络数减2原因: 网络号全0表示本网络 127(01111111)表示本地软件环回测试地址
B、C:网络数减1原因:128.0.0.0和192.0.0.0都是不指派的
主机数减2原因:全0和全1都不指派
一般不使用的特殊的 IP 地址
分层转发的流程
路由表
路由表需要配置,或者根据算法生成
下一跳指的是下一个路由器的地址
特定路由和默认路由
特定主机路由 :为特定的目的主机指明一个路由。
默认路由:没有特定设置则采用默认路由
路由器分组转发算法
通过目标主机的IP地址,确定目标网络N
-
判断网络N是否与路由器直接相连
-
相连
直接交付到目标主机
-
不相连
- 配置了特定主机路由,交付到下一跳
- 没有特定主机路由,有到达网络的路由,交付到下一跳
- 没有到达网络的路由,采用默认路由,交付到下一跳
- 没有默认路由,报告转发失败
-
地址解析协议ARP
作用: 从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。
每一个主机都设有一个 ARP 高速缓存 ,保存着所在的局域网上的各主机和路由器的 IP 地址到硬件地
址的映射表。ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间,凡超过生存时间的项目就从高速缓存中删除掉。
ARP的工作过程
当主机A欲向本局域网上的某个主机B发送 IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP 地址。
如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。 收到 ARP 响应分组后, 将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存
- ARP是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
- 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
- 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信, ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
如果是不同网络之间的情况,就需要通过路由器来解决
例如:H1访问H3
- 因为H3不在该网络上,先在本网络通过ARP,找到路由器R1,剩下的由R1完成
- R1在网2再次通过ARP找到H3
IP数据报格式
一个 IP 数据报由首部和数据两部分组成。
首部分为固定部分和可变部分,固定部分长度为20个字节,可变部分长度是可变的。
固定部分
版本ip协议版本:ipv4和ipv6
首部长度:占 4 位,可表示的最大数值是 15 (24-1)个单位(一个单位为 4 字节)。因此 IP 的首部长度的最大值是 60 字节(15*4)。
区分服务:占 8 位,只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段。
总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。
进行数据报的分片的原因
- IP数据报的总长度必须不超过数据链路层最大传送单元 MTU。
- 若所传送的数据报的长度超过数据链路层的MTU值, 就必须把过长的数据报进行分片处理。
标识:占 16 位,它是一个计数器,用来产生 IP 数据报的标识。
有同样标识的ip数据报属于同一个未分片的ip数据报
标志(flag):占 3 位,目前只有前两位有意义。
标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。 MF = 0 表示最后一个分片。
标志字段中间的一位是 DF (Don‘t Fragment) 。 DF = 1 表示不允许分片。 MF = 0 表示允许分片。
片偏移:占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
生存时间——占8 位,记为 TTL (Time To Live),表明数据报在网络中的寿命。表示为数据报在网络中可通过的路由器数的最大值。
用于防止数据报的目的地址是无效的,而在网络中无限转发,每转发一次生存时间减1
协议:占8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程。
可能是tcp也可能是udp,也有可能是ip路由协议
首部检验和:占16 位,只检验数据报的首部,不检验数据部分
数据部分由运输层来校验错误
可变部分
可选字段:长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目,用来支持排错、测量以及安全等措施。实际上很少被使用。
划分子网和构造超网
划分子网
在 IP 地址中又增加了一个“子网号字段”,使两级的IP 地址变成为三级的 IP 地址。
子网掩码
32位, 由一串1和0组成, 其中1对应原IP地址中的网络号加子网号, 0对应于主机号。
默认的子网掩码
(IP 地址) AND (子网掩码) =网络地址
无分类编址
无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
CIDR 消除了传统的 A 类、 B 类和 C 类地址以及划分子网的概念, 因而可以更加有效地分配 IPv4 的地址空间。
CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
表示法
斜线记法( CIDR记法)
例如: 128.14.35.7/20
地址掩码
例如: /20地址块的地址掩码表示为: 255.255.240.0
路由聚合
网络前缀都相同的连续的IP地址组成“CIDR地址块”。
一个 CIDR 地址块可以包含很多地址, 在路由表中就利用CIDR地址块来查找目的网络, 因此这种地址的聚合称为路由聚合。路由聚合也称为构成超网。
路由选择协议
内部网关协议
RIP
IP 是一种分布式的、基于距离向量的路由选择协议。
-
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
距离的定义:
- 从一路由器到直接连接的网络的距离定义为 1。
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
- RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”
- RIP 允许一条路径最多只能包含 15 个路由器。
- “距离”的最大值为16 时即相当于不可达。
工作要点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息, 即自己的路由表。
- 按固定的时间间隔交换路由信息, 例如, 每隔 30 秒。
- 路由器在刚刚开始工作时, 只知道到直接连接的网络的距离(此距离定义为1) 。
- 以后, 每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 经过若干次更新后, 所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
- RIP 协议的收敛过程较快, 即在自治系统中所有的结点都得到正确的路由选择信息的过程
更新路由的过程
距离向量算法
收到相邻路由器(其地址为 X)的一个 RIP 报文:
先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
-
对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若项目中的目的网络不在路由表中,则把该项目加到路由表中。
-
否则
- 若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
-
否则
- 若收到项目中的距离小于路由表中的距离,则进行更新。
- 否则,什么也不做。
- 若收到项目中的距离小于路由表中的距离,则进行更新。
- 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)
- 返回
例子:R6收到R4发来的路由表
最先开始的R4
距离加1,下一跳改成R4
与R6原有的对比
更新之后,最后结果
RIP协议的优缺点
优点:实现简单, 开销较小。
缺点:
-
RIP 限制了网络的规模。
因为距离最大为15,超过16就认为不可达
-
当网络出现故障时, 要经过比较长的时间才能将此信息传送到所有的路由器。
好消息传得快,坏消息传的慢
-
路由器之间交换的路由信息是路由器中的完整路由表, 因而随着网络规模的扩大, 开销也就增加。
记录了大量的路由信息
OSPF
OSPF是分布式的链路状态协议。
使用洪泛法向本自治系统中所有路由器发送信息。
-
发送的信息就是与本路由器相邻的所有路由器的链路状态。
“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量” (metric)。
只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
链路状态数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
-
每一个路由器使用链路状态数据库中的数据,构造出自己的路由表。
采用迪杰斯特拉最短路径算法来计算出
OSPF的区域
- 为了使 OSPF 能够用于规模很大的网络, OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
OSPF的分组类型
- 问候(Hello)分组。用来发现和维持邻站的可达性。
- 数据库描述(Database Description)分组。向邻站给出自己的链路状态数据库的摘要信息。
- 链路状态请求(Link State Request)分组。向对方请求发送某些链路状态项目的详细信息。
- 链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
- 链路状态确认(Link State Acknowledgment)分组,对链路更新分组的确认。
更新时洪泛的效果图
外部网关协议
BGP
为什么不同自治系统之间不能使用内部网关协议?
互联网的规模太大,使得自治系统之间路由选择非常困难。
不同的自治系统对代价的定义是不一样的
自治系统之间的路由选择必须考虑有关策略。
设计到国家安全等问题
工作原理
BGP力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
BGP采用路径向量路由选择协议。
-
每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人”。
一般选择边界路由器
BGP发言人与其他自治系统的BGP发言人交换路由信息。
BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。
-
当 BGP 发言人互相交换了网络可达性的信息后,各 BGP发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。
特点
- BGP 协议交换路由信息的结点数量级是自治系统数的量级。
- 要在许多自治系统之间寻找一条较好的路径,就要寻找正确的BGP发言人。
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 在 BGP 刚刚运行时, BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分
四种报文
- 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系。
- 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
- 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错。
运输层
基本概念
运输层面向应用提供通信服务,通过端口来区分不同的应用
只有在主机中才会使用到运输层,而在路由器中最高使用的是网络层
运输层的数据在包装在网络层的数据报里面,但是网络层不会对该数据进行访问
运输层协议和网络层协议的主要区别
运输层的端口
进程标识符标志运行在计算机中的进程。
在运输层使用协议端口号(或简称为端口)标志TCP/IP体系的应用进程,实现运行不同操作系统的计算机的应用进程的互相通信。
TCP/IP的运输层的端口用一个16位端口号进行标志。
两类端口
-
服务端使用的端口号
- 熟知端口号或系统端口号,熟知为0-1023
- 登记端口号,数值为1024-49151, 为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。
-
客户端口号或短暂端口号
数值为49152-65535,留给客户进程选择暂时使用。
UDP
用户数据报协议
特点
-
UDP 只在 IP 的数据报服务之上增加了很少一点的功能:
- 复用和分用的功能
- 差错检测的功能
UDP 是无连接的
UDP 使用尽最大努力交付,即不保证可靠交付。
UDP 没有拥塞控制,很适合多媒体通信的要求。
UDP 支持一对一、一对多、多对一和多对多的交互通信。
UDP 的首部开销小,只有 8 个字节。
-
UDP 是面向报文的。
UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界
首部格式
长度:UDP用户数据报的长度,最小值是8,代表可以没有数据
检验和:整个用户数据报的检验和,会加入伪首部进行检验
TCP
首部格式
分为固定首部和可变首部
固定首部
序号字段:占 4 字节,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
确认号字段:占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
例: B正确收到A发送过来的一个报文段,其序号字段值是501,而数据长度是200字节(序号501-700)。这表明B正确收到了A发送的到序号700为止的数据。因此, B期望收到A的下一个数据序号是701。
若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
数据偏移(即首部长度):占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位,4*8=32)。
保留字段:占 6 位,保留为今后使用,但目前应置为 0。
紧急 URG:当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
urgent紧急
确认 ACK:只有当 ACK = 1 时确认号字段才有效。当 ACK = 0时,确认号无效
acknowledge承认
推送 PSH (PuSH):接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
复位 RST (ReSeT) :当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
同步 SYN:同步 SYN = 1 表示这是一个连接请求或连接接受报文
synchronized同步的
终止 FIN (FINis):用来释放一个连接。 FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段:占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
例: A发送给B的报文段中,确认号是701,窗口字段是1000。
表明从701号算起,发送此报文段的A还有接收1000个字节数据的接收缓存空间。
即 告诉B可以发送1000个字节。
检验和:占 2 字节。 检验和字段计算方法同UDP。
紧急指针字段:占 16 位, 指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面) 。
可变首部
选项字段:长度可变。 TCP 最初只规定了一种选项, 即最大报文段长度 MSS。 MSS 是 TCP 报文段中的数据字段的最大长度。
填充字段 :这是为了使整个首部长度是 4 字节的整数倍。
凑数用的
可靠传输的工作原理
理想的传输条件
传输信道不产生差错。
-
不管发送方以多快的速度发送数据,接收方总是来得及处理收
到的数据。在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输。然而实际的网络都不具备以上两个理想条件。 必须使用一些可靠传输协议, 在不可靠的传输信道实现可靠传输。
停止等待协议
每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
-
在发送完一个分组后,必须暂时保留已发送的分组的副本。
为了在超时之后重传
分组和确认分组都必须进行编号。
超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。
ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组
信道的利用率
发送时间TD,往返时间RTT,接受时间TA
信道利用率 ,可以看出停止等待协议的信道利用率很低
连续ARQ协议
连续ARQ协议基于滑动窗口机制。
发送方维持发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。
发送窗口中是允许发送的序号。发送窗口的大小表示的是发送方可以连续发送的分组个数。
接收方使用接收窗口,表示位于接口窗口内的分组允许接收
接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。
Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。
例如:如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方要把后面的三个分组(3,4,5)都再重传一次。
拥塞控制
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞。
出现资源拥塞的条件:
Q:任意增加一些资源,例如,把结点缓存的存储空间扩大,或把链路更换为更高速度的链路,或把结点处理机的运算速度提高,是否就可以解决网络拥塞的问题?
A:不能。 因为网络拥塞是一个非常复杂的问题。简单地采用上述做法,在许多情况下,不但不能解决拥塞问题,而且还可能使网络的性能更坏。
拥塞控制需要付出代价。
一般在检测到拥塞发生时,要将拥塞发生的信息传送到产生分组的源站。通知拥塞发生的分组同样会使网络更加拥塞。
另一种方法是在路由器转发的分组中保留一个比特或字段,用该比特或字段的值表示没有拥塞或产生了拥塞。也可以由一些主机或路由器周期性地发出探测分组,以询问拥塞是否发生。
拥塞控制和流量控制的关系
拥塞控制是全局性的,为了保证资源够用,而流量控制是点对点
例1: 光纤网络的链路传输速率为1000Gb/s。一个巨型计算机
向一个PC机以1Gb/s的速率传送文件。需要流量控制,网络完全可以满足使用,但是计算机可能不能够这么快的处理数据,所以需要流量控制
例2: 网络链路传输速率为1Mb/s,连接1000台大型计算机。
其中500台计算机向另外的500台以100Kb/s的速率发送文件。需要拥塞控制,如果同时使用则会有50M的流量需求,网络链路无法满足,所以需要拥塞控制
拥塞控制算法
流程图
cwnd拥塞窗口 ssthresh 慢开始门限状态变量
当 cwnd < ssthresh 时,使用慢开始算法。
当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。
慢开始
在主机刚刚开始发送报文段时可先设置拥塞窗口 cwnd = 1
-
在每收到一个对新的报文段的确认后, 将拥塞窗口加 1
最后的效果是加倍
第一个轮次发送1个报文,接收到1个报文确认,cwnd+1=2
第二个轮次发送2个报文,接收到2个报文确认,cwnd+2=4
······
以此类推,每次都是原先的2倍
拥塞避免算法
慢开始是对每个确认,cwnd+1,也就是每个轮次是上一个轮次的2倍
而拥塞避免算法是每一个轮次,cwnd是上一个轮次cwnd+1
当网络出现拥塞时
无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(重传定时器超时)执行以下操作:
ssthresh = max(cwnd/2, 2)
cwnd = 1
执行慢开始算法
快重传
快重传算法要求接收方每收到一个失序的报文段后就立即发出重复确认。 这样做可以让发送方及早知道有报文段没有到达接收方, 而不要等待自己发送数据时才进行捎带确认。
发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。
快恢复
TCP的连接管理
TCP运输连接分为三个阶段
- 连接建立
- 数据传送
- 连接释放
建立连接之前
-
TCP连接的建立采用 客户/服务器 的方式
- 主动发起连接建立请求的应用进程叫做客户(Client)
- 被动等待连接建立的应用进程叫做服务器(Server)
客户、服务器都能确知对方的存在
-
要允许双方协商一些参数:
- 最大窗口值、时间戳、服务质量等
-
要能对运输实体资源进行分配:
- 缓存大小、连接表中的项目等
服务器要提前创建传输控制块TCB ,并进入监听状态
TCB存储连接中所需的TCP连接请求表、窗口值、序号、时间戳等重要信息。
客户端确定要访问的地址,也创建传输控制块TCB,准备发起网络访问
连接建立
三次握手
第一次握手
客户端向服务器发送连接请求报文段
A 向 B 发出连接请求报文段
报文段首部:同步控制位SYN = 1,初始序号seq = x。
第二次握手
服务器返回对连接请求信息的确认报文段
B收到连接请求报文段后,如果同意,则发回确认信息。
确认报文段首部:
同步控制位SYN = 1 , 确认位ACK = 1,确认号ack = x+1, 序号 seq= y 。
第三次握手
客户端再向服务器发送来的确认报文段进行再一次的确认, TCP连接建立完成
A 收到确认报文段后,再向 B 给出确认(对确认的确认);
报文段首部: ACK = 1, seq = x + 1 , ack = y + 1。
两次握手存在问题
如果产生了网络拥塞,就像图中连接请求1那样,延迟到达,然后服务器接收了请求,为这个请求申请了相关的资源,而客户因为已经建立了连接而不理睬确认信息,导致该连接一直占用资源而不能释放
连接释放
四次挥手
第一次挥手
A向B发送FIN + ACK 报文,要求释放连接
A 向 B 发出连接释放报文段;
报文段首部:终止控制位FIN = 1,序号seq = u;
u 的值为: 已经传送数据的最后一个字节的序号加1。
第二次挥手
B向A发送ACK 报文,表示对A的信息确认
B收到连接释放报文段后,如果同意,则发回确认信息;
从A到B方向上的连接已释放, TCP连接处于半关闭状态;
如果B还向A发送数据,则A还要接收数据;
报文段首部:确认位ACK = 1 , 确认号ack = u+1, 序号 seq = v 。
第三次握手
B再向A发送FIN + ACK报文,可以关闭连接了
B向A发出连接释放报文段
报文段首部: ack = u+1;
第四次挥手
A向B发送ACK报文,确认连接释放
A 收到B发送的连接释放报文段后,向B发送确认。
经过时间2MSL, A关闭。 TCP连接释放
应用层
域名系统DNS
互联网的域名结构
互联网采用了层次树状结构的命名方法。
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
域名的结构由标号序列组成,各标号之间用点隔开
… . 三级域名 . 二级域名 . 顶级域名
顶级域名
- 国家顶级域名
如: cn 表示中国, us 表示美国, uk 表示英国等。 - 通用顶级域名
如: com(公司和企业), net(网络服务机构),org(非赢利性组织), edu(美国专用的教育机构),gov(美国专用的政府部门), int(国际组织)等 - 基础结构域名
arpa,用于反向域名解析,因此又称为反向域名。
我国的域名划分
我国把二级域名划分为类别域名和行政区域名两类。
类别域名共7个:
com(工、商、金融等企业), net(提供互连网络服务的机构),org(非赢利性组织), edu(教育机构), gov(中国的政府机构),mil(中国的国防机构), ac(科研机构)-
行政区域名共34个,适用于我国的各省、自治区、直辖市。如北京 bj,河南 ha 等。
图中圈出的两个mail之间没有任何关系
域名服务器
域名系统DNS使用域名服务器实现域名到IP地址的解析。
一个服务器所负责管辖的(或有权限的)范围叫做区。
每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
域名服务器有以下四种类型
-
根域名服务器
根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
在互联网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m 。
这些域名服务器有很多镜像服务器
-
顶级域名服务器
顶级域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
-
权限域名服务器
负责一个区的域名服务器。
当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器 -
本地域名服务器
当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器
域名解析
递归查询
主机向本地域名服务器的查询一般都是采用递归查询。
如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
迭代查询
本地域名服务器向根域名服务器的查询通常是采用迭代查询。
当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
高速缓存
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
可大大减轻根域名服务器的负荷,使互联网上的 DNS 查询请求和回答报文的数量大为减少。
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。
万维网WWW
万维网用链接的方法非常方便地从互联网上的一个站点访问另一个站点, 从而主动地按需获取丰富的信息。
万维网以客户服务器方式工作。浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,也称为万维网服务器。
统一资源定位符
统一资源定位符 URL (Uniform Resource Locator) 用来标志万维网上的各种文档。每一个文档在整个互联网的范围内具有唯一的标识符 URL。
URL格式:<协议>://<主机>:<端口>/<路径>
HTTP协议
超文本传送协议HTTP定义了浏览器怎样向万维网服务器请求万维网文档, 以及服务器怎样把文档传送给浏览器。
HTTP协议使用了面向连接的TCP作为运输层协议, 保证了数据的可靠传输。
用户点击鼠标后所发生的事件
- 浏览器分析超链指向页面的 URL。
- 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
- 域名系统 DNS 解析出清华大学服务器的 IP 地址。
- 浏览器与服务器建立 TCP 连接
- 浏览器发出取文件命令:
- 服务器给出响应, 把指定路径下的文件 发给浏览器。
- TCP 连接释放。
- 浏览器显示指定页面的内容。
请求一个万维网文档所需的时间
请求一个万维网文档所需的时间:。
http版本
HTTP/1.0
HTTP/1.0协议是无状态的。 服务器并不记录曾经访问过的客户信息。 从而简化服务器的设计, 使服务器更容易支持大量并发的HTTP请求。
HTTP/1.0协议使用非持续连接, 增加了万维网服务器的负担。
HTTP/1.1
HTTP/1.1 协议使用持续连接
万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
持续连接的两种工作方式
非流水线方式:客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。
流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间。
HTTP的报文结构
请求报文
从客户向服务器发送请求报文。
方法:请求方式,如get,post等
响应报文
从服务器到客户的回答。
状态码 : 200 404等等
动态主机配置协议DHCP
动态主机配置协议DHCP (Dynamic Host ConfigurationProtocol)是一种动态的,向网络终端提供配置参数的协议。
DHCP提供了即插即用连网(plug-and-play networking)的机制。允许一台计算机加入新的网络和获取IP地址时,不需手动配置。终端提出申请之后, DHCP可以向终端提供IP地址、网关、 DNS服务器地址等参数,并进行设置。
DHCP采用客户/服务器模式
DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息;若找不到,则要用到IP地址池。
DHCP服务器拥有一个IP地址池,当任何启用DHCP的客户端登录到网络时,可从它那里租借一个IP地址,不使用的IP地址就自动返回地址池,供再分配。
由于DHCP使用传输层协议UDP,所以DHCP的各类报文均被封装在UDP数据报中。
分配地址方式
手工分派
由网络管理员为少数主机指定固定IP地址。
自动分配
DHCP为首次接入网络的某些主机分配固定IP地址,且该地址由此主机长期使用。
动态分配
以“租借”的方式为客户端分配地址,每个地址有一定的租约期限,到期须重新申请或续约
DHCP报文种类
DHCP中继代理(Relay Agent)
DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包。
现在是每个网络至少有一个 DHCP 中继代理,它配置了DHCP 服务器的 IP 地址信息。DHCP 中继代理以单播方式向 DHCP 服务器转发DHCP发现报文,并等待其回答。收到 DHCP 服务器回答的提供报文后, DHCP 中继代理再将此提供报文发回给主机
工作流程
发现阶段
DHCP客户机寻找DHCP服务器的阶段
- 当DHCP客户端第一次登录网络时, 若本机没有IP地址设定,就以广播方式发送DHCP DISCOVER报文来寻找DHCP服务器
- 网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应
提供阶段
DHCP服务器提供IP地址的阶段
接收到DHCP DISCOVER报文后, DHCP服务器会向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP OFFER报文。
选择阶段
DHCP客户机选择IP地址的阶段
如果有多台DHCP服务器向DHCP客户机发来DHCP OFFER报文,则DHCP客户机只接受第一个收到的DHCP OFFER报文;DHCP客户机以广播的方式回答DHCP REQUEST请求报文。之所以要以广播方式回答,就是为了通知所有的DHCP服务器,它将选择某台DHCP服务器所提供的IP地址。
确认阶段
DHCP服务器确认所提供的IP地址的阶段
收到客户端的REQUEST报文后, DHCP服务器便返回一个DHCPACK报文,告诉DHCP客户端可以使用它提供的IP地址。除了DHCP客户端选中的服务器外,其他的DHCP服务器将收回曾
经提供的IP地址
重新登录
DHCP客户端每次重新登录网络时,就不再发送DISCOVER报文,而是直接发送包含前一次所分配的IP地址的REQUEST报文。当DHCP服务器收到这一信息后,它会尝试让DHCP客户端继续使用原来的IP地址,并回答一个DHCPACK信息。
如果此IP地址已无法再分配给原来的DHCP客户端时(例如,此IP地址已经分配给其他DHCP客户端使用),则DHCP服务器给客户机回答一个DHCP NACK否认信息。当原来的DHCP客户端收到此DHCP NACK信息后,它就必须重新发送DHCP DISCOVER信息来请求新的IP地址。
更新租约
IP地址的租约期满后, DHCP服务器便会收回出租的IP地址。如果DHCP客户端要延长其IP租约,则必须更新其IP租约。当客户端重新启动或租约到50%时, DHCP客户端就需要直接向提
供租约的服务器发送DHCP REQUEST包, 更新客户端租约。如客户端与服务器无法联系,则客户端等到租约到达87.5%时,进入重新申请状态。