1 网络层的功能

异构网络互联

  • 网络互联
    • 用户的需求是多样的,因此没有一种单一的网络能适应所有用户的需求
    • 网络层所要完成的任务之一就是使异构的网络实现互联,从而令全球范围内数以百万计的网络能够互相通信。
    • 所谓网络互联,是指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(中间设备)相互连接起来,以构成更大的网络系统。

中间设备可以分为以下4种

  1. 物理层中间设备:中继器、集线器(Hub)
  2. 数据链路层中间设备:网桥、交换机
  3. 网络层中间设备:路由器
  4. 网络层以上的中间设备:网关
  • 使用物理层或数据链路层的中间设备时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,这种情况不称为网络互联
  • 网络互联特指使用路由器进行网络互联和路由选择
  • TCP/IP体系在网络互联上的做法
    • 参加互联的计算机网络使用相同的网际协议(Internet Protocaol, IP),因此可以把互联后的计算机网络视为一个虚拟互联网络,也可以称为IP网络。
    • 当虚拟互联网络上的主机在进行通信时,就好像在一个网络上通信一样,而看不见互联的具体的网络异构细节

路由与转发

  • 路由器的两大功能
    1. 路由选择(确定传输路径)

根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息以更新和维护路由表。根据从各相邻的路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由

  1. 分组转发(当一个分组到达时,路由器所采取的动作)

路由器根据转发表将用户的IP数据表从合适的路由器端口转发出去

  • 路由表是根据路由选择算法得出的,而转发表是从路由表得出的,一般不作区分,统称为路由表。

拥塞控制

  • 拥塞

    • 在通信子网中,因出现过量的分组而引起的网络性能下降的现象称为拥塞
    • 当分组到达路由器的速率接近路由器所在链路的带宽时,看起来是件好事,但是平均时延会急剧增加,并且会有大量的分组被丢弃,整个网络的吞吐量会骤降
  • 判断网络进入拥塞状态的方法

观察网络的吞吐量与网络负载的关系

  • 如果随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能有了轻微拥塞
  • 如果网络的吞吐量随着网络负载的增大而下降,那么网络就可能已进入拥塞状态
  • 如果网络的负载继续增大,而网络的吞吐量下降到零,那么网络就可能已进入死锁状态
  • 拥塞控制
    • 拥塞控制主要解决的问题

如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞而出现的分组的丢失,以及严重拥塞而产生网络死锁的现象

  • 拥塞控制的作用

确保通信子网能够承载所达到的流量。

  • 拥塞控制和流量控制的区别
    • 流量控制是指在发送端和接收端之间的点对点通信量的控制。
    • 流量控制所要做的是抑制发送端发送数据的速率,以便接收端来得及接收
    • 拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素


  • 拥塞控制的方法

开环控制

  • 在设计网络时事先将有关发生拥塞的因素考虑周到。
  • 是一种静态的预防方法,一旦整个系统启动并运行,中途就不再需要修改。
  • 开环控制在做决定时不需要考虑当前网络的状态

闭环控制

  • 事先不考虑有关发生拥塞的各种因素
  • 采用监测网络系统去监视网络,及时发现哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行。
  • 闭环控制是基于反馈环路的概念,是一种动态的方法

2 IP协议

1 IP协议概述

  • IP协议定义
    • IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网际层协议。
    • IP是整个TCP/IP协议族的核心,也是构成互联网的基础。
    • 为了能适应异构网络,IP强调适应性、简洁性和可操作性,并在可靠性做了一定的牺牲。

因此IP不保证分组的交付时限和可靠性,所传送分组有可能出现丢失、重复、延迟乱序等问题,即IP只为传输层提供一种无连接、不可靠的、尽力而为的数据包传输服务。

  • IP分组

使用TCP/IP协议的网络层传输的基本数据单元(PDU)称为IP分组

  • IP协议的主要内容

IP主要包含三方面内容

  1. IP分组封装格式
  2. IP分组转发规则
  3. IP编址方案

