一 走进网络世界
1.1.1 企业网络环境介绍
计算机网络类型:
LAN ------本地局域网 Local Area Network: •通常指几千米以内的,可通过某种介质互联的计算机、打印机、modem或其他设备的集合
WAN ------ 广 域 网 Wide Area Network: •分布距离远,它通过各种连接以便在更大的地理区域内实现接入
计算机网络的功能和衡量指标:
计算机网络的基本功能
•资源共享,分布式处理与负载均衡,综合信息服务
计算机网络的主要衡量指标
•带宽Band Width 常见单位bps/Bps
描述在一定时间范围内能够从一个节点传送到另一个节点的数据量
通常以bps为单位
例如千兆以太网带宽为1000Mbps(125MBps),万兆以太网为10000Mbps(1250MBps)常见单位换算 1Byte/s = 8 bit/s
•延迟Delay 常见单位ms
描述网络上数据从一个节点传送到另一个节点所经历的时间
常见网络设备:
服务器,集线器,交换机,路由器,防火墙
拓扑:
什么是拓扑?
拓扑不关心事物的细节,也不在乎相互的比例关系,而只是以图的形式表示一定范围内多个物体之间的相互关系。
什么是网络拓扑?
网络拓扑图是指由各网络节点和通信介质构成的物理或逻辑布局的网络结构图。
1.网络的规模
2.主要功能区划
3.业务数据分布
4.优化和安全加固设计的“指南针”
5.故障排查的“地图”
企业网络架构发展阶段:
阶段一:
阶段二:
阶段三:
1.1.2 不同网络拓扑的分类及应用场景
常见的三种网络拓扑 总线型,环形,星型。
总线型 设计需要整合现有的网络资源,将已建网络与新建架构充分融合,实现设备和线路资源的集中同一管理
总线型主要用于主干网络段部分,如银行总行及总公司外传部分。
环形 其各网络结点连成环状,数据信息沿一个方向传送,通过各中间结点存贮转发,最后到达目的结点
环型由于安全可靠性较差应用较少,可以应用简单的家庭或办公室、宿舍。
星型 星形拓扑结构存在一个中心结点,它是其它节点的唯一中继结点。这种构形结构简单,容易建网,便于管理,但由于通信线路长度较长,成本高,可靠性差
星型用在网吧或院校的机房。
模块化、层次化设计思想
网络架构设计,通过制定各功能分区的访问控制策略,实现各功能分区之间可独立运行、逻辑隔离、安全互访。网络功能区域划分以及网络安全域控制策略为网络设备、网络安全设备等部署和配置提供了依据和基础。 互联网接入区 核心交换区 应用区 数据区 外联区 内网区 运维区
网络设计原则:
统一性:设计需要整合现有的网络资源,将已建网络与新建架构充分融合,实现设备和线路资源的集中统一管理。
可用性:网络覆盖面需能够保证企业生产、销售等各个环节,并具有服务的高可用性。
高效性:提高网络使用效率,节约网络投资成本和运营成本。
灵活性:网络需要具有扩展的灵活性,能够适应企业网络扩展的需求。
安全性:网络具有较高的安全性,对核心数据能有效保护,保证企业数据资产的安全。
常见网络介质:
1.1.3 三种不同逻辑结构的功能介绍
分别是核心层,汇聚层,接入层
核心层用于 高速数据转发
- 高速转发数据
- 提供冗余能力
- 提供可靠传输
- 扩展网络
汇聚层用于 路由汇聚及安全管理
- 减少路由条目
- 较高转发性能
- 综合安全管理策略
- 承接核心层与接入层设备
接入层用于 终端接入
- 接入终端设备
- VLAN划分,隔离广播提高安全
- POE以太网络供电
二 二层交换机
1.2.1 二层寻址概述
MAC地址有48位,通常被表示为点分十六进制数。
MAC地址全球唯一,由 IEEE对这些地址进行管理和分配。
每个地址由两部分组成,分别是供应商代码和序列号。其中前24位二进制代表该供应商代码OUI(组织唯一标识),剩下的24位由厂商自己分配。
二层数据帧结构
集线器——HUB
将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备
•从任何一个网口收到数据泛洪给所有接口
•各个网口之间互为冲突域
冲突域: 同一时间内只能有一台设备发送信息的范围。
如何解决冲突域?这是一个叫做CSMA/CD的东西
即带冲突检测的载波监听多路访问技术
缺点:
总线型结构,传输效率低,基本被淘汰
交换机——Switch
为接入交换机的任意两个网络节点提供独享的电信号通路
•快速转发,维护一张MAC表,通过MAC表来保障数据只发到该收的接口下
•各个网口之间隔离冲突域
•未知目的帧泛洪到所有接口(二层广播)
如何维护MAC表?
数据包从哪个接口进来,学习该数据包的源MAC地址
MAC地址表有效期5分钟,每收到一次该源MAC,刷新缓存时间
二层交换原理
ARP 原理:
ARP 地址解析协议,将IP地址解析为MAC地址
ARP 协议具有两项基本功能:
将 IPv4 地址解析为MAC 地址
维护映射的缓存
ARP 工作原理:
A主机以广播形式发送ARP查询请求,询问B主机的IP对应的MAC地址
B主机以单播形式回复A主机本机MAC地址
A主机把B主机的IP地址和MAC地址的映射关系写入ARP缓存表
1.2.2 VLAN概述
二层使用MAC地址进行寻址
初识VLAN------- IEEE 802.1Q协议
虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。
VLAN隔离广播域,有效抑制广播风暴
跨VLAN需要三层网络支持,安全性提高
什么是广播风暴?
指当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了 “广播风暴”
VLAN隔离广播
没有划分VLAN时,整台交换机的所有端口均属于同一个广播域
VLAN形成逻辑的广播域,不同之间的VLAN互相隔离
一个VLAN中所有设备都是在同一广播域内,不同的VLAN为不同的广播域
VLAN之间互相隔离,广播不能跨越VLAN传播,因此不同VLAN之间的设备一般无法互访,不同VLAN间需通过三层设备实现相互通信
一个VLAN一般为一个逻辑子网,由被配置为此VLAN成员的设备组成
VLAN中成员多基于交换机的端口分配,划分VLAN就是对交换机的接口划分
VLAN工作于OSI参考模型的第二层,详见802.1Q帧格式
VLAN是二层交换机的一个非常根本的工作机制
1.2.3 链路聚合概述
SW :交换机
定义:链路聚合是把多条物理链路聚合在一起,形成一条逻辑链路
作用:采用链路聚合既可以提供链路冗余性,又可以提高链路的带宽
配置:聚合接口是一个手工配置的逻辑接口,链路聚合组是随着聚合接口的创建而自动生成的
链路聚合的模式
静态聚合模式
端口不与对端设备交互信息
根据本端设备信息选择参考端口
用户命令创建和删除静态聚合组
动态聚合模式LACP IEEE 802.3ad
端口的LACP协议自动使能,与对端设备交互LACP报文
根据本端设备与对端设备交互信息选择参考端口
用户命令创建和删除动态聚合组
链路聚合的类型
二层链路聚合
成员端口全部为二层以太网端口
创建VLAN虚接口使聚合接口能够支持收发三层IP报文
接口支持收发携带VLAN Tag的报文 l
三层链路聚合
成员端口全部为三层以太网端口
聚合接口支持收发三层IP报文
需创建聚合接口的子接口使聚合接口支持收发携带VLAN Tag的报文
802.1Q协议
公有标准 –
默认情况,在802.1Q Trunk上对所有的VLAN打Tag,除了Native VLAN;
Native VLAN,也称为本征VLAN,是在trunk上无需打标签的VLAN,默认为vlan1,可手工修改
Tag标记字段详细信息:
Tag 标记字段包含一个2 bytes EtherType(以太类型)字段、一个
3bits的PRI字段、1bit的CFI字段、12bits的VLAN ID字段;
由上可以推理出VLAN的范围,2^12=4096 1-4096
链路接口类型
当一条链路,需要承载多VLAN信息的时候,需使用trunk来实现
Trunk两端的交换机需采用相同的干道协议
一般见于交换机之间或交换机与路由器之间
1.2.4 STP概述
STP(Spanning Tree Protocol)IEEE 802.1D 是什么?
生成树协议 :防止环路的诞生 网咯破坏协议
解决交换机二层环路的协议,避免由于环路导致的广播风暴
广播域:一个广播发出后传递的区域 二层交换机只负责传播数据,三层交换机和路由器才负责指定传播,所以一般广播域是三层交换机或路由器之间为一个独立的广播域。
这里根桥看作一个交换机
原理:
每个广播域上选择一个根桥
每个非根桥上选择一个根端口
选择一个非指定端口
RSTP(802.1w)、MSTP(802.1S)又是什么?
RSTP(rapid spanning Tree Protocol )快速生成树协议
MSTP( Multi- Service Transport Platform) 多业务传送平台
RSTP相比于STP优点
lP/A机制协商,收敛速度更快,STP网络变更收敛需要30-50s,RSTP收敛1s
MSTP相比于RSTP优点
新增实例概念,多个VLAN根据需求划分为多个实例,每实例一颗生成树实现不同实例(VLAN组)的流量负载分担,提高了链路的使用效率
三 路由转发
1.3.1 IP地址
产生背景及应用场景、掌握IP规划、子网掩码、网关
在IP网络中,通信节点需要有一个唯一的IP地址;
IP地址用于IP报文的寻址以及标识一个节点;
IPv4地址一共32bits,使用点分十进制的形式表示;
IP地址的分类:
最左端占一的数量用来确定几类IP
有网络位和主机位组成 分别确定网络和网络钟主机的IP标识
公有IP及私有IP
IPv4地址空间中有一部分特殊的地址,成为私有IP地址
私有IP地址不能直接访问公网(Internet)的IP,只能在本地使用。
IP地址的类型
网络地址:指代网络的地址。在网络的 IPv4 地址范围内,最小地址保留为网络地址。 此地址的主机部分的每个主机位均为0。
广播地址:用于向网络中的所有主机发送数据的特殊地址。广播地址使用该网络范围 内的最大地址。即主机部分的各比特位全部为1的地址。
主机地址:可分配给网络中终端设备的地址。
可变长子网掩码——VLSM
将192.168.1.0/24这个C类地址进行子网划分,网络位向主机位借1位
计算一下172.16.1.0/27这个子网的网络号、广播号,及可用IP地址
现有一个网段10.0.1.0/24,需要分配给公司三个部门,请进行网络地址划分: A部门:65人 B部门:29人 C部门:15人
写出各部门的IP地址起始范围和子网掩码?
要将网段10.0.1.0/24 划分给公司的三个部门,你可以根据每个部门所需的IP地址数量来确定子网的大小。首先,计算每个部门需要的IP地址数量的二进制位数,然后确定合适的子网掩码。
A部门需要65个IP地址,这可以用7个位来表示(2^7 = 128,足够容纳65个IP地址)。 B部门需要29个IP地址,这可以用5个位来表示(2^5 = 32,足够容纳29个IP地址)。 C部门需要15个IP地址,这可以用4个位来表示(2^4 = 16,足够容纳15个IP地址)。
现在,我们可以为每个部门分配子网:
- A部门:10.0.1.0/25,子网掩码为255.255.255.128,IP地址范围从10.0.1.0到10.0.1.127。
- B部门:10.0.1.128/27,子网掩码为255.255.255.224,IP地址范围从10.0.1.128到10.0.1.159。
- C部门:10.0.1.160/28,子网掩码为255.255.255.240,IP地址范围从10.0.1.160到10.0.1.175。
1.3.2 路由概述
基于TCP/IP协议的路由:
当路由器(或其他三层设备)收到一个IP数据包时,会查看数据包的IP头部中的 目的IP地址 ,并在路由表中进行查找,在匹配到 最优的路由 后,将数据包扔给该路由所指的出接口或下一跳。
路由表Routing Table
每一台路由器都会维护一个路由表,在路由表中包含着路由器发现的路由(路由条目、路由表项);
路由表相当于路由器的地图,路由器能够正确转发IP报文的前提是在其路由表中存在匹配该数据包目的IP地址 的路由条目;
路由表中的路由条目获取来源有多种:直连路由、静态路由及动态路由协议。
IP路由表
AD: Administrative Distance(通告距离)。不同的路由协议有不同的管理距离值。
cost:路由开销,当到达一个目的地的多个路由优先级相同时,路由开销最小的将成为最优路由。
1.3.3 路由分类
直连路由 静态路由 动态路由
直连路由
伸手可及的网络,直接连接在路由器上的网段,可自动形成直连路由
该路由类型是路由器自动生成的,只要接口链路以及协议Up,无需任何操作就在路由表中
静态路由
由网络管理员手动设置在路由器上的路由
该路由类型是最常见也是日常工作中使用率最高的路由方式,在商业客户环境中非常普遍
动态路由
通过动态路由协议,由路由器间相互交互通信进而形成全网路由表
该路由类型常见于特大网络中,例如金融行业的全球组网,运营商骨干网等场景
多种路由同时存在,如何选择?
到达同一个子网可能存在多条路由,路由器会如何选择并转发?优先使用明细路由,再比较AD距离,最后比较Cost
AD 管理距离
路由协议的优先级,范围0-255,数字越大优先级越低
优先级:直连路由>静态路由>动态路由
Cost/Metric开销/度量值
越小越优先
Routing Protocols | AD | 备注 |
直连接口 | 0 | |
关联出接口的静态路由 | 1 | Metric = 0 |
关联下一跳的静态路由 | 1 | Metric = 0 |
EIGRP 汇总路由 | 5 | |
外部 BGP | 20 | |
内部EIGRP | 90 | |
IGRP | 100 | |
OSPF | 110 | |
RIPv1、v2 | 120 | |
外部EIGRP | 170 | |
内部BGP | 200 |
通信是双向的,单向可达实际不可达,路由一定要有来有回
只有单向路由的话,数据包就找不到回家的路
1.3.4 动态路由协议
什么是动态路由协议?
动态路由协议通过路由信息的交换生成并维护转发引擎所需的路由表。当网络拓扑结构改变时动态路由协议可以自动更新路由表,并负责决定数据传输最佳路径。
按工作区域分类:
按工作机制及算法分类:
RIP:
使用距离矢量路由协议的路由器并不了解网络的拓扑。该路由器只知道:
自身与目的网络之间的距离
应该往哪个方向或使用哪个接口转发数据包
RIP是应用及开发较早的路由协议,是典型的距离矢量路由协议
适用于小型网络,最大跳数15跳(16跳视为不可达) RIP是基于UDP的,使用端口号520 在CISCO IOS平台上的管理性距离为120
OSPF
OSPF(Open Shortest Path First,开放最短路径优先)是典型的链路状态路由协议,是目前业内使用最广泛的IGP之一;
路由器之间交互的是链路状态信息,而不是直接交互路由;
每台OSPF路由器都知晓网络拓扑结构,采用SPF算法计算达到目的地的最短路径;
支持VLSM,支持手工路由汇总;
多区域的设计使得OSPF能够支持更大规模的网络。
OSPF三张表
邻居表(Neighbor Table):
– 两台路由器的OSPF要协同工作,最基本的要求是两者需形成圈毗邻的邻接关系,邻居表存储了OSPF路由器邻居的状态以及关于该邻居的其他数据。
拓扑数据库(Link-state Database):
– OSPF用LSA(Link State Advertisement 链路状态通告)来描述网络拓扑信息, LSDB中存储着路由器产生或者收到的LSA。
OSPF路由表(OSPF Routing Table):
– 基于LSDB进行SPF算法运算,计算得出的路由被加载到路由表中。
1.3.5 VLAN间路由
VLAN间路由--单臂路由
每个VLAN都是一个独立的广播域,不同的VLAN之间二层就已经隔离,因此属于不同VLAN的节点之间是无法 直接互访的,所以跨VLAN的通信必须跨三层网络
路由器能够实现不同广播域之间的数据路由;
每一个VLAN都需要有一个物理接口进行对接;
路由器端口资源有限,这种方案扩展性不高。
VLAN间路由--路由器单臂
在路由器上基于物理接口来创建子接口,通过子接口与VLAN对接,子接口是逻辑接口,物理上并不存在;
子接口能够识别打上Tag的数据帧。
VLAN间路由--SVI接口
交换式虚拟接口 (SVI)
VLAN接口(三层接口)
interface vlan 10或20
四 IPv6基础知识
1.4.1 IPv6基础知识
IPv6地址格式,地址类型,邻居寻址、IPv6地址配置方法
IPv6简介
IPv6是英文“Internet Protocol Version 6” (互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,IPv6采用128位的二进制地址,因此新增的地址空间支持2128(约3.4×1038)个地址,其地址数量号称可以为全世界的每一粒沙子编上一个地址。 由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍 。
IPv6地址表示方法
IPv6的地址长度为128位,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。 IPv6地址分为两部分,分别是网络前缀和接口标识。
网络前缀,相当于IPv4中的网络ID;接口标识,相当于IPv4中的主机ID其前缀可书写为:地址/前缀长度。如:21DA:D3:0:2F3B::/64
IPv6有3种表示方法:
1)冒分十六进制表示法
格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如: ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
这种表示法中,每个X的前导0是可以省略的,例如: 2001:0DB8:0000:0023:0000:0000:200C:017A→ 2001:DB8:0:23:0:0:200C:17A
2)0位压缩表示法
在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如: FF00:0:0:0:0:0:0:1101 → FF00::1101 0:0:0:0:0:0:0:1 → ::1 0:0:0:0:0:0:0:0 → ::
3)内嵌IPv4地址表示法
为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1 与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用
IPv6报文内容
IPv6报文的整体结构分为IPv6报头、扩展报头和上层协议数据3部分。IPv6报头是必选报文头部,长度固定为40B,包含该报文的基本信息;扩展报头是可选报头,可能存在0个、1个或多个,IPv6协议通过扩展报头实现各种丰富的功能;上层协议数据是该IPv6报文携带的上层数据,可能是ICMPv6报文、TCP报文、UDP报文或其他可能报文。
IPv6地址类型
IPv6协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来在IPv4地址相比,新增了“任播地址”类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的;
单播地址:用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。
组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。
任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
IPv6地址类型是由地址前缀部分来确定,主要地址类型与地址前缀的对应关系如下:
IPv6组播地址
IPv6组播地址可识别多个接口,对应于一组接口的地址(通常分属不同节点)。发送到组播地址的数据包被送到由该地址标识的每个接口。使用适当的组播路由拓扑,将向组播地址发送的数据包发送给该地址识别的所有接口。任意位置的IPv6节点可以侦听任意IPv6组播地址上的组播通信。
IPv6节点可以同时侦听多个组播地址,也可以随时加入或离开组播组; IPv6组播地址的最明显特征就是最高的8位固定为1111 1111。IPv6地址很容易区分组播地址,因为它总是以FF开始的;
组播地址高8bit为固定值FF,此高8个bit中4bit为标志位,4bit为组播组的作用域,后112位为组ID,用以标识组播组。目前,RFC2373并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0。这样每个组播组ID都映射到一个唯一的以太网组播MAC地址。
被请求节点组播地址(Solicited-Node Address)
被请求节点组播地址通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。
被请求节点组播地址由前缀FF02::1:FF00:0/104和单播地址的最后24位组成。
例如:Node_B的单播地址为1::2:B ,其被请求节点组播地址为FF02::1:FF02:B
NDP
NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6协议体系中一个重要的基础协议。通过使用ICMPv6报文实现以下丰富的功能:
无状态自动配置(简化版的DHCP):路由器发现、前缀发现、参数发现;
重复地址检测(DAD),相当于IPv4的免费ARP;
地址解析,相当于IPv4的ARP;
邻居不可达检测(NUD);
路由器重定向。
与IPv4的ARP相比,IPv6地址解析技术工作在OSI参考模型的网络层,与链路层协议无关。ICMPv6的报文格式图1所示;ICMPv6消息类型中有5种是为了支持邻居发现协议而定义的,功能如图2描述:
重复地址检测DAD
重复地址检测DAD(Duplicate Address Detect)是在接口使用某个IPv6单播地址之前进行的,主要是为了探测是否有其它的节点使用了该地址。尤其是在地址自动配置的时候,进行DAD检测是很必要的。一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址(Tentative Address)。此时该接口不能使用这个试验地址进行单播通信,但是仍然会加入两个组播组:ALL-NODES组播组和试验地址所对应的 Solicited-Node组播组。
过程中使用了两种ICMPv6报文:邻居请求报文NS(Neighbor Solicitation)和邻居通告报文NA (Neighbor Advertisement)。
NS报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。
NA报文:Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。
IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向试验地址所对应的Solicited-Node组播组发送NS报文。NS报文中目标地址即为该试验地址。如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该试验地址通讯。
PC A的IPv6地址2000::1为新配置地址,即2000::1为PC A的试验地址。PC A向2000::1的Solicited-Node组播地址FF02::1:FF00:1发送一个以2000::1为请求的目标地址的NS报文进行重复地址检测,由于2000::1并未正式指定,所以NS报文的源地址为未指定地址。当PC B收到该NS报文后,有两种处理方法:
如果PC B发现2000::1是自身的一个试验地址,则PC B放弃使用这个地址作为接口地址,并且不会发送NA报文。
如果PC B发现2000::1是一个已经正常使用的地址,PC B会向FF02::1发送一个NA报文,该消息中会包含 2000::1。这样,PC A收到这个消息后就会发现自身的试验地址是重复的,从而弃用该地址。
地址解析
在IPv4中,当主机需要和目标主机通信时,需要先通过ARP协议获得目的主机的MAC地址。在IPv6中,同样需要从IP地址解析到MAC地址的功能,邻居发现协议实现了这个功能。
1、PC A在向PC B发送报文之前它要先解析出PC B的MAC地址,所以首先PC A会发送一个NS报文,其中源 MAC地址为PC A的MAC地址,目的MAC地址为PC B的被请求节点组播IP地址映射而来(将被请求节点组播地址的后32位取出,填充为固定前缀是3333的MAC地址);源IP地址为PC A的IPv6地址,目的IP地址为PC B的被请求节点组播地址,需要解析的目标IP为PC B的Pv6地址,这就表示PC A想要知道PC B的MAC地址。同时, NS报文还携带了PC A的MAC地址。
2、当PC B接收到了NS报文之后,就会回应NA报文,其中源地址为PC B的IPv6地址,目的地址为PC A的IPv6地址(使用NS报文中的PC A的MAC地址进行单播),同时包含PC B的MAC地址。这样就完成了一次地址解析的过程。
NUD邻居不可达检测
NUD(Neighbor Unreachability Detection,邻居不可达检测)的一个重要特征是检测同一链路上以前相连通的两个节点现在是否依然连通。NUD帮助维护多个邻居条目组成的邻居缓存,每个邻居都有相应的状态,状态之间可以迁移。分别是:
未完成(Incomplete):表示正在解析地址,但邻居链路层地址尚未确定。
可达(Reachable):表示地址解析成功,该邻居可达。 陈旧(Stale):表示可达时间耗尽,未确定邻居是否可达。
延迟(Delay):邻居可达性未知。Delay状态不是一个稳定的状态,而是一个延时等待状态。
探测(Probe):邻居可达性未知,正在发送邻居请求探针以确认可达性.
下面以A、B两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设A、B之前从未通信),说明邻居状态迁移的过程。具体迁移过程如图所示:
邻居状态迁移过程
1、A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
2、若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为 Empty,即删除表项。
3、经过邻居可达时间,邻居状态由Reachable(默认30s)变为Stale,即未知是否可达。
4、如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
5、在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
6、在经过一段固定时间后,邻居状态由Delay(默认5s)变为Probe(每隔1s发送一次NS报文,连续发送3次),其间若有NA应答,则邻居状态由Delay变为Reachable。
7、在Probe状态,A每隔1s发送单播NS,发送3次后,有应答则邻居状态变为Reachable,否则邻居状态变为 Empty,即删除表项。
IPv6数据转发
根据源和目的所处位置的不通,IP v6数据的转发模式主要分为两种:
同一链路上的数据转发;
不同链路上的数据转发。
同一链路上的数据转发主要通过两个技术:同一链路判断(On-link determination)和地址解析。数据转发以邻居缓存(类似ARP表)为基础。(前文已提及)
不同链路上的数据转发通过“PC-路由器-……-路由器-PC”转发,同IPv4一样,IPv6路由器和路由器间数据转发以IPv6路由表(完全类似ARP表)为基础,并由IPv6协议来维护。
IPv6的路由表项同IPv4一样通常有三种:
直连路由
静态路由
由动态路由协议发现的路由:RIPng、IS-ISv6、OSPFv3、BGP4+
1.4.2 IPv6过渡技术
针对IPv4过渡到IPv6的技术,业界主要分为三大类:双栈、隧道和地址转换。
1)IPv6/IPv4双协议栈技术
双栈技术是指在网络节点上同时运行IPv4 和IPv6 两种协议,从而在IP 网络中形成逻辑上相互独立的两张网络: IPv4 网络和IPv6 网络。网络中的节点同时支持IPv4和IPv6协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。
优点
互通性好,实现简单,允许应用逐渐从IPv4过渡到IPv6
缺点
网络设备要同时支持双栈 对每个IPv4节点都要升级,成本较大,没有解决IPv4地址紧缺问题
2)隧道技术
隧道技术指将另外一个协议数据包的报头直接封装在原数据包报头前,从而可以实现在不同协议的网络上直接进行传输,这种机制用来在 IPv4 网络之上连接 IPv6 的站点,站点可以是一台主机,也可以是多个主机。隧道技术将 IPv6 的分组封装到 IPv4 的分组中,或者把 IPv4 的分组封装到 IPv6 的分组中,封装后的 IPv4 分组将通过 IPv4 的路由体系传输或者 IPv6 的分组进行传输。
优点:
无信息丢失;网络运维相比较简单;容易实现,只要在隧道的入口和出口进行修改
缺点:
隧道需要进行封装解封装,转发效率低;无法实现 IPv4 和 IPv6 互通;无法解决 IPv4 短缺问题
3)地址转换
即NAT64 与DNS64 技术。NAT64 是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6 网络侧用户发起连接访问IPv4 侧网络资源。但NAT64 也支持通过手工配置静态映射关系,实现IPv4 网络主动发起连接访问IPv6 网络。NAT64 可实现TCP、UDP、ICMP 协议下的IPv6 与IPv4 网络地址和协议转换。DNS64则主要是配合NAT64 工作,主要是将DNS 查询信息中的A 记录(IPv4 地址)合成到AAAA 记录(IPv6 地址)中,返回合成的AAAA 记录用户给IPv6 侧用户。
DNS64及NAT64过程
五 NAT技术
1.5.1 NAT概述
随着接入Internet的计算机数量的不断猛增,早期网络通信协议和标准的组织已经意识到了IPv4地址马上被耗尽的危机,因此制定了短期措施,其中就包含NAT。
NAT(Network Address Translation,网络地址转换)是将IP 数据报报头中的IP 地址转换为另一个IP 地址的的功能。
通常,一个局域网由于申请不到足够互联网IP地址,或者只是为了编址方便,在局域网内部采用私有IP地址为设备编址,当设备访问外网时,再通过NAT将私有地址转换为合法的公网IP地址
公网IP和私网IP
公网IP是指在因特网上直接可达的IP地址,如果你有一个公网地址,那就意味着你不但能访问别人,还能被人访问。
为了弥补IPv4地址日益枯竭的矛盾,在A、B、C类地址中专门划出一小块地址作为全世界各地建设局域网使用,这些划出来专门作为局域网内网使用的IP地址称为私网IP地址。这些私网IP地址在访问 Internet 时会经过 NAT 技术转换为公网地址再访问 Internet。所以在公网上看不到这些私有地址。
NAT的优缺点
NAT带来便利的同时也伴随该技术的一些影响,具体如下:
静态NAT
NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用PAT。
静态转换是指将内部地址和外部地址进行一对一的转换。这种方法要求申请到的合法公网IP地址足够多,可以与内部IP地址一一对应。
静态NAT一般用于那些需要固定的合法IP地址的主机,比如Web服务器、FTP服务器、E-mail服务器等。
动态NAT
将多个合法IP地址统一的组织起来,构成一个IP地址池,当有主机需要访问外网时,就分配一个合法IP地址与内部地址进行转换,当主机用完后,就归还该地址。
对于NAT池,如果同时联网用户太多,可能出现地址耗尽的问题。
PAT
端口多路复用(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外网IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。
NAT在使用场景上分为SNAT(源地址NAT)、DNAT(目的地址NAT)和双向地址NAT。
1.5.2 SNAT
源地址转换即内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址,内网的多部主机可以通过一个有效的公网ip地址访问外部网络。
主要使用场景:局域网私网IP使用有限的公网IP访问互联网。
1.5.3 DNAT
当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT。
主要使用场景:主要用于内部服务对外发布。
1.5.4 双向NAT
常规地址转换技术只转换报文的源地址或目的地址,而双向地址转换(Bidirectional NAT)技术可以将报文的源地址和目的地址同时转换。
主要使用场景:内网用户通过外网IP/域名访问内网业务。
如果要求内网用户(192.168.1.1.)访问内网WEB服务器192.168.1.100,但必须通过访问公网IP200.1.1.1。且只是配置DNAT,能否满足这一需求?
双向地址转换
双向地址转换前后的数据包头:
NAT设备记录的NAT转换表有两条记录,SNAT和DNAT各一条。
DNAT:
NAT 只能对IP 报文的头部地址和TCP/UDP 头部的端口信息进行转换。对于一些特殊协 议,例如ICMP、FTP 、SIP等,它们报文的数据部分可能包含IP 地址或端口信息,这些内容不能被NAT有效的转换。
为了使得这些应用也能透明地完成NAT转换,NAT使用一种称作ALG(Application Level Gateway应用程序级网关)的技术,它能对这些应用程序在通信时应用层数据所包含的地址信息也进行相应的NAT转换。 通常网络设备的ALG功能均有单独的开关。
各产品线实现双向NAT方式--AC
方法1:先做一条端口映射(将PC的私网地址转换成AC外网口的公网地址),再做一条代理上网规则(将内网的源地址转换成AC内网口的地址)。
【系统管理】-【防火墙】-【端口映射】中新建高级规则
【系统管理】-【防火墙】-【NAT代理上网】新建规则如下:
方法2:直接做一条高级映射规则,勾选【发布服务器】选项(相当于是做了SNAT):将源IP转换成了AC内网口的IP。 【系统管理】-【防火墙】-【端口映射】中新建高级规则如下:
各产品线实现双向NAT方式--AF
直接做一条双向地址转换规则,【策略】-【地址转换】-【双向地址转换】中新建规则如下:
各产品线实现双向NAT方式--AD
先做一条目的地址转换,再做一条源地址转换 【网络部署】-【地址转换】-【目的地址转换】中新建规则
六 Wireshark 及 Tcpdump工具
1.6.1 网络世界望闻问切-Tcpdump
为什么要抓包?
定位网络接口问题
分析其他App数据接口
学习网络协议,使用抓包工具分析网络数据更直观
抓包的原理是什么?
要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。
但是中间网络节点,不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包
混杂模式:
混杂模式就是指网卡能接受所有通过它的数据流,不管是什么格式,什么地址的,这样网口所有数据包都可以交给应用层处理。正常情况下,设备只接受发给自己或广播地址。其它的地址在底层被转发或丢弃,这样数据不会将给应用层处理。
抓包工具说明
fidder windows平台最受欢迎抓包工具,免费、易用
charles Mac平台下最佳抓包工具,易于使用,收费软件,可一直试用
wireShark 老牌抓包工具,跨平台,功能齐全、强大
tcpdump 命令行程序,适用于手机系统和后台系统
Tcpdump简介
Linux系统作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。tcpdump是Linux系统中强大的网络数据采集分析工具之一。用简单的话来定义 tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。
Tcpdump命令格式
Tcpdump+参数+表达式
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s naplen ] [ -T 类型 ][ -w 文件名 ] [表达式 ]
Tcpdump常用参数
Tcpdum使用案例
-i 指定监听的网络接口
-c 截取指定数目的数据包
-nn 不把端口和网络地址转换成名称;
-s 截取指定大小的数据包
-w 将抓包内容保存到指定到文件
tcpdump利用表达式作为报文的过滤条件,表达式有如下三种类型关键字和逻辑运算符组成:
关于类型的关键字,主要包括host,net,port, 例如host 210.27.48.2,如果没有指定类型,缺省的类型是host
主要包括src , dst ,dst or src, dst and src ,这些关键字指明传输方向,缺省是src or dst关键字 。
取非运算是 ‘not ’ ‘! ’, 与运算是‘and’,‘&&’或运算 是‘or’ ,‘||‘
指定MAC地址抓包:
tcpdump -i eth0 -c 100 ether src 68:A1:B7:22:F7:38 -nne
同时抓多个地址,其中一个方向地址为多个:
tcpdump -i eth4 host 61.185.220.229 and host '(111.20.144.206 or 123.139.155.16 or 114.215.100.5 )' -nn
指定源、目IP地址抓包
tcpdump -i vpntun src 200.200.0.20 and dst 192.200.20.200 -nn
指定网段抓包
tcpdump -i eth1 src net 10.66.27.0/24 and dst port 80 -c 10 -nn
指定不抓某地址或者端口
按照正常的表达式加一个not就可以了
tcpdump -i eth2 host 1.1.1.1 and not port 22345 -nn -c 1000
1.6.2 万能的听诊器-Wireshark
Wireshark配置界面
Wireshark功能介绍
(文件) 打开或保存捕获的信息;
(编辑)查找或标记封包,进行全局设置;
(视图) 设置Wireshark的视图;
(跳转)跳转到捕获的数据;
(捕获)设置捕捉过滤器并开始捕捉;
(分析)设置分析选项;
(统计)查看Wireshark的统计信息;
(帮助)查看本地或者在线支持;
Wireshark功能介绍
这里显示的是在封包列表中被选中项目的详细信息; 信息按照不同的OSI layer进行了分组,可以展开每个项目查看。下面截图中展开的是HTTP信息;
解析器介绍
“解析器”在Wireshark中也被叫做“16进制数据查看面板”。这里显示的内容与“封包详细信息”中相同,只是改为以16进制的格式表述。在上面的例子里,在“封包详细信息”中选择查看TCP端口(80),其对应的16进制数据将自动显示在下面的面板中(0050)。
显示过滤器介绍
在Wireshark中有两种过滤器。
捕捉过滤器:在抓包之前设置,让Wireshark只抓取过滤器指定 的包。
显示过滤器:在桌包之前或者完成抓包之后都可,不影响抓包,只是方便查看。
Protocol(协议):
可以使用大量位于OSI模型第2至7层的协议。点击“Expression...”按钮后,可以看到对应的内容。 比如:IP,TCP,UDP,DNS,SSH
显示过滤运算符介绍
Comparison Operators(比较运算符):
可以使用以下几种运算符:
注意:
1、进行比较运算时,“等于”要使用“= =”或“eq”, 不能使用“=” ;
2、逻辑运算时,“逻辑与”要使用“&&”或“and”,而不能使用“&”;
3、逻辑运算时,“逻辑或”要用“||”或“or”;
4、表达式区分大小写,如 “udp”不能写成“Udp”或“UDP”,“eq”不能写成“Eq”,等。
表达式语法正确,Filter栏背景色为绿色显示,Enter(回车)后,过滤显示符合对应条件的封包,语法错误背景色为红色,Enter(回车)后,会弹出错误提示信息,不会显示出对应条件的封包。
常用表达举例:
追踪TCP Stream流
如果是在抓取和分析基于TCP协议的包,从应用层的角度查看TCP流的内容有时是非常有用的。要查看TCP流的内容,只需要选中其中的任意一个TCP包,选择右键菜单中的“Follow tcp stream”即可。
这里有一个技巧可以比较简单方便的查看一条数据会话流的内容,具体操作方法:在单个数据包上面执行“Follow TCP Stream”,如下图:
捕获过滤器可以根据过滤命令,抓取相关的数据包
捕获过滤器常用命令
1.只捕获某主机的所有流量
host 192.168.5.231 #捕获源目主机均为192.168.5.231
dst 192.168.5.231 #捕获目的主机均为192.168.5.231
src 192.168.5.231 #捕获来源主机均为192.168.5.231
net 192.168.5.0/24 #捕获网段为d192.168.5的所有主机的所有流量
2.只捕获特定端口的流量
tcp portrange 8000-9000 and port 80
#捕获tcp协议端口8000-9000之间和80端口的流量
port 5060
#捕获sip流量,因为sip的默认端口是5060。举一反三:port 22 #捕获ssh流量
3.捕获vlan 的流量
捕获命令中带有vlan字段,可以捕获接口上有vlan标签的数据,具体使用方法:
vlan and (host 192.168.5.0 and port 80)
#捕获vlan 中主机192.168.5.0 ,前提是有vlan,在wifi中不一定可以捕获到相应的流量,局域网 (二层环境中vlan标签很常见)
4.只(不)捕获APR流量
host 192.168.5.231 and arp #只捕获主机192.168.5.231 的arp流量。
host 192.168.5.231 and !arp #只捕获主机192.168.5.231 除arp外的所有流量。
arp #捕获接口中的所有arp请求
!arp #捕获接口中所有非arpq请求。
5.只捕获某主机的DNS流量
host 192.168.5.231 and port 53 # 只捕获主机192.168.5.231 的dns流量;
src 192.168.5.231 and port 53 #只捕获主机192.168.5.231 对外的dns 的流量 ;
dst 192.168.5.231 and port 53 #只捕获相应主机192.168.5.231的dns流量;
port 53 #捕获接口中的所有主机的dns流量;
6.只(不)捕获某主机的HTTP流量
host 192.168.5.231 and port 80 and http
#只捕获主机192.168.5.231 的http流量。注意如果HTTP端口为8080,需将80 改为8080;
port 80 and http
#捕获所有经过该接口的http流量。注意如果你的HTTP端口为8080,需将80改为8080;
not port 80
# 捕获除 http 之外的其他所有流量,注意如果你的HTTP端口为8080,需将80改为8080;
not port 80 and !http
# 捕获除 http 之外的其他所有流量,注意如果HTTP端口为8080,需将80改为8080;
七 NetworkMonitor 及 Httpwatch 工具
1.7.1 流量分析仪-Network Monitor
Microsoft Network Monitor是微软发布的一款网络协议数据分析工具, 是一款免费的网络流量实时监控软件,能够将计算机上的各种网络接口装置显示在同一个画面之中,并且告诉使用者每一个接口的实时流量,不论是流入或流出,都能够清楚显示。软件本身并不需亦任何设定,使用者只要单纯的执行就能够享受到它的功能,且程序本身是采取每一秒更新一次的方式,绝对让使用者随时掌握最实时的网络流量讯息。
Microsoft Network Monitor在微软官网上
下载链接: https://www.microsoft.com/en-us/download/details.aspx?id=4865
Netework Monitor启动界面
使用案例演示
需求背景: 因某需求,需要捕获分析QQ使用的网络服务器IP、协议、端口,并把该应用程序产生的网络数据保存,可供wireshark进行其他分析。
当然,可以尝试直接使用wireshark在电脑上进行抓包,最大的困难是抓取了所有网络数据,几乎没有办法完全剥离出QQ应用使用的数据。因此需要一个能基于应用/进程抓包的工具, Microsoft Network Monitor可以很容易满足这个需求。
选择“New Capture”开始一个新的捕获会话
选择“Start”启动该会话的捕获数据动作
已经开始的捕获会话
可以选择“Pause”或“Stop”对捕获会话进行暂停或停止
如果没有看到按照会话分类的视图,如下图框红样式,可以点击菜单:View-Network Conversations
Network Conversations窗口显示了各应用/进程的网络会话,每一行都显示了不同目的IP或协议端口,因此一个应用/进程如果与服务端进行了多个IP、协议端口进行通信,会显示多行。
Frame Summary显示了捕获的具体网络数据,鼠标右键可以选择显示的模式,可以体验一下各种模式的区别。
Network Conversations窗口显示了各应用/进程的网络会话,每一行都显示了不同目的IP或协议端口,因此一个应用/进程如果与服务端进行了多个IP、协议端口进行通信,会显示多行。
菜单“Save As”可以对数据进行保存,可以选择保存方式,保存所有捕获数据、显示的数据、选择的数据、数据序号范围四种方式,保存文件类型为cap,其他网络分析软件可以打开。如图所示:
l 尝试捕获电脑客户端应用有道云的网络数据,分析其使用的服务器IP、协议、端口,并将该应用的网络数据保存为cap文件,使用wireshark打开查看。
1.7.2 网页内抓取器-Httpwatch
工具简介
HttpWatch是强大的网页数据分析工具,集成在Internet Explorer工具栏。包括网页摘要、Cookies管理、缓存管理、消息头发送/接受、字符查询、POST 数据和目录管理功能,并输出对应的报告。HttpWatch是一款能够收集并显示深层信息的软件。它不用代理服务器或一些复杂的网络监控工具,就能够在显示网页同时显示网页请求和回应的日志信息。甚至可以显示浏览器缓存和IE之间的交换信息。集成在Internet Explorer工具栏。
程序操作界面
Http watch界面功能介绍
在浏览器中打开Httpwatch工具
Http watch界面打开之后,点击【Record】开始抓包
网络协议
2.1 标准协议栈模型
2.1.1 TCP/IP四层模型和OSI七层模型回顾
OSI七层模型
需求背景
在网络最开始产生的时候,只有同一家厂商生产的计算机之间才能彼此通信。随着网络范围的扩大,急需要改变这种局面,所以ISO组织开发了OSI模型
功能介绍
OSI模型是一个七层的来描述通信系统的模型。
OSI模型是一个分层框架,其目的就是能够设计出让各类计算机系统都能互相通信的网络系统。每一层都定义了信息通过网络传输的完整过程中的一部分。
每一层都有独立的分工,但是各层之间又是相互联系的。处于一台机器上的每一层都要调用紧挨的下一层的服务。 层之间存在一个接口。确保了数据能逐层向下传输,又能逐层向上交付。每一层都有一个字段去定义上一层提供了什么服务。定义清晰的接口和功能可以使网络模块化。
封装是OSI模型数据通信的一个特点。上层的数据会封装到下一层中,以此类推直到数据每一层的数据都封装完毕。
ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。TCP/IP协议栈获得了更为广泛的应用 TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。
TCP/IP四层模型和OSI七层模型
2.1.2 数据包封装与解封装
数据封装过程
封装:OSI参考模型中每个层次接收到上层传递多来的数据后都要将本层次的数据信息加入数据单元的头部,一些层次还要讲校验和等信息附加但数据单元的尾部。
解封装:当数据到达接收端时,每一层读取相应的控制信息,根据控制信息中的内容向上层传递数据单元,在向上层传递之前去掉本层的控制头部信息和尾部信息 应用层表示层
2.1.3 每个层常见的协议及作用
OSI七层----物理层
物理层功能:
规定介质类型、接口类型、信令类型;
规范在终端系统之间激活、维护和关闭物理链路的电气、机械、流程和功能等方面的要求;
规范电平、数据速率、最大传输距离和物理接头等特征。
同轴电缆(coaxical cable)
双绞线(twisted pair)
光纤(fiber)
无线电波(wireless raido)
OSI七层----数据链路层
数据链路层:
数据链路层又分为MAC子层和LLC子层
数据链路层协议
数据链路层协议规定了数据链路层帧的封装方式。
局域网常用的数据链路层协议有IEEE802.2 LLC标准。
广域网常用的数据链路层协议有:
HDLC(high-level data link control,高级数据链路控制)
PPP(point-to-point protocol,点到点协议)
FR(frame relay,帧中继)
OSI七层----网络层
功能:
在不同的网络之间转发数据包
提供逻辑地址,如果数据跨网络传递,则需要使用逻辑地址来寻址。
路由:将数据报文从一个网络转发到另一个网络
常用网络层协议有:
IP(Internet Protocol):IP为网络层最主要的协议,其功能即为网络层的主要功能,一是提供逻辑编址,二是提供路由功能,三是报文的封装和解封装。ICMP、ARP、RARP协议辅助IP工作。
ICMP(Internet Control Message Protocol)是一个管理协议并为IP提供信息服务,ICMP消息承载在IP报文中。
ARP(Address Resolution Protocol)实现IP地址到硬件地址的动态映射,即根据已知的IP地址获得相应的硬件地 址。
RARP(Reverse Address Resolution Protocol)实现硬件地址到IP地址的动态映射,即根据已知的硬件地址获得相应的IP地址。
OSI七层----传输层
功能:
分段上层数据;
建立端到端连接;
将数据从一端主机传送到另一端主机;
保证数据按序、可靠、正确传输
常用传输层协议:
传输控制协议TCP(transfer control protocol)
TCP提供面向连接的、可靠的字节流服务。面向连接意味着使用TCP协议作为传输层协议的两个应用之间在相互交换数据之前必须建立一个TCP连接。TCP通过确认、校验、重组等机制为上层应用提供可靠的传输服务。但是TCP连接的建立以及确认、校验等机制都需要耗费大量的工作并且会带来大量的开销。
用户数据报文协议UDP(user datagram protocol)
UDP提供简单的、面向数据报的服务。UDP不保证可靠性,即不保证报文能够到达目的地。UDP适用于更关注传输效率的应用,如SNMP、Radius等,SNMP监控网络并断续发送告警等消息,如果每次发送少量信息都需要建立TCP连接,无疑会降低传输效率,所以诸如SNMP、Radius等更注重传输效率的应用程序都会选择UDP作为传输层协议。另外,UDP还适用于本身具备可靠性机制的应用层协议
OSI七层----会话层
主要任务:
向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
功能:
会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。
会话流量控制:提供会话流量控制和交叉会话功能。
寻址:使用远程地址建立会话连接。
出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误
OSI七层----表示层
主要任务:
它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。
功能:
数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
数据的加密和解密:可以提高网络的安全性。
OSI七层----应用层
主要任务:
计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务
功能:
用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。
2.2 ARP协议
2.2.1 ARP需求背景
在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?
它就是通过ARP(地址解析协议)获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
2.2.2 ARP概述及工作原理(arp请求和回应的过程)
ARP协议概述
Address Resolution Protocol 地址解析协议
作用:把 IP地址解析为 MAC地址,知道IP求MAC
数据在以太链路上以以太网帧的形式传输,要在以太网中传输IP数据包,必须知道IP对应的MAC地址
同网段的通信
ARP地址解析过程
ARP缓存
ARP缓存
› 动态表项
› 通过ARP协议学习,能被更新,缺省老化时间120s
› 静态表项
› 手工配置,不能被更新,无老化时间的限制
ARP报文
2.2.3 免费ARP概述及案例
免费ARP (Gratuitous ARP)
大家肯定都遇到过这种情况
请问系统是如何检测IP地址冲突的?
大家现在动手测试和分析一下
Gratuitous ARP ,是广播报文
Gratuitous ARP中的报文,它的源目标的IP是一样的,目的是为了再次确认网络中的身份
我们的PC,开机或者更改了IP地址,会发送免费ARP
› 发送ARP请求,其中Target IP是自己的IP
› 确定其它设备的 IP地址是否与本机 IP地址冲突。
› 更改了地址,通知其他设备更新 ARP表项
IP地址发生冲突的条件
收到Gratuitous ARP报文,且Sender/Target IP与当前IP一致,但Sender MAC与当前MAC不同
主机或网络设备怎么判断IP冲突
IP地址发生冲突的条件
收到Gratuitous ARP报文,且Sender/Target IP与当前IP一致,但Sender MAC与当前MAC不同
2.2.4 代理ARP概述及案例
代理ARP (Proxy ARP)
Proxy arp是为了分割网络,同时又不想划分网段,中间加设一个路由设备并开启arp代理功能,就能通过 router代为回应双方的arp请求和应答。
由启动了代理ARP功能的网关/下一跳设备代为应答ARP请求,该ARP请求的是其他IP对应的MAC地址
回应ARP请求的条件:
本地有去往目的IP的路由表
收到该ARP请求的接口与路由表下一跳不是同一个接口
ARP代理工作过程
ARP代理工作过程
1、ARP请求真实目的站ARP请求
2、ARP路由器代理应答
3、路由器给真实目的站ARP请求
4、真实目的站应答路由器
ARP代理的应用场景
场景描述:
1、客户原有的服务器是直连部署在公网,配置了公网IP。
2、出于安全考虑,客户购买了一台防火墙,采用路由模式部署在出口,做安全防护。
3、部署防火墙后引入的问题:客户需要调整服务器ip,但是客户服务器修改IP比较麻烦,客户不愿意做调整。
那有什么解决方法?
在防火墙上配置ARP代理,将原有公网IP映射到客户服务器的新IP地址。
1. **DMZ(Demilitarized Zone):**
DMZ是网络架构中的一个区域,通常位于防火墙内外之间。DMZ通常用于放置公共可访问的服务,如Web服务器、邮件服务器等。这些服务器可以直接与外部网络通信,同时通过防火墙进行保护以确保安全性。
2. **AF(Access Firewall):**
"AF"可能指访问防火墙,它是防火墙的一种类型,用于控制外部网络对内部网络资源的访问。AF可以实施访问控制策略,限制哪些外部请求可以通过防火墙访问内部服务器。
3. **WAN(Wide Area Network):**
WAN是指覆盖广大地理区域的网络,通常用于连接远程地点。在您的场景中,WAN是指连接公网和客户网络的网络。
4. **LAN(Local Area Network):**
LAN是指局域网,通常是一个相对较小的地理区域内的网络,例如办公室、学校或家庭中的网络。
RARP概述
Reverse Address Resolution Protocol 反向地址解析协议
把MAC地址解析为IP地址
用于无盘工作站
2.3 TCP及UDP协议
2.3.1 TCP协议概述
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。
TCP报文结构
TCP报文结构
[源端口:标识发送方的应用进程。目的端口:标识接收方的应用进程。
[序号:保证数据传输的有序性。确认号:对收到的数据进行确认。
[Flag字段(8位)
ACK ‒确认号标志,置1表示确认号有效,表示收到对端的特定数据
RST ‒复位标志,置1表示拒绝错误和非法的数据包,复位错误的连接
SYN ‒同步序号标志,置1表示同步序号,用来建立连接
FIN ‒结束标志,置1表示连接将被断开,用于拆除连接
[Option字段(可选项)
MSS最大报文段长度,通过置位,协商能承载的TCP数据的大小
TCP报文结构
[源端口:标识发送方的应用进程。目的端口:标识接收方的应用进程。
[序号:保证数据传输的有序性。确认号:对收到的数据进行确认。
[Flag字段(8位)
ACK ‒确认号标志,置1表示确认号有效,表示收到对端的特定数据
RST ‒复位标志,置1表示拒绝错误和非法的数据包,复位错误的连接
SYN ‒同步序号标志,置1表示同步序号,用来建立连接
FIN ‒结束标志,置1表示连接将被断开,用于拆除连接
[Option字段(可选项)
MSS最大报文段长度,通过置位,协商能承载的TCP数据的大小
主机到主机层
源端口随机分配,目标端口使用知名端口(Well-known port) ;
应用客户端使用的源端口号一般为系统中未使用的且大于1023;
目的端口号为服务端开启的服务所侦听的端口,如HTTP缺省使用80。
TCP端口号、序列号及确认号
2.3.2 TCP协议三次握手及四次挥手
TCP协议的三次握手建立连接
四次挥手断开连接
面向字节流
流量控制—滑动窗口机制
窗口大小 决定了在收到确认前可以发送的字节数
可靠传输—停止等待协议
拥塞控制
RST断开连接的过程和作用
RST标志位 (复位标志,用于非正常地关闭连接)
关闭TCP连接的正常方法是四次握手。但是是不是只有四次握手才能关闭TCP连接?
RST 标志位
作用:用于复位因某种原因导致的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误
RST可能被接收方或者中间设备置位
RST置位的原因
‒服务器端口没有打开(listen)
‒服务器响应太慢,用户终止连接
‒网络攻击
‒其他
RST标志位
2.3.3 UDP协议概述
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接(只管发不管收)的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
UDP报文结构
UDP协议特点
1.因为UDP是无连接的。在传输数据之前,不需要进行复杂的三次握手来建立连接。
2.在传输数据时,没有协议间通信流量(确认信号),也不需要浪费不必要的处理时间(接收确认信号再发一下)。
3.传输结束后,也不用再用四次握手握手来结束连接。
2.3.4 TCP及UDP案例
TCP案例
当我们去访问www.sangfor.com.cn时,解析到网站IP地址后,客户端和服务端的数据包交互是怎样的?
访问一个网站
当我们去访问www.sangfor.com.cn时,解析到网站IP地址后,客户端和服务端的数据包交互是怎样的?
当我们去关闭访问时客户端和服务端的数据包交互是怎样的?
UDP案例
微信视频
TCP和UDP的对比总结
TCP和UDP的对比总结
TCP适用场景:
当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常的时候。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。
TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件 (POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等
UDP适用场景:
1.在高效可靠的网络环境中(不需要考虑网络不好导致的丢包、乱序、延时、重复等问题),因为UDP是无连接的服务,不用消耗不必要的网络资源(TCP中的协议间通信)和处理时间(预期确认需要的时间),从而效率要高的多。
2.在轻权通信中,当需要传输的数据量很小(可以装在一个IP数据包内)时。如果我们使用TCP协议,那么,先建立连接,一共需要发送3个IP数据包,然后数据传输,1个IP数据包,产生一个确认信号的IP包,然后关闭连接,需要传输5个IP数据包。使用TCP协议IP包的利用率为1/10。而使用UDP,只需要发送一个IP数据包。哪怕丢包(服务不成功),也可重新申请服务(重传)。 UDP很适合这种客户机向服务器传送简单服务请求的环境。此类应用层协议包括TFTP , SNMP , DNS ,DHCP等。
3.在对实时性要求很强的通信中:在诸如实时视频直播等对实时性要求很高的环境中,从而允许一定量的丢包的情况下(直播比赛,前面丢失的包,重传出来已经意义不大了),UDP更适合。(可以根据具体需要通过应用层协议提供可靠性,不用像TCP那么严格。)
2.4 DNS协议
2.4.1 DNS协议背景
在Internet网中连接着数量众多的主机,要让这些主机进行通信,需要有一套名字标识体系,让主机之间能够彼此找到对方,我们可以用多种方式进行主机标识,如使用主机名标识一台主机,当然,我们更多是用IP地址来标识计算机,主机在互联网上靠IP地址进行位置标识。
在internet的前身ARPAnet的年代,整个网络中只有几百台主机,所有主机信息以及主机名与地址的映射记录都存放在一个名为HOSTS.TXT的文件中。HOSTS.TXT从一台名为SRI-NIC的主机上分发到整个网络,这台主机由斯坦福研究院的网络信息中心负责维护。ARPAnet的管理员们通过电子邮件的方式将变更信息通知NIC,同时定期FTP到SRI-NIC上,获得最新的HOSTS.TXT文件。
在20世纪70年代束,整个ARPAnet只有200台主机。 但是到了80年代,ARPAnet上主机数量飞速增长,到80年代末期主机总数增加到10万台,这种人工更新的方式显然不再适用了。频繁更新HOSTS.TXT造成了网络流量和处理器负载增加,并且名字冲突和数据一致性维护越来越困难。 为了解决这一问题,网络管理者们希望找到一种合理的方法来解决主机信息的维护问题,既能分散管理,又能及时进行全网更新和同步,并且采用层次化的名字空间,保证主机名的全网唯一性。1984年,南加州大学信息科学所的Paul Mockapnris发布了描述DNS(英文全称为Domain Name System,中文意思是域名系统)的RFC 882和RFC 883,就是最初的DNS规范,DNS系统诞生了。
DNS的产生过程
DNS概述
DNS(Domain Name System,域名系统)是互联网上是一种层次结构的基于域的命名方式和实现这种命名方式的分布式数据库,其中记录了各种主机域名与 IP 地址的对应关系,能够使用户更加方便的访问网站。用户可以直接输入域名登录网站,DNS会将域名解析成IP地址,然后用户根据这个IP地址找到相应的网站,从而访问到域名对应的网站,通过主机名获取到主机名对应IP地址的过程叫作域名解析。
DNS协议建立在UDP协议之上,在某些情况下可以切换到TCP,使用端口号53,是一种客户/服务器服务模 式。
2.4.2 DNS协议概述
域: 域是一个逻辑上的概念,在初始瓜分互联网的时候,Internet组织将世界上的计算机划分为了若干个大类,如com、gov、org、net、edu、cn、us等等
每一个大类我们称之为一个域
在每个大类里面划分出比较小一点的,成为子域,域是可以嵌套的,大域包含小域,小域可以包含更小的域域名:
在每个域里面都有很多主机,每个主机都有一个主机名,我们在这个主机名后面冠上主机所在域的名称成为该主机在Internet网络上的域名。
域名结构:域名是一个树状层次结果,联机分布式数据库系统,最高的根域名服务器维护最高级别域名服务器记录,后者维护下一级域名服务器的记录 “.”
域名服务器:负责名字到地址的解析。
域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
根据域名结果可以把域名服务器划分为以下四种类型:
(1)根域名服务器;
(2)顶级域名服务器;
(3)权威域名服务器;
(4)本地域名服务器。
每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)
如果根据DNS服务器管理的区域地址数据的来源不同,DNS 系统可以分为不同的类型。在同一台 DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下
主域名服务器:维护某一个特定 DNS 区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。
从域名服务器:与主域名服务器提供完全相同的 DNS 解析服务,通常用于 DNS 服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询的结果都一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定的, 而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置, 以便服务器能自动同步区域的地址数据库。
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。
2.4.3 DNS工作原理
DNS的工作模式
DNS 查询以各种不同的方式进行解析,客户机可通过使用从以前查询获得的缓存信息就地应答查询,DNS服务器也可使用其自身的资源记录信息缓存来应答查询。但更多是使用下列两种方式:
递归解析
DNS服务器收到一个域名解析请求时,如果所要检索的资源记录不在本地,DNS服务器将和自己的上一层服务器交互,获得最终的答案,并将其返回给客户
迭代解析
DNS服务器收到解析请求,首先在本地的数据库中查找是否有相应的资源记录,如果没有,则向客户提供另外一个DNS服务器的地址,客户负责把解析请求发送给新的DNS服务器地址
DNS域名解析的过程图示
DNS工作原理
DNS工作原理示例
1.当在浏览器中输入URL时,浏览器会先 检查自己的缓存是否有域名IP的映射关系,有则直接使用IP进行通信;
2.如浏览器没有缓存,则操作系统检查本地Hosts文件是否有域名IP的映射关系,有则使用IP进行通信;
3.如果hosts没有这个域名的映射,则查找本地DNS解析器缓存是否有映射关系,有则直接返回完成域名解析;
4.如果还未找到映射关系,首先会找 TCP/IP参数中设置的首选DNS服务器,也就是常称的本地DNS服务器,如果服务器已缓存了映射关系,则使用这个IP地址映射返回完成域名解析,此时解析不具有权威性;
5.如果本地DNS服务器缓存已经失效,进行递归查询。
2.4.4 DNS常见的记录及作用
DNS记录类型
域名和IP之间的对应关系,称为“记录”(record)。根据记录使用的目的不同,又分为不同的类型,常见的D NS记录类型如下:
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;
A:地址记录(Address),返回域名指向的IP地址。
NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。
PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。
资源记录定义的格式:
记录一条域名信息映射关系,称之为资源记录(RR)。
当我们查询域名www.sangfor.com的时候,查询结果得到的资源记录结构体中有如下数据:
1、TTL,生存周期,是递归服务器会在缓存中保存该资源记录的时长,即客户端的到解析结果的缓存时长,可从全局继承 。
2、网络/协议类型,它的代表的标识是IN,IN就是internet,目前DNS系统主要支持的协议是IN。
3、type,就是资源记录类型,一般的网站都是都是A记录(IPv4的主机地址)。
4、rdata是资源记录数据,就是域名关联的信息数据。
SOA记录:
name: 当前区域的名字,例如“sangfor.com.”;
value: 有多部分组成
当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
录前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如admin.sangfor.com;
(主从服务协调属性的定义以及否定的答案的统一的TTL)
例如:
sangfor.com. 86400 IN SOA ns.sangfor.com. nsadmin.sangfor.com. (2020032201 ;序列号 2H ;刷新时间 10M ;重试时间 1W ;过期时间 1D ;否定答案的TTL值)
A记录:
name: 某主机的FQDN,例如www.sangfor.com.
value: 主机名对应主机的IP地址;
例如:
www.sangfor.com. IN A 1.1.1.2
mx1.sangfor.com. IN A 1.1.1.3 mx2.sangfor.com. IN A 1.1.1.3
注意:
*.sangfor.com. IN A 1.1.1.4
Sangfor.com. IN A 1.1.1.4
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;
NS记录:
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.sangfor.com.;
注意:一个区域可以有多个NS记录;
例如:
sangfor.com. IN NS ns1.sangfor.com.
sangfor.com. IN NS ns2.sangfor.com.
注意:
相邻的两个资源记录的name相同时,后续的可省略;
对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录;
MX记录:
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名;
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高;
例如:
magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.
注意:
(1) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录;
CNAME记录:
name: 别名的FQDN
value: 正式名字的FQDN;
例如:
web.sangfor.com. IN CNAME www.sangfor.com
PTR记录:
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addra.arpa.
value:
FQDN例如:
4.3.2.1.in-addr.arpa. IN PTR www.sangfor.com
简写成:
4 IN PTR www.sangfor.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写;
2.5 HTTP及HTTPS协议
2.5.1 HTTP需求背景
万维网(www)
Http是 一种网络协议,也是互联网上应用最为广泛的一种,http也叫超文本传输协议,所有的html文件都是遵循这个标准进行传输的。
HTTP的出现是为了提供一种发布和接收HTML页面的办法。
2.5.2 HTTP概述及工作原理
HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Internet上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。
功能:用于在服务器和客户机之间传输超文本文件
HTTP工作原理
HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Internet上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。
URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。如:
功能:用于在服务器和客户机之间传输超文本文件
请求/响应交互模型
在用户点击URL为http://www.qq.com/index.html的链接后,浏览器和Web服务器执行以下动作:
HTTP的连接方式和无状态性
非持久性连接
即浏览器每请求一个Web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放。
持久性连接
即在一个连接中,可以进行多次文档的请求和响应
无状态性
是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。
2.5.3 HTTPS需求背景
随着网络通信的电子商务等服务和资源进入人们的生活,人们在享受网络带来的便利的同时,面临着各种各样的安全隐患。
传统的很多网站都是基于HTTP协议的。HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
2.5.4 HTTPS概述及工作原理
功能介绍
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)
是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与 TCP之间)。这个系统提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题,因此我们可以简单的认为HTTPS就是使用 TLS/SSL加密的HTTP协议。
HTTPS和HTTP的区别在哪里
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输https则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
HTTPS架构
HTTPS工作原理
SSL
SSL(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。 SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
SSL协议的功能
保证传输数据的保密性
保证传输数据的完整性
实现通信双方的互相身份认证。
SSL加密 •
密码:对文本进行编码 •
密钥:改变密码行为的数字化参数
对称密钥加密系统:编/ 解码使用相同密钥的算法
非对称密钥加密系统:编/ 解码使用不同密钥的算法 数字签名:用来验证报文未被伪造或篡改的校验和
数字证书:由一个可信的组织验证和签发的识别信息
SSL握手
对称加密和非对称加密
HTTPS在传输数据。
握手过程的简单描述如下:
1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.获得网站证书之后浏览器要做以下工作:
验证证书的合法性
生成一串随机数的密码,并用证书中提供的公钥加密。
使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4.网站接收浏览器发来的数据之后要做以下的操作:
使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证 HASH是否与浏览器发来的一致。
使用密码加密一段握手消息,发送给浏览器。
5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
2.5.5 HTTP及HTTPS案例分析
案例:
访问http://192.200.200.163抓包进行分析 ?
访问https://www.baidu.com/网站抓包进行分析 ?
2.6 DHCP协议
2.6.1 DHCP需求背景
减少错误
通过配置DHCP,把手工配置IP地址所导致的错误减少到最低程度,例如已分配的IP地址再次分配给另一设备所造成的地址冲突等将大大减少。
减少网络管理
1、TCP/IP配置是集中化和自动完成的,不需要网络管理员手工配置。网络管理员能集中定义全局和特定子网的TCP/IP配置信息。
2、使用DHCP选项可以自动给客户机分配全部范围的附加TCP/IP配置值。客户机配置的地址变化必须经常更新,比如远程访问客户机经常到处移动,这样便于它在新的地点重新启动时,高效而又自动地进行配置。
3、同时大部分路由器能转发DHCP配置请求,这就减少了在每个子网设置DHCP服务器的必要,除非有其它原因要这样做。
2.6.2DHCP概述与工作原理
DHCP是Bootstrap协议的一种扩展,基于UDP协议,客户端的端口号是68,服务端的端口号是67。
DHCP协议特性
1、保证任何IP地址在同一时刻只能由一台DHCP客户机所使用
2、DHCP应当可以给用户分配永久固定的IP地址
3、DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
4、DHCP服务器应当向现有的DHCP客户端提供服务
DHCP数据包结构
DHCP概述
常用的option:
1 netmask
3 router
6 DNS
12 host name
51 ip address lease time
53 message type (dhcp报文8种类型,下一页介绍)
54 server identification
55 parameter request list (需要服务器给你提供哪些东西:ip地址,域名,网关)
61 client identification
82 relay agent
255 end
DHCP报文8种类型:
DHCP协议工作原理
DHCP (Dynamic Host Configuration Protocol)是一种动态的向Internet终端提供配置参数的协议。在终端提出申请之后,DHCP服务端可以向终端提供IP地址、网关、DNS服务器地址等参数。
2.6.3 DHCP案例
客户机在本网段内广播DHCPDISCOVER报文已发现网络中的DHCP服务器
服务器向客户机回应请求,并给出一个可用的IP地址。但在给出此地之前,应当用ICMP ECHO REQUEST报文进行检查,检查是否有其他机器配置此IP地址。
如果收到多个DHCPOFFER报文,DHCP客户机会根据报文的内容从其中选择一个给与响应。如果客户机之前曾经获得过一个IP地址,它会将此地址写在DHCPREQUEST报文的OPTIONS域的“REQUESTD IP ADDRESS”中发给服务器。
当收到DHCPREQUEST报文后,服务器将客户机的网络的(网络地址,硬件地址)同分配的IP地址绑定,在将IP地址发送给客户机。
当收到DHCPREQUEST报文后,如果发现其申请的地址无法被分配,则用DHCPNAK报文回应
客户机收到DHCPACK报文后,再对所有的参数进行一次最后的检查,如果发现由地址冲突存在,则使用DHCPDECLINE报文回复服务器
如果客户机放弃现在使用的IP地址,则她使用DHCPRELEASE报文通知服务器,服务器将此地址回收以备下次使用。
DHCP中继
考虑到成本,无需每个子网都配备一台DHCP服务器,所以DHCP协议应当可以通过路由器或者BOOTP代理透传(DHCP中继)。
由于DHCP请求报文采用广播方式发送报文,因此当DHCP客户端和DHCP服务器处于不同子网时,必须要通过DHCP中继进行通信,最终获取到IP地址。
多个网络上的DHCP客户端可以使用同一个DHCP服务器,既节省了成本,又便于进行集中管理。
2.6.4 DHCP中继及DHCP snooping(DHCP窥探)概述
DHCP Snooping是 DHCP 的一种安全特性,主要应用在 交换机 上,作用是屏蔽接入网络中的非法的 DHCP 服务器。即开启 DHCP Snooping 功能后,网络中的客户端只有从管理员指定的
DHCP 服务器获取 IP 地址。
DHCP在设计上未从分考虑安全因素,从而留下了许多安全漏洞,使得DHCP很容易受到攻击。实际网络中,针对DHCP的攻击行为主要有以下三种:
DHCP饿死攻击
仿冒DHCP Server攻击
DHCP中间人攻击
DHCP饿死攻击
攻击原理:攻击者持续大量的向DHCP Server申请地址,直到耗尽DHCP Server地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配。
解决方法:通过校验CHADDR与MAC值。
仿冒DHCP Server攻击。
攻击原理:攻击者仿冒DHCP Server,向客户端分配错误的IP地址及提供错误的网关地址等,导致客户端无法正常访问网络。
解决办法:通过配置trust与untrust口区分转发。 仿冒DHCP server
中间人攻击
攻击原理:攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系,又让Server学习到 IP-A与MAC-B的映射关系。如此一来,PC-A与Server之间交付的IP报文都会经过攻击者中转。
解决办法:开启ARP检测。
2.7 FTP协议
2.7.1 FTP需求背景
为了提高文件的共享性,在本地主机和远程主机之间高效传送数据。FTP协议被广泛使用在互联网上的文件传输。
客户端/服务器模式,基于TCP
FTP采用双TCP连接方式
控制连接使用TCP端口号21
数据连接使用TCP端口号20
FTP有两种文件传输模式
ASCII模式
二进制流模式
FTP采用两种数据传输方式
主动方式
被动方式
FTP协议简介
FTP双TCP连接方式
控制连接
用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息。控制连接在整个FTP会话期间一直保持打开
数据连接
用于传输数据,包括数据上传、下载、文件列表发送等。数据传输结束后数据连接将终止
FTP文件传输模式
ASCII模式是默认的文件传输模式,主要特点是:
本地文件转换成标准的ASCII码再传输
适用于传输文本文件
二进制流模式也称为图像文件传输模式,主要特点是:
文件按照比特流的方式进行传输
适用于传送程序文件
2.7.2 FTP主动模式工作过程
在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。
主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:
FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输。
2.7.3 FTP被动模式工作过程
在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式。
被动方式也称为PASV方式,被动方式的主要特点是:
FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端
当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输。
2.7.4 FTP案例
FTP主动模式数据包解析
主被动模式总结
为什么FTP要有主动和被动模式呢?
主动模式对FTP服务器的管理有利,但对客户端的管理不利。
因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
被动模式对FTP客户端的管理有利,但对服务器端的管理不利。
因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
1、FTP主动被动模式是指什么?
2、主动、被动是谁来决定?
3、主动被动模式会有哪些网络要求?
2.8 邮件协议
2.8.1 常见的邮件协议
smtp,imap,pop(pop-v2版本),pop3(pop-v3版本)
smtps(smtp-over-ssl)经过SSL加密版本的协议
imaps(imap-over-ssl)经过SSL加密版本的协议
pop3s(pop3-over-ssl)经过SSL加密版本的协议
smtp协议功能概述
smtp邮件协议介绍:
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰
pop3邮件协议介绍:
POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循 POP3协议的接收邮件服务器,用来接收电子邮件的。
IMAP邮件协议介绍:
IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。
总结概述
邮件协议imap和pop3对比:
IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件,但IMAP 通过邮件客户端与webmail 之间的双向同步功能很好地避免了这些问题。
总结概述
邮件协议总结:
默认端口 | 收/发邮件 | SSL加密 | |
smtp | 25 | 发 | NO |
pop3 | 110 | 收 | NO |
imap | 143 | 收 | NO |
smtps | 465 | 发 | YES |
pop3s | 995 | 收 | YES |
imaps | 993 | 收 | YES |
2.8.2 接收邮件的过程
邮件接收协议则是一种基于“拉”的协议,主要包括POP协议和IMAP协议,在正式介绍这些协议之前,我们先给出邮件收发的体系结构:
2.8.3 发送邮件的过程
电子邮件发送协议是一种基于“推”的协议,主要包括SMTP;
邮件接收协议则是一种基于“拉”的协议,主要包括POP协议和IMAP协议,在正式介绍这些协议之前,我们先给出邮件收发的体系结构:
电子邮件发送协议是一种基于“推”的协议,主要包括SMTP;
2.8.4 网页版和客户端版收发邮件过程
基于WWW的邮件收发系统的体系结构与普通的电子邮件收发系统不同,基于WWW的邮件收发系统的整个过程描述如下:
1.从发送者的浏览器传送到发送方邮件服务器是通过HTTP协议(而一般的则是通过SMTP协议)。
2.从发送方服务器到接收方邮件服务器是通过SMTP协议(与一般的相同)。
3.从接收方到接收者是通过HTTP协议(而一般的则是POP3协议或IMAP协议)。
具体如上图所示:
常见邮件记录使用案例
客户背景:
需求背景
客户在阿里域名提供商处修改所有域名的解析权到负载均衡之后,要通过负载均衡对外发布邮件服务,需要在负载均衡处配置MX记录和SPF记录,保证邮件收发正常,其实客户提供的MX记录的公网ip地址为11.11.11.11;
MX功能介绍以及原理
MX记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在,用户计算机就将邮件发送到MX记录所指定的邮件服务器上。
MX记录也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。检查MX记录是否存在的方法进行DNS查询的一个非常有用的工具是nslookup,可以使用它来查询DNS中的各种数据。可以在Windows的命令行下直接运行nslookup进入一个交互模式,在这里能查询各种类型的DNS数据。163的邮件MX记录查询,如下图:
常见邮件记录使用案例
邮件被退信案例
客户背景:
需求背景
客户用我们的AD做网关部署,客户内网有一个企业邮件服务器,通过AD发布出去。客户在域名提供商那里把 NS记录指向我们,我们设备上做了MX记录和A记录。发现内网用户通过企业邮件服务器向国外的邮箱发邮件的时候,会收到退信;但是向国内的邮箱发邮件是没问题的;报错截图如下:
解决思路:
根据提示为553,发现应该是说cosco-logistics.com.cn这个地址不可用或者不在允许的列表里。所以我们排查此问题的时候,有两点需要注意一下:
1、一个是这个地址到底有没有A记录和MX记录,在公网是否能查到;
2、邮件服务器是否发起了反向查询,PRT或者查询MX记录或者查询A记录,如果查不到也可能会是这个提示。
3、发送邮件的时候在AD设备进行抓包,发现发送邮件给国外服务器时,国外的邮件服务器会发送4A记录来查询这个cosco-logistics.com.cn,而我们要4.0才支持4A记录的应答,故我们默认是拒绝此请求,所以出现了退信。
解决办法
升级到4.0支持4A记录,或者DNS服务器对不存在的域名处理改为不回应。
邮件发送不成功案例
需求背景
客户用我们的AD做网关模式部署发布邮件服务同时提供链路负载,客户反馈使用我们的负载均衡之后很多办公用户发送邮件到sangfor.com不成功;邮件服务器可以正常访问外部网络;
网络环境如下
邮件发送不成功案例
分析思路
此例中sangfor.com的SPF记录显示,sangfor.com的MX记录的邮件服务器地址应该是211.154.132.163。我们查询sangfor.com的MX记录就可以证实了这一点
假如说客户在公网上做了MX记录指向我们AD的电信CT出口IP。此时内网企业邮件服务器向外网邮件服务器发送邮件的时候,会走链路负载。如果走电信CT出去发送,发现可以正常发送邮件;如果走CU网通出去发送,则发送邮件不成功。
这个就有可能是因为我们AD没有设置SPF记录导致。当走电信发送邮件,收件服务器查询到邮件的源IP和 MX记录的IP地址一致,所以认为此邮件是合法的。但是当走网通发送邮件的时候,收件服务器查询到邮件的源IP和MX记录的IP不一致,所以要查询邮件的SPF记录。
邮件发送不成功案例
我们可以采取两种解决办法
一种就是MX记录指向电信和网通
一种就是添加SPF记录,把网通的IP包含进去,成为合法的邮件服务器IP。
1,邮件什么分为收发两个程序,一个行不行呢?
2.9 Radius协议
2.9.1 AAA概述
功能介绍
AAA:分别为Authentication、Authorization、Accounting
认证(Authentication):验证用户的身份与可使用的网络服务;
授权(Authorization):依据认证结果开放网络服务给用户;
计帐(Accounting):记录用户对各种网络服务的用量,并提供给计费系统。
AAA的优势
灵活性
可控性
可扩展性
可靠性
标准化协议
AAA认证基本模型
AAA基本模型包括用户,NAS,认证服务器三个部分
AAA认证流程
1,用户向NAS发起认证连接请求
2,NAS设备将用户的认证请求转发给认证服务器
3,认证服务器返回认证结果给NAS
4,NAS设备根据认证的返回结果对用户进行相应的认证,授权和计费操作
PS:NAS(Network Authentication Server)不是 (Network Attached Storage)网络附属存储
2.9.2 Radius需求背景
场景1:通过AAA(Radius服务器)为上网用户提供认证、授权和计费:
某企业网络通过LANSwitch与AC/NGAF作为目的网络接入服务器。用户需要通过服务器的远端认证才能通过建立连接,该网络中的用户需要访问Internet资源。为了保证网络的安全性,企业管理员希望控制用户对于Internet的访问。
通过在AC/NGAF上配置AAA,实现AC/NGAF与AAA服务器的对接,可以由AAA服务器对用户进行统一管理。用户在客户端上输入用户名和密码后,AC/NGAF可以接收到用户的用户名和密码等认证信息并将用户信息发送给AAA服务器,由AAA服务器对其进行认证。如果认证通过,则用户可以开始访问 Internet。在用户访问过程中,AAA服务器还可以记录用户使用网络资源的情况。
为了提高可靠性,可以部署两台AAA服务器,并在AC/NGAF上进行相应配置实现AAA服务器的主备备份,主服务器发生故障时,备服务器可以接替主服务器工作,保证用户业务不会中断。
场景1:通过AAA对管理用户进行认证和授权:
管理用户(Administrator)与AC/AD/NGAF建立连接,对AC/AD/NGAF进行管理、配置和维护。
在AC/AD/NGAF上配置AAA后,当管理用户登录Switch时,AC/AD/NGAF将管理用户的用户名和密码等信息发送给AAA服务器,由AAA服务器来进行统一认证,同时记录这些用户的操作行为。
2.9.3 Radius概述和工作原理
AAA可以通过多种协议来实现,在实际应用中,最常使用RADIUS协议。
RADIUS是一种分布式的、客户端/服务器结构的信息交互协议,能保护网络不受未授权访问的干扰,常应用在既要求较高安全性、又允许远程用户访问的各种网络环境中。该协议定义了基于UDP(User Datagram Protocol)的RADIUS报文格式及其传输机制,并规定UDP端口1812、1813分别作为默认的认证、计费端口。
RADIUS最初仅是针对拨号用户的AAA协议,后来随着用户接入方式的多样化发展,RADIUS也适应多种用户接入方式,如以太网接入等。它通过认证授权来提供接入服务,通过计费来收集、记录用户对网络资源的使用。
RADIUS协议的主要特征如下:
客户端/服务器模式
安全的消息交互机制
良好的扩展性
Radius概述-客户端/服务器模式
RADIUS客户端
持标准RADIUS协议及扩充属性,包括RFC2865、 RFC2866。
RADIUS服务器主备或负载分担功能。
针对我们公司可以作为NAS的包括AC/AF/NGAF/SSL/都可以作为Radius客户端
RADIUS服务器
一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。
我们公司合作的radius服务应用主要是飞天OTP平台 +Mysql数据库。
Radius认证数据包结构
Radius计费数据包结构
认证/计费请求报文格式
PS:
1,标准RADIUS/华为RADIUS/HWTACACS的radius数据包字段相关说明
2,TACACS +和标准RADIUS比较 https://www.cisco.com/c/zh_cn/support/docs/security-vpn/remote-authentication-dial-user- service-radius/13838-10.html
2.9.4 Radius案例
项目背景:
无线城市项目是指在多个公共场所采用均部署WIFI,无线终端通过认证,在后台服务器可以对该终端实现管控。该项目整体是由华为平台搭建的,包括无线AP,以及认证AC。而后台服务器则是由中兴radius服务器组成。 radius服务器有三台,作为轮询调度算法进行服务器负载。
客户要求:
针对radius服务器进行负载,负载方式采用轮询,并且使用会话保持15分钟。RADIUS服务器必须知道推送认证AC的IP地址。作为后台数据进行统计。
AD应用均衡负载中兴radius服务器
拓扑和地址规划:
三层交换机网关:192.168.200.1
AC:192.168.200.21
AD:静态ip1:192.168.200.2 ,静态ip2:192.168.200.3浮动IP:192.168.200.4
服务器网段:192.168.200.5-192.168.200.7
数据流过程:
1.认证终端连接WIFI,AC弹出protal,并且对数据包拦截,拦截后重定向到应用服务器。
2.此时要进过AD进行应用服务器的调度。
3.认证终端点击一键上网,此时,会对其进行radius认证,并且计费,AD也对radius服务器进行负载调度。
客户要求:
为了方便客户能够统一管理所有网络设备,现在准备了一台思科的ACS(radius服务器),保证客户的运维人员(不同级别)都可以通过自己单独的一个账号登录到负载均衡,进行不同的配置或查看操作。
需求分析:
根据之前AAA的认证模型,客户通过自己的账号来进行登录的时候我们的设备是作为一个NAS设备,CiscoACS作为AAA服务器。当用户的运维人员输入自己的RADIUS服务器账号的时候,负载均衡应该是把认证请求转发给ACS服务器进行认证即可。