高级TCP-IP知识
1_IP子网划分
TCP/IP用IP地址IP地址来表示各个节点,并且根据IP地址的类别进行IP分类,但是随着需求极速增长,这种方法也有了弊端,便诞生了子网划分(Subnetting)
VLSM和CIDR技术可以进一步提高地址利用效率,从而缓解地址数量不足的问题
- VLSM(Variable Length Subnet Mask,变长子网掩码):通过把子网掩码变长来把一个网段划分为多个子网
- CIDR(Classless Inter-Domain Routing,无类域间路由):通过把子网掩码缩短来把多个网段聚合为一个网段
子网划分是理解VLSM和CIDR的重要基础
1.2_需求背景
早期的网络是将IP地址划分成了A、B、C、D、E类,每个32位的ip被分为有网络号和主机号构成的二级结构,后期这种分类就有了缺陷
- IP地址资源浪费严重
- IP网络数量不敷使用
- 业务扩展缺乏灵活性
- 无法应对Internet的爆炸式增长
1.3_子网划分基础
1.3.1_子网划分的方法
划分之前
-
普通的两级结构的IP地址由网络号和主机号组成
划分子网 -
是从主机号部分借用若干位作为子网号剩余的位作为主机号
划分之后 -
两级的IP地址变成了三级的IP地址,包括网络号、子网号和主机号
这样,拥有多个物理网络的机构就可以将所属的物理网络划分为若干个子网 -
子网划分属于本机构的内部事,外部网络可以不必了解机构内由多少个子网组成,因为对外仍表现为一个没有划分子网的网络
-
从其他网络发送给本机构某个主机的数据,可以仍然根据原来的选路规则发送到本机构连接外部网络的路由器上
-
此路由器接收到IP数据包后再按网络号及子网号找到目的子网,将IP数据包交付给目的主机,要求路由器具备识别子网的能力
1.3.2_子网掩码
IP地址本身无法确定子网号的长度,为了区分主机号和子网号,必须使用子网掩码
子网掩码和IP地址一样都是32位长度,一堆0和1组成,也可以用点分十进制表示
- 子网掩码中的1对应IP地址中的网络号和子网号
- 子网掩码中的0对应IP地址中的主机号
将子网掩码和IP地址进行逐位逻辑与运算,能算出IP地址的子网掩码,事实上,所有的网络都必须有一个掩码,如果一个网络没有划分子网,那么该网络使用默认掩码
- A类地址的默认掩码:255.0.0.0
- B类地址的默认掩码:255.255.0.0
- C类地址的默认掩码:255.255.255.0
将子网掩码和不划分子网的IP进行逐位逻辑与运算,就能得出该IP地址的网络地址
1.4_IP子网划分的常用计算
1.4.1_计算子网内可用地址数
- 假设子网的主机号位数为N,则可用地址数为个
- 主机号全1为广播地址,主机号全0位网络地址
计算A、B、C三类网络可用主机数的方法相同
- 主子网的机号位数为N bits
- 则子网中可用的地址数数目为个(减2是因为有两个主机地址不可用)
- 主机号为全0和全1,全0时表示该子网的网络地址,全1时,表示该子网的广播地址
注:熟记2的n次幂的结果,一般来说2的1到10次幂差不多了
示例:计算子网内可用地址数
子网地址为192.168.3.192,子网掩码为255.255.255.254,计算该子网内可用主机地址数量
- 计算掩码的位数,转换为二进制为11111111.11111111.11111111.11100000掩码的位数为27
- 计算主机号位数,主机号的为主为
- 该子网可用的主机地址数量为,个
这30个可用主机地址为,192.168.3.193、192.168.3.194、……、192.168.3.222,地址192.168.3.192位整个子网的地址,而192.168,3.223位广播地址,都不能给分配给主机
1.4.2_根据主机地址数划分子网
子网划分计算中,有的时候需要在一直每个子网内需要容纳的主机数量的前提下,来划分子网,但想知道如何划分子网,就要知道划分之后的子网掩码,那么就变成了去子网掩码,计算如下
- 计算网络主机号的位数:假设每个子网需要划分Y个IP地址,并且满足,则主机号位数为N,其中Y+2是因为需要考虑主机位为全0和全1的情况
- 计算子网养马的位数,计算出来主机号位数N之后,则子网掩码位数为32-N
- 根据子网掩码的位数计算出子网号的位数M,该子网就有种划分法
示例
需要将B类网络168.195.0.0划分成若干个子网,要求每个子网内的主机数为700台,过程如下
- 每个子网的主机地址数为Y=700
- 计算网络主机号,根据公式计算出N=10
- 计算子网掩码的位数,子网掩码位数为32-10=22,子网掩码为255.255.252.0,二进制表示为11111111.11111111.11111100.00000000
根据子网掩码的位数可知子网号位数为6,那么该网络能划分成个子网,分别为168.195.0.0、168.195.4.0、……、168.195.252.0子网掩码为255.255.255.0
1.4.3_根据子网掩码计算子网数
如果要在一个网络中建立子网,就要在这个网络的默认掩码上增加若干位,形成子网掩码,可以减少用于主机地址的位数,加入到掩码的位数决定了我们可以配置的子网数
假设子网号的二进制(子网掩码比默认掩码中的位数增加的位数)位数为M,则子网数为个
对于特定网络
- 使用位数较少的子网号,则获得的子网较少,而每个子网中可容纳的主机较多
- 使用位数较多的子网号,则获得的子网较多,而每个子网中可容纳的主机较少
1.4.4_根据子网数划分子网
在已知需要划分子网数量的前提下,划分子网,这类划分子网的问题的前提是每个子网需要包括尽可能多的主机,否则就没有意义,如皋港不要钱子网包括尽可能多的主机,那么子网号可以随意划分成很大,而不是最小的子网号位数,就浪费了大量的主机地址
例如一个c类地址192.168.0.0划分成4个子网,那么子网号位数应该为2,子网掩码为255.255.255.192,不考虑子网包括尽可能多的主机,那么可能主机地址就大大减少,如子网位数划分为3,4,5这样的话主机号位数就是5,4,3
同样,划分子网就必须得知道划分子网后的子网掩码,需要计算子网掩码
- 计算子网号的位数,假设需要划分X个子网,每个子网包括尽可能多的主机地址,那么当X满足公式时,M就是子网号的位数
- 由子网号位数计算出网掩码,划分出子网
示例
将B类地址168.195.0.0划分成27个子网,要求每个子网包括尽可能多的主机
- 划分子网数x=27
- 计算子网号的位数,根据计算出m=5
- 计算子网掩码,位数为16+5=21,子网掩码为255.255.248.0,二进制表示1111111.11111111.11111000.0000000
- 子网号位数为5,则划分为个子网,分贝为168.195.0.0、168.195.8.0、……、192.168.248.0子网掩码为255.255.248.0,任选其中27个即可
1.5_VLSM和CIDR
1.5.1_VLSM
- 子网划分的局限性
- 无法实现吧网络划分为不同大小的子网
- 常常会浪费许多主机地址
- VLSM
- 允许使用子网掩码划分子网
- 是组织的IP地址空间得到更有效的利用
计算方式
- 划分几个子网
- 每个子网有多少地址可用
- 每个子网的地址起止范围,网络地址和广播地址
得出参数:
- C类地址
- 借位数:新掩码在老掩码的基础上,把几个0变成了1
- 剩余位数:总长度减去新掩码
- 计算
- 划分的子网数:
- 每个子网可用地址数:
- 列出
- A类、B类地址
- 借位数:新掩码在老掩码的基础上,把几个0变成了1
- 借位那一段剩余的位数:例如16变18是在第三段借了2位,于是剩余位数为6
- 计算
- 划分的子网数:
- 每两个子网的间隔位数:
1.5.2_CIDR
- internet面临的问题
- 随着Internet的成长,路由表迅速扩大
- IPv4地址将很快耗尽
- CIDR
- 消除了自然分类地址和子网划分的局限
- 将网络前缀相同的连续IP地址组成CIDR地址快
- 支持强化地址汇聚
- 无类域间路由斜线表示法
- 斜线表示法又称CIDR记法,在IP地址后面加上一个斜线
/
如何写上网络前缀所占的位数,这个数值也就是子网掩码中1的位数,也用于子网掩码的表示
- 斜线表示法又称CIDR记法,在IP地址后面加上一个斜线
2_DNS
域名系统(DNS,Domain Name System)是一种用于TCP/IP应用程序的分布式数据,提供域名与IP地址之间的转换
2.1_DNS域名系统概述
2.1.1_主机名与IP地址映射需求、Hosts文件
- 早期直接使用IP访问网络资源,但是随着发展,需要记得多
- 于是就需要一种可以与IP地址关联便于记忆的名字,来访问资源
- 在 Internet早期,计算机使用一个叫做 Hosts 的文件来实现主机名与 IP 地址之间的映射
- Hosts 文件中包括主机名和 IP 地址的对应信息
- 当一台主机需要通过主机名的方式访问网络上的另外一台主机时,它就会查看本地的 Hosts 文件,从文件中找到相对应的 IP 地址然后进行报文发送,如果在Hosts 文件中没有关于那台主机名的相关信息,则主机访问将失败
- Hosts 文件是主机的本地文件
- 优点是查找响应速度快
- 主要用来存储一些本地网络上的主机名与 IP地址对应的信息
- 这样,主机在以主机名访问本地网络主机时,通过本地Hosts 文件可以迅速获得相应IP地址。
- 每台主机的 Hosts 文件都需要手工单独更新,而且几乎没有自动配置
- 随着 Internet规模快速增长,维护包含一个大量映射条目的文件的难度越来越大,而且在每台主机间进行经常同步更新几乎是一件不可能完成的任务
2.1.2_DNS简介
- DNS系统的作用
- 提供了主机名字和IP地址间的相互转换
- DNS系统的模式
- 采用C/S(客户端/服务器模式)
- DNS系统的结构
- 是一个具有树状层次结构的,联机分布式数据库系统
集中式DNS:
- 整个因特网只使用一台DNS服务器,这台DNS服务器包含Internet所有主机名与IP地址的映射关系
- 存在的主要问题
- 存在单点故障
- 服务处理的访问量巨大,性能不足
- 远距离访问,效率低下
- 系统维护工作量巨大
- 因此DNS被设计称为一个联机分布式数据库系统
2.2_域名及域名结构
- DNS域的本质是因特网中一种管理范围的划分
- 最大的域是:根域、顶级域、二级域、三级域、四级域等
- 相对应域名为:根域名、顶级域名、二级域名、三级域名、四级域名等
- 不同等级的域名之间使用点号分隔,级别最低的域名写在左边(<-)、级别最高的则卸载最右边(->)
- 如域名www.baidu.com中,com为顶级域名,baidu为二级域名,www则表示二级域名中的主机
- 每一级域名都是有英文字母和数字组成,域名不区分大小写,但是长度不能超过63字节,一个完整的域名不能超过255个字节,根域名用
.
(点)表示 - 以点结尾的域名称为完全合格域名
2.2.1_因特网域名结构树
包含三大类:
- 国家顶级域名
- 国际顶级域名
- 通用顶级域名
2.3_DNS域名解析和过程
- DNS系统采用客户机/服务器架构,使用的传输层协议为TCP或UDP,服务器端口号53
- 域名解析工作是通过调用服务器上的解析器软件完成的
- DNS域名解析按照域名空间的分层树状结构自顶至下进行
上图是一个完整的DNS域名解析示例,过程如下:
- DNS 客户端向本地域名服务器发送请求,查询 www.h3c.com.cn 主机的 IP 地址
- 本地域名服务器检查其数据库,发现数据库中没有域名为www.h3c.com.cn 的主机,于是将此请求发送给根域名服务器;
- 根域名服务器查询其数据库,发现没有该主机记录,但是根域名服务器知道能够解析该域名的 cn 域名服务器的地址,于是将 cn 域名服务器的地址返回给本地域名服务器
- 本地域名服务器向 cn 域名服务器查询 www.h3c.com.cn 主机的 IP 地址
- cn 域名服务器查询其数据库,发现没有该主机记录, 但是 cn 域名服务器知道能够解析该域名的 com.cn 域名服务器的地址,于是将 com.cn 的域名服务器的地址返回给本地域名服务器;
- 本地域名服务器再向 com.cn 域名服务器查询 www.h3c.com.cn 主机 IP 地址;
- com.cn 域名服务器查询其数据库,发现没有该主机记录,但是 com.cn 域名服务器知道能够解析该域名的 h3c.com.cn 域名服务器的 IP 地址,于是将 h3c.com.cn 的域名服务器的 IP 地址返回给本地域名服务器
- 本地域名服务器向 h3c.com.cn 域名服务器发送查询 www.h3c.com.cn 主机的 IP地址请求
- h3c.com.cn 域名服务器查询其数据库,发现有该主机记录,于是给本地域名服务器返回“www.h3c.com.cn所对应的 IP 地址
- 最后本地域名服务器将 www.h3c.com.cn 的 IP 地址返回给客户端
至此,整个解析过程完成
2.4_DNS查询方法
2.4.1_递归查询
- 如果DNS服务器支持递归查询,那么当它接收到递归查询请求后,它 将负责把最终的查询结果返回请求发送方。即使执行递归查询的DNS服务器无法从本地数据库返回查询结果,它也必须查询其他的DNS服务器,直到得到确认的查询结果
- 一般客户机与本地DNS域名服务器之间的查询交互采用的就是递归查询方式
- DNS服务器一定会返回一个确切的查询结果
- 客户端到DNS的查询
2.4.2_迭代查询
- DNS服务器接收到迭代查询请求后,如果无法从本地数据库返回查询 结果,它会返回一个可能知道查询结果的DNS服务器地址给请求者,由请求者自行查询该DNS服务器,以此类推,请求者最终将得到查询结果
- 一般本地域名服务器发送至根域名服务器的查询采用的就是迭代查询
- DNS服务器会返回一个一直的其他DNS服务器,由请求者自由查询
- DNS服务器到DNS服务器的查询
2.5_DNS反向查询
- DNS反向查询允许DNS客户端根据已知的IP地址查找主机所对应的域名
- 因特网域名树中设立了一个特殊的in-addr.arpa反向查询域用于反向查询
2.6_H3C设备DNS特性及配置
2.6.1_特性
- 静态域名解析:手工建立域名和IP之间的对应关系
- 动态域名解析:由DNS域名服务器完成解析
- DNS代理:设备对DNS解析进行中继
2.6.2_配置
- 配置静态域名解析表中的主机名和对应IPv4地址:
[h3c] ip host hostname ip-address [vpn-instance vpn-instance-name]
- 配置指定域名服务器的IPv4地址:
[h3c]dns server ip-address vpn-instance vpn-instance-name]
- 配置域名后缀:
[h3c]dns domain domain-name [vpn-instance vpn-instance-name]
- 注:vpn-instance vpn-instance-name是指配置命令对指定的vpn有效
2.6.3_配置DNS代理
- 开启DNS代理功能:
[h3c]dns proxy enable
只有开启DNS代理功能后,路由器才能中继客户端与DNS服务器之间的交互报文 - 配置指定域名服务器的IPv4地址:
[h3c] dns server ip-address [vpn-instance vpn-instance-name]
2.6.4_域名解析显示及维护
任意视图下执行
- 显示静态域名解析表:
display ip host host [ip | ipv6] [vpn-instance vpn-instance-name]
- 显示域名服务器的PV4地址信息:
display dns server [dynamic] [vpn-instance vpn-instance-name]
- 显示域名后缀信息:
display dns domain [dynamic] [vpn-instance vpn-instance-name]
3_文件传输协议
- FTP(File Transfer Protocol)是互联网上文件传输的标准协议,使用tcp作为传输协议,支持用户的登录认证及访问权限的设置
- TFTP(Trival File Transfer Protocol)是一种简单的文件传输协议,使用udp作为传输协议,不支持用户的登录认,也不局部复杂的命令
3.1_FTP协议
3.1.1_FTP协议介绍
- 采用客户端/服务器的设计模式,承载在TCP协议之上
- 拥有丰富的指令集,支持对登录服务器的用户名和口令进行验证,提供交互式的文件访问,允许客户指定文件的传输类型和设定文件的存取权限
- 采用双TCP连接方式,使用TCP协议的端口20和21
- 20用于数据连接
- 21用于控制连接
- FTP的数据传输方式分为:主动方式和被动方式
- 主动方式
- 数据连接由服务器发起:控制连接21,数据连接20
- 被动连接
- 数据连接由客户端主动发起:控制连接21,数据连接是服务器随机产生
- 主动方式
3.1.2_FTP双链接方式
- 传输时,需要在服务器和客户端之间建立两个TCP连接:控制连接和数据连接
- FTP服务器启动后,FTP服务打开TCP端口号21作为侦听端口,等待客户端的连接
- 客户端随机选择一个TCP端口号作为控制连接的源端口,主动发起对FTP服务器端口号的TCP连接
- FTP客户端服务器之间通过该连接交互FTP控制命令和命令执行的应答信息
- FTP控制连接在整个FTP会话过程中一直保持打开
- FTP的数据连接主要有三大用途
- 服务器向客户端发送文件
- 客户端向服务器发送文件
- 服务器向客户端发送文件列表
3.1.3_FTP文件传输模式
一个文件,不同的操作系统可能会有不同的存储表达方式,所以FTP协议定义了不同的文件传说模式,其中使用最多的包括:
- ASCll模式是默认的文件传输模式,主要特点是:
- 本地文件转换成标准的ASCll码再传输
- 适用于传输文本文件
- 二进制流模式也称为图像文件传输模式,主要特点是:
- 文件按照比特流的方式进行传输
- 适用于传输程序文件
3.1.4_FTP主动数据传输方式
- 主动模式也成为了PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是
- 客户端通过向服务端发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
- PORT命令携带如下格式的参数(A1、A2、A3、A4、P1、P2),其中A1、A2、A3、A4表示需要建立数据连接的主机IP地址,而P1和P2表示客户端用于传输数据的临时端口号,数值为
- 当需要传输数据时,服务器通过TCP端口号20余客户端的临时端口建立数据传输通道,完成数据传输
- 客户端通过向服务端发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
- 因为在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动连接
- 如果客户端在防火墙内部,可能会遇到问题,因为端口随机,防火墙不知道,因为防火墙通常只允许外部主机访问部分内部已知的端口。阻断对内部随机端口的访问,所以可能造成无法建立数据连接
阶段一:建立控制通道 TCP 连接
- FTP 客户端以随机端口(图中是 1174)作为源端口,向 FTP 服务器的 TCP 端口 21发送一个 TCP SYN 报文,开始建立 TCP 连接
- FTP 服务器收到 SYN 报文后发送 SYN ACK 报文给客户端,源端口为 TCP 端口 21,目的端口为 FTP 客户端使用的随机端口 1174
- FTP 客户端收到 FTP 服务器发送的 SYN ACK 报文后,向 FTP 服务器回送一个 ACK报文,完成 TCP 三次握手,建立 FTP 控制连接
阶段二:主动方式参数传递 - 当 FTP 客户端希望请求文件列表或者需要同服务器进行文件传输时,FTP 客户端会通过已经建立好的控制通道向服务器发送 PORT 命令,命令中包含了自己的 IP 地址和端口号。在图中,IP 地址是 192.168.0.1,端口号是
阶段三:建立数据通道 TCP 连接 - FTP 服务器向 FTP 客户端发送一个 SYN 报文,主动建立 TCP 连接。通信的源端口为 FTP 服务器的TCP 端口号 20,目的端口为客户端在 PORT 命令中发送给服务器的端口号 3566
- FTP客户端以端口号3566 为源端口,20为目的端口向FTP服务器发送一个SYN ACK报文
- FTP 服务器端向 FTP 客户端发送一个 ACK 报文,完成 TCP 三次握手,建立数据通道的 TCP 连接
阶段四:数据传输 - 数据通道连接建立后,FTP 客户端与 FTP 服务器利用该通道进行数据的传输
- 数据传输完毕后,由发送数据的一方发送 FIN 报文,关闭这条数据连接。如果 FTP客户端需要打开新的数据连接,则可以通过控制通道发送相关命令再次建立新的数据传输通道
3.1.5_FTP被动数据传输方式
- 也称为PASV方式,主要特点
- FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式,服务器选择到临时端口号并告知客户端
- 一般采用如下形式命令:Entering Passive Mode(A1、A2、A3、A4、P1、P2)其中A1、A2、A3、A4表示服务器的IP地址,P1、P2表示服务器的临时端口号,数值为
- 当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输
- FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式,服务器选择到临时端口号并告知客户端
- 由于服务器总是被动接收客户端的数据连接,因此被称为被动方式
- 因为两个连接都是客户端发起的,一般防火墙不会限制内部的客户端发出的连接,所以这样就解决了在主动方式下,防火墙阻断问题
FTP 被动方式建立连接的过程如下:
阶段一:建立控制通道 TCP 连接
- FTP 客户端以随机选择的临时端口号(图中是 1174)作为源端口向 FTP 服务器 TCP21 端口发送一个 TCP SYN 报文,开始建立TCP 连接
- FTP 服务器收到 SYN 报文后发送 SYN ACK 报文给客户端,源端口为 TCP 21 端口,目的端口为 FTP 客户端使用的随机端口号 1174
- FTP 客户端收到 FTP 服务器发送的 SYN ACK 报文后,向 FTP 服务器回送一个 ACK报文,完成 TCP 三次握手建立FTP 控制连接
阶段二:被动方式参数传递 - 当 FTP 客户端希望请求文件列表或者需要同服务器进行文件传输时,FTP 客户端会通过已经建立好的控制通道向服务器发送 PASV 命令,告诉服务器进入被动模式。服务器对客户端的 PASV 命令应答,应答中包含了服务器的 IP 地址和一个临时端口信息。在图中,IP 地址是 192.168.0.10,端口号是
阶段三:建立数据通道 TCP 连接 - 此时,FTP 客户端已经得知 FTP 服务器使用的临时端口号是5365。FTP 客户端以随机选择的临时端口号(图中是 3789)作为源端口,向 FTP 服务器的端口 5365 发送一个 SYN 报文,主动建立 TCP 连接
- FTP服务器端发送 SYN ACK 给 FTP 客户端,目的端口为客户端自己选择的端口 3789,源端口为 5365
- FTP 客户端向 FTP 服务器端发送 ACK 消息,完成 TCP 三次握手,建立数据通道的TCP 连接
阶段四:数据传输 - 数据通道连接建立后,FTP 客户端与 FTP 服务器利用该通道进行数据的传输
- 数据传输完毕后,由发送数据的一方发送 FIN 报文,关闭这条数据连接。如果 FTP 客户端需要打开新的数据连接,则可以通过控制通道发送相关命令再次建立新的数据传输通道
3.2_TFTP协议
- TFTP(简单文件传输协议)也是采用客户机/服务器模式的文件传输协议
- TFTP适用于客户端和服务器之间不需要复杂交互的环境
- TFTP承载在UDP之上,端口号69
- TFTP仅提供简单的文件传输功能(上传、下载)
- TFTP没有存取授权与认证机制,不提供目录列表功能
- TFTP协议传输是由客户端发起的
- 具有两种传输模式
- netascii模式:对应FTP中的ASCII模式,用于传输文本文件
- octet模式:对应FTP中的二进制流模式,用于传输程序文件
3.2.1_TFTP文件传输过程
-
TFTP 进行文件传输时,将待传输文件看成由多个连续的文件块组成
- 每一个 TFTP 数据报文中包含一个文件块,同时对应一个文件块编号
- 每次发完一个文件块后就等待对方的确认,确认时应指明所确认的块编号
- 发送方发完数据后如果在规定的时间内收不到对端的确认那么发送方就要重新发送数据
- 发送确认的一方如果在规定时间内没有收到下一个文件块数据,则重发确认报文
- 这种方式可以确保文件的传送不会因某一数据的丢失而失败
-
每次TFTP 发送的数据报文中包含的文件块大小固定为512字节
- 如果文件长度恰好是512字节的整数倍,那么在文件传送完毕后,发送方还必须在最后发送一个不包含数据的数据报文,用来表明文件传输完毕
- 如果文件长度不是 512 字节的整数倍,那么最后传送的数据报文所包含的文件块肯定小于 512 字节,这正好作为文件结束的标志
-
TFTP 的文件传输过程以 TFTP 客户端向 TFTP 服务器发送一个读请求或写请求开始读请求表示 TFTP 客户端需要从 TFTP 服务器下载文件,写请求表示客户端需要向服务器上传文件
-
TFTP 客户端需要从 TFTP 服务器下载文件时,会向 TFTP 服务器发送一个读请求报文,包含需要下载的文件名信息和文件传输的模式(netascii 或 octet)
- 如果这个文件可以被客戶端下载,那么服务器回应一个数据报文,报文中包括文件的第一个文件块,块编号为1
- 客户端收到块编号为1的数据报文后,返回一个确认报文,报文中的块编号为1
- 服务器收到确认后继续发送块编号为2的数据报文,客户端回应块编号为2的确认报文
- 这个过程周而复始,直至文件全部传输完毕
- 除了最后一个数据报文可含有不足 512 字节的数据,其他每个数据报文均含有 512 字节的数据
-
当客户端收到一个不足 512 字节的数据报文后,就知道它收到了最后一个数据分组
-
TFTP 客户端需要向 TFTP 服务器上传文件时,会向 TFTP 服务器发送一个写请求报文,包含需要在服务器上保存的文件名信息和文件传输模式(netascii 或 octet)
- 如果这个文件可以被客户端上传,那么服务器回应一个块编号为0的确认报文
- 客户端继续发送块编号为1的 数据报文,服务器返回块编号为1的确认报文
- 然后客户端继续发送块编号为2的数据报文,
- 服务器返回块编号为2的确认报文
-
以此类推,直至文件全部传输完毕
3.3_配置FTP与TFTP
3.3.3_FTP
在用户视图中用以下命令登录FTP并进入客户端视图
ftp ftp-server [service-port] [vpn-instance vpn-instance-name] [dscp dscp-value | source {interface {interface-name | interface-type interface-number} | ip source-ip-address}]
常见的参数含义如下
ftp-server:服务器的主机名或ip地址
service-port:源端设备提供的服务的端口号,范围0-65535,缺省值为21
vpn-instance vpn-instance-name:指定服务器所属的vpn
source {interface {interface-name | interface-type interface-number} | ip source-ip-address}:指定建立连接时使用源地址
常用交互命令
登录ftp之后可用以下几个命令来操作服务器上的文件和目录
查看文件和目录:ls remotefile [localfile]
下载文件:get remotefile [localfile]
上传文件:put localfile [remotefile]
断开连接:bye
设置文件传输模式为二进制流模式:binary
显示目录:pwd
切换目录:cd pathname
删除文件:delete remotefile
3.3.4_FTP服务器配置
启动ftp服务器
[系统视图]ftp server enable
创建本地用户进入本地视图
[系统视图]local-user user-name [class {manage netwoek}]
设置当前用户的密码
[用户视图]passeord [{hash | simple} password]
设置服务类型
[用户视图]service-type {ftp | {ssh|telnet | terminal}
3.3.5_TFTP客户端配置
tftp tftp-server { get | put | sget} source-filename [ destination-filename ] [ vpn-instance vpn-instance-name ] [ dscp dscp-value | source { interface interface-type interface-number | ip source-ip-address } ]
tftp-server:TFTP 服务器的IP地址或主机名
source-filename:源文件名
destination-filename:目标文件名
vpn-instance vpn-instance-name:指定 TFTP 服务器所属的 VPN
dscp dscp-value:指定设备发送的 TFTP 报文中携带的 DSCP 优先级的取值,取值范围为 0~63,缺省值为0
get:表示普通下载文件操作
put:表示上传文件操作
sget:表示安全下载文件操作
ip source-ip-address:当前 TFTP 客户端发送报文所使用的源 IP 地址,此地址必须是设备上已配置的 IP 地址
interface interface-type interface-number:当前 TFTP 客户端传输使用的源接口,包括接口类型和接口编号,此接口下配置的主IP 地址即为发送报文的源地址
4_DHCP
DHCP(Dynamic Host Configuration Protocol-动态主机配置协议)的作用是为局域网中的每台计算机自动分配TCP/IP信息,包含IP地址,子网掩码,网关以及DNS服务器等,其优点是终端主机无需配置、网络维护方便
4.1_简介
前身是BOOTP,早期网络大量使用无盘工作站,这样的工作站,启动时从BOOTROM初始化系统并连接到网络上,BOOTP协议自动为这样主机设定TCP/IP环境
但一个缺点:在设定前必须事先获得客户端的硬件地址,而且硬件地址与ip地址的对应是静态绑定的,也就是说BOOTP没有动态性,在有限的IP环境中,会造成极大的浪费
DHCP完全向下兼容BOOTP,BOOTP也能在DHCP的环境运行良好
DHCP运行在客户端/服务器模式
- 服务器负责集中管理IP地址(包括IP地址,子网掩码,缺省网关,DNS服务器地址等)
- 客户端主动向服务器提出请求,服务器根据策略返回相对于的配置信息
- 客户端使用从服务器获得的配置信息进行数据通讯
DHCP协议报文采用UDP方式封装
- 服务器侦听的端口号是:67
- 客户端的端口号是:68
4.2_DHCP特点
- 即插即用
- 客户端无需配置即能获得IP地址及相关参数,简化客户端网络配置,降低维护成本
- 统一管理
- 所有IP地址及相关参数信息由DHCP服务器统一管理,统一分配
- 使用高效
- 通过IP地址租期管理,提高IP地址的使用效率
- 可跨网段实现
- DHCP采用广播方式实现报文交互,DHCP服务仅局限在本地网段,通过使用DHCP中继,可使处于不同子网中的客户端和DHCP服务器之间实现协议报文交互
4.3_DHCP系统组成
讨论DHCP中最常见的几个术语包括
- DHCP服务器:提供网络设置参数给DHCP客户端,通常是一台能提供DHCP服务功能的服务器或网络设备
- DHCP中继:在客户端和服务器之间转发跨网段DHCP报文的设备,通常是网络设备
- DHCP客户端:客户端通过服务器来获取网络配置参数,通常是一台主机或网络设备
4.4_DHCP地址分配方式
DHCP提供了三种IP地址分配方式
- 手工分配:根据需求,网络管理员为某些少数特定DHCP客户端(如DNS,服务器,打印机等)静态绑定固定的IP地址,此地址永久被该客户端使用,其他主机无法使用
- 自动分配:服务器为客户端动态分配租期为无限长的IP地址,只有客户端释放该地址之后,才能被其他客户端使用
- 动态分配:主机申请IP地址最常用的方式,服务器为客户端指定一个IP地址,同时为此地址规定了一个租用期限,如果到期,客户端必须重新申请IP地址
4.5_IP地址动态获取过程
DHCP客户端从DHCP服务器动态获取IP地址,主要通过四个阶段进行:
- 发现阶段
- 即DHCP客户端寻找DHCP服务器的阶段
- 客户端以全网广播形式发起IP地址请求
- 客户端以广播方式发送DHCP-DISCOVER报文
- 提供阶段
- 即DHCP服务器提供IP地址的阶段
- 服务器以全网单播形式向客户端发送IP地址提供
- DHCP服务器接收到客户端的DHCP-DISCOVER报文后,根据IP地址分配的优先次序选出一个IP地址,与其他参数一起通过DHCP-OFFER报文广播发送给客户端
- 选择阶段
- 即DHCP客户端选择P地址的阶段
- 客户端选择好IP地址后,以全网广播形式向服务器通告选择结果
- 如果有多台DHCP服务器向该客户端发来DHCP-OFFER报文,客户端只接受第一个收到的DHCP-OFFER报文,然后以广播方式发送DHCP-REQUEST报文,该报文中包含DHCP服务器在DHCP-OFFER报文中分配的P地址
- 确认阶段
- 即DHCP服务器确认IP地址的阶段
- 服务器向客户端以全网单播形式发送IP地址确认
- DHCP服务器收到DHCP客户端发来的DHCP-REQUEST报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则返回DHCP-ACK报文;否则返回DHCP-NAK报文,表明地址不能分配给该客户端
- 特殊情况:当网络中存在多台DHCP服务器,客户端会优先选择最先到达的IP地址提供
4.6_租约更新
- 租期到达50%,客户端如在线,会向服务器发起租约更新请求
- 租期到达87.5%,客户端如在线,会向服务器发起租约更新请求
4.7_中继介绍
- 用于跨网段分配IP地址
- IP地址请求的相关报文都是广播发送,无法跨越网段,所以需要在中间路由器开启DHCP中继代理功能
DHCP中继的工作原理:
- 具有DHCP中继功能的网络设备收到DHCP客户端以广播方式发送的DHCP-DISCOVER或DHCP-REQUEST报文后,根据配置将报文单播转发给指定的DHCP服务器
- DHCP服务器进行IP地址的分配,并通过DHCP中继将配置信息广播发送给客户端,完成对客户端的动态配置
4.8_配置
- 开启DHCP:
[h3c]dhcp enable
- 创建DHCP地址池:
[h3c]dhcp servver ip-pool pool-name
- 配置动态分配的IP地址范围:
[h3c-dhcp-pool-pool-name]network network-address [masl-length | mack mask]
- 通常情况下采用动态地址分配方式进行地址分配,对于采用动态地址分配方式的地址池,需要配置该地址池可分配的地址范围,地址范围的大小通过掩码来设定
- 配置DHCP客户端分配 的网关地址:
[h3c-dhcp-pool-pool-name]gateway-list ip-address & <1-8>
- 参数&<1-8>表示最多输入8个IP地址,每个之间用空格分搁
4.9_DHCP服务器可选配置
配置为DHCP客户端分配的DNS服务器地址
[Router-dhcp-pool-0] dns-list ip-address&<1-8>
配置DHCP地址池中不参与自动分配的IP地址
[Router] dhcp server forbidden-ip start-ip-address [end-ip-address]
配置动态分配的IP地址的租用有效期限
[Router-dhcp-pool-0] expired { day day [hour hour [minute minute [second second]]] | unlimited }
参数说明
day day:天数,取值范围为0~365
hour hour:小时数,取值范围为0~23
minute minute:分钟数,取值范围为0~59
second second:指定租约过期的秒数,second 取值范围为0~59
unlimited:有效期限为无限长
示例
4.10_维护配置
显示DHCP地址池信息
[Router] display dhcp server pool [pool-name]
显示DHCP地址池的空闲地址信息
[Router] display dhcp server free-ip [pool poolname]
显示DHCP服务器的统计信息
[Router] display dhcp server statistics [ pool poolname]
4.11_中继配置以及显示和维护
启用DHCP服务
[Router] dhcp enable
指定DHCP服务器的地址
[Router-Ethernet1/1] dhcp relay server-address ip address
配置接口工作在DHCP中继模式
[Router-Ethernet1/1] dhcp select relay
显示DHCP服务器地址信息
[Router] display dhcp relay server-address [interface interface-type interface-number]
显示DHCP中继的用户地址表项信息
[Router] display dhcp relay client-information [interface interface-type interface-number | ip ip address [vpn-instance vpn-instance-name]]
显示DHCP中继的相关报文统计信息
[Router] display dhcp relay statistics [ interface interface-type interface-number]
5_IPv6基础
IPv6(Internet Protocol Cersion 6)也称IPng(Ip Next Generation),与IPv4做大的区别是:ip地址的长度从32位,增加到了128位,安全性和Qos等增强,设计了邻居发现协议来实现地址解析和地址自动配置等功能
5.1_IPv6的特点
- IPv4的不足
- 可用地址日益缺乏
- 对终端用户而言,配置不够简便
- 缺乏安全性和QoS支持
- IPv6的优点
- 几乎无尽的地址空间,个地址
- 终端用户无需任何配置
- 设计时就考虑到增强的安全性和QoS
5.2_IPv6地址
5.2.1_地址表示方法
- 冒号十六进制表示法
- 16位一段,共8段
- 为了缩短书写长度,可用压缩表示
- 段内前到--0压缩:每段中的前导0可以去掉,但保重每段至少有一个数字
- 如:
2001:0410:0000:0001:0000:0000:0000:45FF
就可以压缩为2001:410:0:1:0:0:0:45FF
- 如:
- 全--0段压缩:一个或多个连续段内各位全为0时,可用
::--双冒号
压缩,但一个IPv6地址中只允许有一个双冒号- 如:
2001:0410:0000:0001:0000:0000:0000:45FF
就可以压缩为2001:410:0:1::45FF
或者2001:410::1:0:0:0:45FF
但不可以是2001:410::1::45FF
- 如:
- 段内前到--0压缩:每段中的前导0可以去掉,但保重每段至少有一个数字
5.2.2_IPv6构成
ipv6取消了ipv4的网络号、主机号和子网掩码的概念,代之以前缀、接口标识符、前缀长度,也没有A类、B类等地址分类
- 前缀:前缀的作用与IPv4地址中的网络部分类似,用于标识了这个地址属于那个网络
- 接口标识符:与IPv4地址中的主机部分类似,用于标识了这个地址在网络中的具体位置
- 前缀长度:作用类似与IPv4地址中的子网掩码,用于确定地址中哪一部分是前缀,哪一部分是接口标识符
1234:5678:90AB:CDEF:ABCD:EF01:2345:6789/64
-------------------|-------------------|--
前缀 接口标识符 前缀长度
5.2.3_IPv6地址分类
IPv6没有广播地址,在ipv4中某些需要用到广播地址的服务或功能,ipv6都用组播地址来完成
- 单播地址:和IPv4中单播含义类似
- 用来唯一标识一个接口,只能个分配给一个节点上的一个接口,发送单播地址的数据报文被传送给此地址所标识的接口
- 组播地址:和IPv4中组播含义类似
- 用来表示一组接口,多个接口可配置相同的组播地址,发送到组播地址的数据报文被传送给此地址所标识的所有接口
- IPv6组播地址的范围是:
FF00::/8
- 任播地址:IPv6中特有的地址类型
- 也用来标识一组接口,但与组播地址不同的是,发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近的一个接口
- 任波地址时从单播地址空间中分配,并使用单播地址的格式
- 节点无法区分组播和单播,必须在配置是明确指出
5.2.3.1_常用的IPv6地址类型及格式
地址类型 | IPv6前缀表示 | 解释 | |
---|---|---|---|
单播地址 | 未指定地址 | ::/128 |
• 地址:: 称为未指定地址,不能分配给任何节点• 在节点没有获得地址之前,可以发送的报文的源地址字段填入,表示无地址 • 未指定地址不能作为目的地址 |
环回地址 | ::1/128 |
• 单播地址0:0:0:0:0:0:0:1 称为环回地址,不能分配非任何物理接口• 作用和127.0.0.1相同,节点通过给自己发送IPv6报文测试是否正常 |
|
链路本地地址 | FE80::/10 |
• 用于链路本地节点之间的通信,以路由器为便捷的一个或多个局域网段称之为链路 • 使用链路本地地址作为目的地址的数据报文不会被转发到其他链路上 |
|
站点本地地址 | FEC0::/10 |
• 与IPv4中的私有地址类似 • 使用站点本地地址作为目的地址的数据报文不会被转发到本站点(类似私有网络)外的其他站点 • 站点本地地址在实际应用中很少使用 |
|
全球单播地址 | 2000::/3 |
• 与IPv4中的公有地址类似 • 全网单播地址有IANA负责统一分配 |
|
组播地址 | FF00::/8 |
• 常用的预留组播地址有FF02::1 (链路本地范围所有节点组播地址)、FF02::2 (链路本地范围所有路由器组播地址)• 还有一类组播地址:被请求节点地址,该地址主要用于获取同一链路上邻居节点的链路层地址及实现重复地址检测,每个单播或任播IPv6地址都对应一个,格式为: FF02:0:0:0:0:1:FFXX:XXXX 其中FF02:0:0:0:0:1:FF为104位固定格式 |
|
任播地址 | 从单播地址空间中分配 使用单播地址的格式 |
• 与单播地址没有区别,是从单播地址分配的 |
5.3_邻居发现协议
- 主机无需任何配置就可以连通网络
- 邻居发现协议所实现的功能包括
- 地址解析
- 与IPv4中的ARP类似
- 路由发现/前缀发现
- 用于发现网络中的路由器及前缀有利于自动配置
- 地址自动配置
- 终端发送RD信息,请求路由器的前缀以及长度
- 路由器回复本机的前缀以及长度
- 终端使用路由器回复的前缀+接口标识符/前缀长度,自动产生IPv6全球单播地址
- 地址重复检测等
- 地址解析
5.3.1_地址解析
- 通过交互信息来解析邻居的数据链路层地址
- 组播发送邻居请求信息
- 单播回应邻居通告信息
5.4_配置
手工指定接口的全球单播地址
[接口视图]ipv6 address {ipv6-address prefix-length | ipv6-address/prefix-length}
配置接口使用无状态自动配置ipv6
[接口视图]ipv6 address auto
手工指定接口的链路本地地址
[接口视图]ipv6 address ipv6-address link-local
配置接口自动生成链路本地地址
[接口视图]ipv6 address auto link-local
接触路由器ND信息抑制
[接口视图]undo ipv6 nd rahalt
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)