2 IP分组的格式

  • IP分组的组成

    • 一个IP分组由首部数据两部分组成
    • 首部前一部分的长度固定,共20B,是所有IP分组必须具有的,首部固定部分的后面是一些可选字段,长度可变,用来提供错误检测及安全等机制。
  • IP分组的格式如下图

image.png

  • 版本(4bit)

IP的版本,目前广泛使用的版本号为4

  • 首部长度(4bit)

以32bit为单位,最大值60B(15×4B),最常见的值是20B

  • 标识(16bit)

用于IP分片

  • 标志(3bit)

用于IP分片

  • 片偏移(13bit)

用于IP分片

  • 生存时间/TTL(8bit)

指分组在网络中可通过的路由器数的最大值,即分组在网络中的寿命,以确保分组不会永远在网络中循环。路由器在转发分组前,先把TTL减1,若TTL减为0,则该分组必须丢弃

  • 协议(8bit)

指出此分组携带的数据使用何种传输层协议,即分组的数据部分应交给哪个传输层协议
6表示TCP,17表示UDP

  • 首部校验和(16bit)

IP分组的首部校验和只校验分组的首部,而不校验数据部分

  • 源IP地址(32bit)

指示发送方的IP地址

  • 目的IP地址(32bit)

指示接收方的IP地址

3 IP分组与IP分片

  • 最大传送单元与片

    • 一个链路层数据报能承载的最大数据量称为最大传送单元(Maximum Transmission Unit, MTU)
    • IP分组的源与目的地路径上的各段链路可能使用不同的链路层协议,因此有不同的MTU。如以太网的MTU为1500B,而许多广域网的MTU不超过576B
    • 当路由器在转发IP分组时,如果分组的大小超过了出口链路的最大传输单元时,则会将该IP分组分解成很多足够小的片段,以便能够在目标链路上进行传输,这些较小的片段称为IP分片
    • 这些IP分片重新封装一个IP分组独立传输,并在到达目的主机时才会被重组起来
  • IP分片的过程

目的主机通过IP分组首部中的标识、标志片偏移字段来重组片。
标识

  • 创建一个IP分组时,源主机为该分组加上一个标识号
  • 当一个路由器需要将分组分片时,形成的每个片都具有原始分组的标识号
  • 目的主机则通过标识号来确定哪些分组属于同一个原始分组

标志

  • IP首部中的标志位有3bit,但只有后2bit有意义,分别是MF位(More Fragment)DF位(Don’t Fragment)
  • 只有当DF=0时,该IP分组才可以被分片
  • MF位则用来告知目的主机该IP分组是否为原始数据报的最后一个片,当MF=1时,表示相应的原始分组还有后续的片

片偏移

  • 片偏移指出较长的分组在分片后,某片在原始分组中的相对位置
  • 目的主机在对片进行重组时,使用片偏移字段来确定片应该放在原始IP分组的那个位置

4 路由器IP分组转发规则

  • 路由器执行分组转发的流程

    1. 从IP分组的首部提取目的主机的IP地址D,并计算出目的网络地址N
    2. 网络N与此路由器直接相连,则把分组直接交付给目的主机D,这称为路由器的直接交付,否则是间接交付,执行步骤3
    3. 若路由表中有目的地址为D的特定主机路由(对特定的主机指明一个特定的路由),则把IP分组传送给路由表中所指明的下一跳路由器,否则,执行步骤4
    4. 若路由表中有到达网络N的路由,则把IP分组传送给路由表中所指明的下一跳路由器,否则,执行步骤5
    5. 若路由表中有一个默认路由,则把IP分组传送给路由表中所指明的默认路由器,否则,执行步骤6
    6. 报告转发分组出错
  • 在得到下一跳路由器的IP地址后,并不是直接将该地址填入待发送的IP分组,IP分组的地址是不变的,而是将下一跳路由器的IP地址通过ARP协议转换成MAC地址,将其放到MAC帧的首部中,然后根据这个MAC地址找到下一跳路由器。

  • 在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥/交换机在转发MAC帧时,不改变帧的源地址。

5 网关与路由器

  • 网关与路由器的区别

    • 网关是一个逻辑概念,而路由器是一个具体的硬件

      可以说路由器实现了网关接口

    • 只要连接两个不同网络的设备都可以叫网关

    • 路由器特指能够实现路由选择和分组转发的硬件路由器很显然能够实现网关的功能,当然能够实现网关的硬件不止路由器
  • 默认网关

    • 网关也可以说是数据的出口
    • 如果数据不知道往哪里走的话,那么就可以从默认网关发出

6 IP地址

  • IP地址定义

    • 连接到因特网上的每台主机或路由器,都分配一个32bit的全球唯一标识符,即IP地址
    • 无论哪类IP地址,都是由网络号和主机号两部分组成,即IP地址={<网络号>, <主机号>}
    • 网络号标志主机/路由器所连接到的网络,主机号标志该主机/路由器
    • 网络号在整个因特网范围内必须是唯一的,而主机号则在它前面的网络号所指明的网络范围内必须是唯一的
  • IP地址分为网络号和主机号的好处

方便IP地址的管理

  • IP地址管理机构在分配IP地址时只分配网络号,而主机号则由得到该网络号的单位自行分配

减小路由表所占的存储空间

  • 路由器仅根据目的主机所连接的网络号来转发分组,而不考虑主机号
  • IP地址网络号的特点
    • 当一台主机同时连接到两个网络时,该主机就必须同时拥有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的网络号是不同的
    • 一个路由器必然至少应具有两个IP地址(因为路由器用于连接两个异构的网络),且路由器的每个端口都有一个不同网络号的IP地址
    • 用网桥或交换机等连接的若干局域网仍然是同一个网络(同一个广播域),因此整个局域网中所有主机的IP地址的网络号必须相同,但主机号必须不同


  • 传统的IP地址是分类的地址,分为A、B、C、D、E五类

image.png
A类IP地址

  • 一个A类IP地址由1字节的网络地址和3字节主机地址组成,主要为大型网络而设计的
  • A类地址的最高位必须是“0”, 网络号第一个字节的范围为1~126
  • 第一个可用网络号为1,最后一个可用的网络号为126

B类IP地址

  • 一个B类IP地址由2字节的网络地址和2字节的主机地址组成
  • B类地址的最高位必须是“10”,网络号第一个字节的范围为128~191
  • 第一个可用网络号为128.1,最后一个可用的网络号为191.255
  • 特殊网络号

128.0是不可指派的
C类IP地址

  • 一个C类IP地址由3字节的网络地址和1字节的主机地址组成
  • C类地址的最高位必须是“110”,网络号第一个字节的范围为192~223
  • 第一个可用网络号为192.0.1,最后一个可用的网络号为223.255.255
  • 特殊网络号

192.0.0是不可指派的
D类地址

  • D类IP地址第一个字节以“1110”开始
  • D类地址用于多点广播(Multicast),多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

E类IP地址

  • E类地址保留为将来使用。

在各类IP地址中,有些IP地址具有特殊用途,不用做主机的IP地址

  • 网络号0是不可指派的,表示本网络
  • 网络号127用于环回测试,目的网络号为127的IP分组永远不会出现在任何网络上
  • 主机号全为0表示本网络
  • 主机号全为1表示本网络的广播地址
  • 0.0.0.0表示本网络上的本主机,即当前主机
  • 255.255.255.255表示整个网络的广播地址,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址

3 NAT协议

  • 网络地址转换

    • 网络地址转换(Network Address Translation)简称NAT,是指通过将私有网络地址转换为公用地址,从而对外隐藏内部管理的IP地址
    • NAT使得整个私有网只需要一个公用IP地址就可以与因特网连通,由于私有网络地址是可重用的,所以NAT大大节省了IP地址的消耗
    • 同时,NAT还隐藏了内部网络结构从而降低了内部网络受到攻击的风险
  • 私有IP地址

    • 划出了部分IP地址专用于私有IP地址
    • 私有IP地址只用于局域网,不用于广域网连接
    • 私有IP地址不能直接用于互联网,必须通过路由器利用NAT把私有IP地址转换为互联中合法的公用地址后才能用于互联网
    • 路由器对目的地址是私有地址的分组一律不进行转发
    • 采用私有IP地址的网络称为专用互联网本地互联网
  • 私有IP地址网络号如下

    • A类:1个A类网段

10.0.0.0 ~ 10.255.255.255

  • B类:16个B类网段

172.16.0.0 ~ 172.31.255.255

  • C类:256个C类网段

192.168.0.0 ~ 192.168.255.255

  • NAT路由器
    • 使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,安装NAT软甲的路由器是NAT路由器
    • NAT路由器至少有一个有效的公用IP地址
    • 使用私有地址的主机和外界通信时,NAT路由器使用NAT转换表将私有地址转换成公用地址,或将公用地址转换成私有地址
    • NAT转换表中存放的是{私有IP:端口}到{公用IP:端口}的映射,通过这样的映射方式,可以让多个私有IP地址映射到同一个公用IP地址
    • 一个典型的NAT转换表如下

image.png

  • NAT路由器与IP分组中的IP地址
    • 普通路由器在转发IP分组时,不改变其源IP地址和目的IP地址
    • NAT路由器在转发IP分组时,则一定要更换分组的IP地址
    • IP分组从内网发往外网时,NAT路由器将源IP地址映射为公用IP

IP分组从外网发往内网时,NAT路由器将目的IP地址映射为私有IP

4 子网划分、子网掩码与CIDR

1 子网划分

  • 两级IP地址({网络号 : 主机号})的缺点

    • IP地址的利用率很低、不够灵活
    • 每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏
  • 子网划分

    • 在传统二级IP地址的基础上,为IP地址又增加了一个“子网号”,使得二级IP地址变成了三级IP地址,这种做法称为子网划分
    • 子网划分纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络
    • 凡是从其他网络传送给本单位某台主机的IP分组,仍然是根据IP分组的目的网络号,先找到连接到本单位上的路由器,然后该路由器在收到IP分组后,按目的网络号和子网号找到目的子网,最后把IP分组直接交付给目的主机
  • 三级IP地址的结构

在二级IP地址的基础上,从主机号借用若干bit作为子网号,具体结构如下
三级IP地址={<网络号>, <子网号>, <主机号>}

  • 从一个IP地址本身,无法判断主机或目的主机所连接的网络是否进行了子网划分
  • 对于传统的分类网络地址来说,子网号不能全0或全1

对于CIDR,子网号可以使用全0或全1

2 子网掩码

  • 子网掩码定义

    • 为了告诉主机或路由器对一个传统分类IP地址进行了子网划分,使用子网掩码来表达对原网络中主机号的借位
    • 子网掩码是一个与IP地址相对应的、长32bit的二进制串,由一串1和一串0组成,其中1对应于IP地址中的网络号及子网号,而0对应于主机号。
    • 主机或路由器只需要将IP地址和其对应的子网掩码逐位相与,即可得出相应的网络号和子网号
    • 因特网标准规定,所有的网络必须使用子网掩码,如果一个网络未划分子网,那么就采用默认子网掩码,A、B、C类IP地址的默认子网掩码分别是255.0.0.0、255.255.0.0、255.255.255.0
  • 使用子网掩码后

    • 一台主机在设置IP地址时,必须设置子网掩码
    • 路由器在相互之间交换路由信息时,必须把自己所在网络的子网掩码告诉对方
    • 路由表中的每个条目,除了要给出目的网络地址和下一跳地址外,还要同时给出该目的网络的子网掩码
  • 使用子网掩码后,IP分组的转发规则为

    1. 从IP分组的首部提取目的主机的IP地址D
    2. 先判断是否是直接交付:对于所有路由器直接相连的网络,用各网络的子网掩码和D逐位相与,看结果是否和相应的网络地址匹配,如匹配,则将分组直接交付,否则执行步骤c
    3. 若路由表中有目的地址为D的特定主机路由,则把IP分组传送给路由表中所指明的下一跳路由器,否则,执行步骤d
    4. 对于路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器,否则,执行步骤e
    5. 若路由表中有一个默认路由,则把IP分组传送给路由表中所指明的默认路由器,否则,执行步骤f
    6. 报告转发分组出错

3 CIDR

  • 无分类域间路由选择

    • 无分类域间路由选择(Classless Inter-Domain Routing)简称CIDR,是在子网掩码的基础上提出的一种消除传统分类IP地址的方法
    • 使用CIDR后,如果一个单位需要2000个地址,那么就给它分配一个2048地址的块(相当于8个C类网络),而不是一个B类地址,这样可以大幅提高IP地址的利用率,减小路由表的大小,提高路由转发能力。
  • CIDR的主要特点

    • 消除了传统A、B、C类地址以及划分子网的概念,可以更高效地分配IP地址
    • CIDR使用“网络前缀”来代替子网络的概念,IP地址的结构变为无分类两级编址:

IP地址={<网络前缀>, <主机号>}

  • CIDR采用“斜线记法”,格式为“IP地址/网络前缀所占bit数”,其中网络前缀所占bit数对应于网络号的部分,等效于子网掩码中连续1的个数。例如地址128.14.32.5/20表示网络前缀为20位,此时掩码为255.255.240.0,两者相与得出网络前缀为128.14.32.0
  • 网络前缀都相同的连续IP地址组成“CIDR地址块”
  • 分配到一个CIDR地址块的组织,仍可以在本组织内根据需要划分出一些子网
  • 路由聚合/构成超网

    • 多个网络地址,可以用它们相同的前缀表示,此时掩码1的数量等于相同前缀的位数,这称为路由聚合
    • 路由聚合使得路由表中的一行可以表示多个原来传统分类地址的路由
  • 最长前缀匹配

    • 使用CIDR时,路由表的每一行由“网络前缀”和“下一跳地址”组成
    • 在查找路由表时,可能会得到不止一个匹配结果,此时应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,因而路由就越具体

5 ARP、DHCP和ICMP

1 IP地址与硬件地址

  • IP地址是网络层使用的地址,而硬件地址是数据链路层使用的地址
  • 由于路由器的隔离,IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址,因此在网络层只使用IP地址来完成寻址
  • IP分组通过多次路由表转发到达目标网络后,改为在目标局域网中通过数据链路层的MAC地址以广播方式寻址
  • 通过路由器转发IP分组时,IP分组在每个网络中都被路由器解封装和重新封装。因此,IP分组在被路由器转发时,其数据链路层所封装的MAC地址是不断改变的,这也决定了无法使用MAC地址跨网络通信


2 ARP协议

  • 地址解析协议定义

    • 地址解析协议(Address Resolution Protocal)简称ARP协议
    • 在实际网络的链路上传送数据帧时,最终必须使用硬件地址,所以需要ARP协议来完成IP地址到MAC地址的映射
    • 每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表,使用ARP协议来动态维护此ARP表
  • ARP工作原理

主机A欲向本局域网上的某台主机B发送IP分组时,先在其ARP高速缓存中查看有无主机B的IP地址

  • 如果有,就可查出其对应的MAC地址,再将此MAC地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址
  • 如果没有,那么就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组,使同一个局域网里的所有主机收到ARP请求
  • 主机B收到该ARP请求后,向主机A发出响应ARP分组,分组中包含主机B的IP与MAC地址的映射关系,主机A在收到后将此映射写入ARP缓存,然后按查询到的MAC地址发送MAC帧。
  • 尽管ARP请求分组时广播发送的,但ARP响应分组是普通的单播

如果所要找的主机和源主机不在同一个局域网上,就需要发送IP分组至本局域网上的某个路由器

  • 通过ARP找到一个位于本局域网上的某个路由器的MAC地址
  • 将IP分组发送给这个路由器,让这个路由器把分组转发给下一个网络
  • IP地址到MAC地址的解析是自动进行的,只要主机或路由器和本网络的另一个已知IP地址的主机或路由器进行通信,ARP就会自动地将这个IP地址解析为链路层所需要的的MAC地址

3 DHCP协议

  • 动态主机配置协议定义

    • 动态主机配置协议(Dynamic Host Configuration Protocal)简称DHCP,常用于给主机动态地分配IP地址
    • DHCP提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与
    • DHCP是应用层协议,基于UDP
  • DHCP工作原理

    • DHCP采用C/S方式(只有应用层有这种工作方式)
    • 需要IP地址的主机在启动时就广播发现报文,这时该主机就称为DHCP客户

局域网上所有主机都能收到发现报文,但只有DHCP服务器才回答此发现报文

  • DHCP在收到发现报文后,先在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息,若找不到,则从服务器的IP地址池中取一个地址分配给该计算机

DHCP服务器的回应报文称为提供报文

  • DHCP客户端和DHCP服务器的具体交互过程
    1. DHCP客户机广播“DHCP发现”信息,试图找到网络中的DHCP服务器,从服务器获得一个IP地址
    2. DHCP服务器收到“DHCP发现”信息后,向网络中广播“DHCP提供”信息,其中包括提供给DHCP客户机的IP地址和相关配置信息
    3. DHCP客户机收到“DHCP提供”信息后,如果接收DHCP服务器所提供的相关信息,那么通过广播“DHCP请求”信息向DHCP服务器请求提供IP地址
    4. DHCP服务器收到“DHCP请求”信息后,广播“DHCP确认”信息,将IP地址分配给DHCP客户机


  • DHCP客户端和DHCP服务器交互时的具体地址

DHCP是一种应用层协议,建立在 UDP 协议之上,所以整个报文格式如下
image.png

  • 最前面的“以太网标头”,设置发出方(本机)的MAC地址和接收方(DHCP 服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
  • 后面的“IP 标头”,设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255
  • 最后的“UDP 标头”,设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口
  1. 本机的这个数据包构造完成后,就可以发出了,发出的数据包称为“DHCP发现”。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。
  2. 因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发过自己的。当看到发出方IP是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道“这个包是发过我的”,而其他计算机就可以丢弃这个包
  3. 接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个“DHCP提供”数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在UDP数据部分
  4. 新加入的计算机收到这个响应包,于是就知道了自己的IP 地址、子网掩码、网关地址、DNS服务器等等参数。


  • DHCP有三种机制分配IP地址
    • 自动分配方式(Automatic Allocation)

DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

  • 动态分配方式(Dynamic Allocation)

DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用

  • 手工分配方式(Manual Allocation)

客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址

  • DHCP特点
    • DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出“DHCP发现”时,有可能收到多个应答信息,这时,DHCP客户机只会挑选其中一个,通常挑选最先到达的
    • DHCP的客户端和服务端需要通过广播的方式来进行交互,原因是在DHCP执行期间,客户端和服务端都没有标识自己身份的IP地址,因此不可能通过单播的形式进行交互
    • DHCP采用UDP而不采用TCP的原因很简单:TCP需要建立连接,如果连对方的IP地址都不知道,那么就更不可能通过双方的套接字建立连接


4 ICMP协议

  • 网际控制报文协议定义
    • 网际控制报文协议(Internet Control Message Protocol)简称ICMP
    • IP缺乏差错控制机制,ICMP作为IP协议差错控制的补充,即使用ICMP来让主机或路由器报告差错和异常情况
    • ICMP是网际层协议,ICMP报文作为IP分组的数据,加上IP的首部,组成IP分组发送出去
    • ICMP报文有两个种类:ICMP差错报告报文ICMP询问报文


  • ICMP差错报告报文

ICMP差错报告报文用于目标主机到目标主机路径上的路由器源主机报告差错和异常情况
ICMP差错报告报文共有5种类型

  1. 终点不可达

当路由器或主机不能交付IP分组时,向源主机发送终点不可达报文

  1. 源点抑制

当路由器或主机由于拥塞而丢弃IP分组时,向源主机发送源点抑制报文,使源点知道应当减慢IP分组的发送速率

  1. 时间超过

当路由器收到生存时间(TTL)为0的IP分组时,除丢弃该分组外,还要向源主机发送时间超过报文
当终点主机在预先规定的时间内不能收到一个IP分组的全部片时,就把已收到的片全部丢弃,并向源主机发送时间超过报文

  1. 参数问题

当路由器或主机收到的IP分组的首部中,有的字段的值不正确时,就丢弃该分组,并向源主机发送参数问题报文

  1. 重定向

路由器把改变路由报文发送给源主机,让源主机知道下次应将IP分组发送给其他的服务器(可通过更好的路由)
遇到下述情况不发送ICMP差错报告报文

  • 对ICMP差错报告报文不再发送ICMP差错报告报文
  • 对IP分组的第一个分片的所有后续分片都不发送ICMP差错报告报文
  • 对具有组播地址(D类地址)和特殊地址的IP分组不发送ICMP差错报告报文
  • ICMP询问报文

ICMP询问报文有4种类型

  1. 回送请求和回答报文

常使用回送请求和回答报文进行分组网间探测PING(测试两台主机之间的连通性)

  1. 时间戳请求和回答报文
  2. 掩码地址请求和回答报文
  3. 路由器询问和通告报文

前两类ICMP询问报文最常用

6 IPv6

  • 解决IPv4地址耗尽问题的措施有以下三种
    1. 采用无类别编址CIDR
    2. 采用网络地址转换NAT
    3. 采用具有更大地址空间的IPv6

前两种方法只是延长了IPv4地址分配结束的时间,只有IPv6从根本上解决了IPv4地址的耗尽问题

  • IPv6的主要特点
    • 更大的地址空间

IPv6将地址从IPv4的32位增大到了128位(4倍)

  • 允许协议继续扩充
  • 自动配置地址,支持即插即用
  • IPv6只在包的源节点才能分片,传输中的路由器不能分片,所以也可以说IPv6不允许分片
  • 增大了安全性,具有身份验证和保密功能
  • 简化了IP分组头,使得路由器能够更快地处理分组
  • IPv4向IPv6的过渡
    • 采用逐步演进的方法,同时还必须使新安装的IPv6系统能够向后兼容
    • IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由

7 IP组播

  • 组播概述
    • 组播也称为多播
    • 为了能够支持像视频点播和视频会议这样的应用场景,网络必须实施某种有效的组播机制。使用多个单播传送来仿真组播是可能的,但是这会引起主机上大量的处理开销和网络上的负担。
    • 组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机
    • 组播应用于UDP协议,而不是TCP协议。因为TCP只能一对一地发送

1 组播的过程

  • 源主机要把一个分组发送给多个目的地的主机,不是让源主机给每个目的地的主机都发送一个单独的分组(这样就成单播了),而是让源主机把单个分组发送给一个组播地址,该组播地址标志一组地址,而因特网会把这个分组的副本投递给该组中的每台主机
  • 主机组播时仅发送一份数据只有数据在传送路径上出现分岔时才将分组复制后继续转发(需要运行组播协议IGMP的路由器支持)

2 IP组播地址

  • IP组播使用D类地址,D类地址的范围是224.0.0.0~239.255.255.255
  • 组播地址只能用于目的地址,不能用于源地址
  • 对组播数据报不产生ICMP差错报文,因此若使用PING命令测试组播地址,则永远不会收到响应

3 IGMP协议

  • IGMP协议概述
    • 组播路由器必须和因特网上的其他组播路由器协同工作,以便把组播数据以最小的代价传送给所有组成员,此时就需要IGMP协议
    • IGMP不知道IP组播组包含的成员数,也不知道这些成员分布在哪些网络上。

IGMP让连接到本地局域网上的组播路由器知道本局域网是否有主机参加或退出了某个组播组

  • 每台主机可以加入多个组播组
  • IGMP的工作可以分为两个阶段

第一阶段

  • 当某台主机想加入新的组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要称为该组的成员
  • 本地的组播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他组播路由器

第二阶段

  • 本地组播路由器要周期性地探寻本地局域网上的主机,以便知道这些主机是否仍继续是组的成员