可以观看简单说网络系列视频帮助理解
ch1 网络系统结构与网络协议
网络协议标准的制定
IEEE
电气与电子工程师协会( Institute of Electrical and Electronics Engineers),主要制订网络层,数据链路层相关标准 --更底层一些
IEFT
国际互联网工程任务组( The Internet Engineering Task Force,简称IETF),主要制订网络层,传输层相关标准
网络协议三要素
网络协议定义
计算机等设备之间相互通信的“约定”/“语言”
网络协议是为了进行网络中数据交换而建立的规则、标准或约定,即通信双方需要共同遵守,互相理解。
三要素
-
语法
-
语义
-
时序
相关定义
tcp/ip协议族
很多个互联网协议的集合(以tcp ip为主)。目前使用最多的协议模型
ip地址
ip-逻辑地址。标识一台互联网设备(PC、服务器、手机、路由器等)的身份ID。
mac地址
mac-物理地址 固化在网卡上面一串不可更改的物理地址全球独一无二
有了ip地址为什么还需要mac地址
ip-逻辑地址,人为配置和规划,可以分网段,便于更好寻址
mac-固化在网卡上面,不能更改
携带mac地址的主机在什么地方使用并没有规律看,所以mac地址不能算有层次的地址。ip地址负责有层次的寻址(大区域->小区域),而mac地址负责最终通信的地址
子网掩码
定义ip地址属于哪个网段
交换机与路由器
-
交换机(Switch):
-
交换机是用来连接局域网(LAN)中的各种设备,比如计算机、打印机、服务器等。
-
它的作用是在局域网内部传输数据包,根据数据包的目标MAC地址来决定将数据包传输到哪个设备。
-
交换机在传输数据时通常是在同一网络内部进行的,因此它的工作效率很高,可以实现非常快速的数据传输。
-
-
路由器(Router):
-
路由器是用来连接不同网络的设备,比如连接两个不同的局域网、连接局域网与广域网(WAN)等。
-
它的主要作用是在不同网络之间传输数据包,根据数据包的目标IP地址来决定将数据包传输到哪个网络。
-
路由器能够实现不同网络之间的通信,因此它通常用于连接不同部门、不同地区或不同国家的网络,实现跨网络的数据传输。
-
总的来说,交换机用于局域网内部的设备连接和数据传输,而路由器则用于连接不同网络之间的数据传输。
数据在各层之间的流动过程
数据在计算机网络中的传递过程通常遵循OSI(Open Systems Interconnection)模型或TCP/IP模型。
TCP/IP模型:
-
物理层(Physical Layer):
物理层是最底层,负责传输比特流,管理物理介质(如电缆、光纤)的特性和传输方式。
-
数据链路层(Data Link Layer):
数据链路层负责将数据组织成帧(数据帧),并在直接相连的节点之间传输数据。它提供了数据的可靠传输,常见的数据链路层协议有以太网、Wi-Fi等。
-
网络层(Network Layer):
网络层负责数据报的路由和转发,以及在不同网络之间的通信。常见的网络层协议有IP(Internet Protocol),它定义了数据包在网络中的传输规则和寻址方式。
-
传输层(Transport Layer):
传输层负责端到端的通信,确保数据的可靠传输。常见的传输层协议有TCP和UDP,它们提供了不同的传输方式,TCP提供可靠的、面向连接的通信,而UDP提供了无连接的通信。基本单位:数据段
-
应用层(Application Layer):
应用层是最高层,负责提供各种网络服务和应用,如HTTP、FTP、SMTP等。在这一层,用户能够直接与网络应用进行交互。基本单位:数据
主机之间的数据传输如下图所示,路由器只到网络层(路由器是用来连接不同网络的设备)。
ch2 ARP协议与MAC帧
子网划分
子网划分是将一个大的IP网络划分成若干个较小的子网络的过程。这样做的好处是可以更有效地管理网络资源、提高网络性能和安全性。在IPv4网络中,子网划分通常通过子网掩码来实现,而IPv6网络则使用前缀长度来表示子网。
划分子网的过程涉及确定子网的大小和数量,以及分配给每个子网的IP地址范围。常见的子网划分方法包括:
-
固定长度子网划分:将网络按照固定数量的主机划分成子网,例如每个子网可以容纳256、512或1024个主机。
-
变长子网划分:根据每个子网的需求分配不同数量的IP地址,使得不同子网的大小可以根据需要进行调整。
-
保留地址空间:为了实现更好的网络管理和安全性,通常会在每个子网中保留一些IP地址用于网络设备、广播地址和未分配地址。
划分子网时需要考虑网络的需求、拓扑结构、安全性和管理方面的因素,以确保网络的有效运行和管理。
ARP地址解析协议
定义
ARP(Address Resolution Protocol)地址解析协议是一种用于解析网络层地址(如IPv4地址)与数据链路层地址(如MAC地址)之间关系的协议。它的作用是根据目标IP地址找到对应的MAC地址,以便将数据包正确地发送到目标设备。
工作
在一个局域网(LAN)中,当一台设备要发送数据到另一台设备时,它首先会检查目标IP地址是否在同一子网内。如果在同一子网内,发送设备会使用ARP协议来查询目标IP地址对应的MAC地址。 这个查询会发送到局域网内的所有设备,目标设备会回复包含自己MAC地址的ARP响应。发送设备接收到响应后,就可以将数据包封装在一个帧中,并使用目标设备的MAC地址发送数据。
如果目标IP地址不在同一子网内,发送设备会将数据包发送到路由器,由路由器转发到目标设备所在的网络。在这种情况下,发送设备会查询路由器的MAC地址,而不是目标设备的MAC地址。
ARP协议的工作原理简单而有效,它是局域网通信中的关键部分,确保数据包可以正确地传输到目标设备。
性质
将一个已知的IP地址(3网络层)解析为MAC地址(2数据链路层),从而进行二层数据交互
是一个三层的协议,但是工作在二层,是一个2.5层协议
MAC帧报文格式
MAC(Media Access Control)帧是数据链路层(第二层)中的一种数据格式,用于在局域网中传输数据。下面是一个典型的以太网帧(Ethernet frame)的基本格式:
-
目的 MAC 地址(Destination MAC Address):占用 6 个字节,表示帧的目标设备的物理地址。
-
源 MAC 地址(Source MAC Address):占用 6 个字节,表示帧的发送设备的物理地址。
-
类型/长度字段(Type/Length):占用 2 个字节。在以太网中,这个字段有两种含义:
-
如果数值小于或等于 1500,则表示帧的长度(以字节为单位)。
-
如果数值大于 1500,则表示以太网帧中的协议类型,比如 IPv4、IPv6 等。
-
-
数据(Data):占用最少 46 个字节,最多 1500 个字节。这个字段包含传输的实际数据。
-
填充(Padding):如果数据长度不足 46 个字节,则用填充字段填充以满足最小帧长度要求。
-
帧校验序列(Frame Check Sequence,FCS):占用 4 个字节,用于检测帧中出现的任何错误。
ARP 地址解析协议
报文格式
-
硬件类型(Hardware Type):占用 2 个字节,用于指定硬件类型,通常为 Ethernet,其值为 1。
-
协议类型(Protocol Type):占用 2 个字节,指定上层协议类型,通常为 IPv4,其值为 0x0800。
-
硬件地址长度(Hardware Address Length):占用 1 个字节,指定硬件地址长度,对于 Ethernet,其值为 6。
-
协议地址长度(Protocol Address Length):占用 1 个字节,指定协议地址长度,对于 IPv4,其值为 4。
-
操作码(Opcode):占用 2 个字节,用于指定 ARP 报文的操作类型,常见的操作码包括请求(Request)和响应(Reply)。
-
发送方硬件地址(Sender Hardware Address):占用 6 个字节,指定发送方的 MAC 地址。
-
发送方协议地址(Sender Protocol Address):占用 4 个字节,指定发送方的 IP 地址。
-
目标硬件地址(Target Hardware Address):占用 6 个字节,仅在 ARP 请求中有效,指定目标设备的 MAC 地址,通常为全 0。
-
目标协议地址(Target Protocol Address):占用 4 个字节,指定目标设备的 IP 地址。
工作流程
ARP请求分组
本地广播arp请求
arp响应分组
arp分组封装在物理网络的帧中传输
ARP缓存
描述
-
主机a要向本局域网的某个主机b发送ip数据报时,就先在器arp告诉缓存中查看有无b的ip地址。
-
若有。查出其对应的硬件地址,再将此硬件地址写入mac帧,然后通过局域网将该mac帧发往此硬件地址
-
若无。arp进程在本局域网上广播发送一个arp请求分组。收到相应分组之后,将得到的ip地址到硬件地址的映射写入到arp高速缓存。
作用
-
存放最近获得的ip地址到mac地址的绑定,以减少arp广播的数量
-
为了减少网络上的通信量
-
主机b收到a的arp的请求分组时,就将a的这一地址映射写入b的arp高速缓存中。b对a发送数据报就更加方便。
安全性分析(ARP攻击/ARP欺骗)
ARP攻击
伪造ARP应答报文,向被攻击主机响应虚假的MAC地址
当被攻击主机进行网络通信时,会将数据交给虚假的MAC地址进行转发,由于虚假的MAC地址不存在,所以造成被攻击主机无法访问网络
ARP欺骗-欺骗网关
伪造ARP应答报文,向被攻击主机和网关响应真实的MAC地址
当被攻击主机进行网络通信时,会将数据交给真实MAC地址进行转发,从而来截获被攻击主机的数据,这时被攻击主机是可以进行网络通信的
ARP欺骗-欺骗主机
伪造ARP应答报文,向被攻击主机和通信的主机响应真实的MAC地址
当被攻击主机向通信主机发送数据时,会将数据交给真实MAC地址进行转发,从而来截获被攻击主机的数据,这时被攻主机是可以进行网络通信的
如何避免ARP攻击与欺骗
专用的ARP防火墙
防火墙带ARP防御功能的
在主机上进行ARP静态绑定
ch3 IP协议与ICMP协议
IP协议的作用
将异构的网络连接起来,实现异构网络间分组交换。
IP数据报的格式
网际控制报文协议ICMP
定义
网际控制报文协议( Internet Control Message Protocol ,ICMP )
(ping命令背后的协议)
Internet控制报文协议,用于IP主机、路由器之间传递控制消息,控制消息指网络通不通、主机是否可达、路由是否可用等等。
性质
ICMP是属于网络层的协议,封装在传输层与网络层之间
作用
-
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP;
-
ICMP使主机或路由器报告差错情况和提供有关异常情况的报告;
-
ICMP不是高层协议(看起来好像是高层协议,因为ICMP报文是装在IP数据报中,作为其中的数据部分),是IP层的协议。
-
ICMP分担IP的一部分功能
-
差错报告
目的不可达、源站抑制、超时、参数问题、重定向 -
查询
回送请求/应答、地址掩码请求/应答、时间戳请求/应答
分类
两种ICMP报文:差错报告报文、询问应答报文
ICMP数据报格式
ICMP差错报告报文
终点不可达。
时间超过。
参数问题。
改变路由(重定向)(Redirect) 。
ICMP封装
ICMP重定向问题
在某些特定情况下,路由器检测到主机使用非优化路由时候,会向主机发送一个ICMP重定向报文,使得主机的路由改变。
ICMP重定向攻击问题
-
攻击主机将路由重定向到一个不存在的网关,可导致被攻击主机无法正常通信。
-
攻击主机将路由重定向到自己的IP地址,开启路由转发功能,可以实现数据的监听
IP分片
定义
IP分片是指在网络通信中,当IP数据包的大小超过了网络链路的最大传输单元(MTU),就会被分成多个较小的片段进行传输。 这个过程是由发送端的路由器负责完成的。每个分片都是一个独立的IP数据包,具有自己的IP头部信息。在到达目的地后,接收端的路由器会重新组装这些分片,得到完整的原始数据包。
IP分片的过程可以在网络链路的不同部分发生,而不仅仅是在发送端。这种情况可能会发生在数据包通过具有不同MTU设置的网络设备时,例如在跨越不同类型的网络(如以太网和无线网络)时。
虽然IP分片在某些情况下是必需的,但它也会带来一些问题,如增加网络传输的复杂性和延迟。因此,现代网络中的一些协议和技术(如IPv6和Path MTU Discovery)试图尽量减少或避免IP分片的发生。
例子
ch4 RIP协议与OSPF协议
静态路由
单向、需要管理员手动配置
动态路由协议
定义
是在路由器设备上去启用某动态路由协议,进行自己直连网段的宣告,从而相邻的路由器就可以学习到相邻的路由器所宣告的网段
作用/特点
减少管理员的工作量
增加了网络带宽
常见动态路由协议
RIP:路由信息协议(距离矢量路由协议)
OSPF:开放式最短路径优先(内部网关协议)
BGP:边界网关协议
EGRP:增强内部网关路由协议
IS-IS:中间系统到中间系统,最初是国际标准化组织( ISO )为
无连接网络协议(CLNP)设计的一种动态路由协议
分类
分类依据:AS(自治系统):运行相同的路由协议的路由器属于同一个自治系统。通过自治系统内连接外部的路由器,这个时候就需要外部网关
-
内部网关路由协议(IGP):用于在单一自治系统中去决策路由,RIP、OSPF
-
外部网关路由协议(EGP):用于连接不同自治系统,BGP
RIP动态路由协议
视频帮助理解带你了解RIP路由协议
基本概念
-
一种内部网关路由协议,在单一自治系统内的路由器去传递路由信息。距离矢量协议
-
靠跳数(metric)来衡量到达目的的距离
最大15跳,16跳表示不可达
-
每隔30秒向相邻的路由器发送路由更新消息,采用的UDP520端口
-
RIP动态路由协议是从相邻的路由器去学习对应的路由条目
RIp版本
- RIPv1
有类路由协议(采用标准子网掩码)
广播更新
不支持VLSM(可变长子网掩码,非标准子网掩码)
自动路由汇总,不可关闭
不支持不连续子网
- RIPv2
无类路由协议(可以使用非标准子网掩码)
组播更新(只会向运行了RIP的路由器发送更新消息)
支持VLSM
自动汇总,可以关闭
支持不连续的子网
度量值
跳数(局限性)
OSPF动态路由协议
基本概念
-
OSPF开放式最短路径优先路由协议,是一个内部网关路由协议(在同一个自治系统內进行路由决策)
-
链路状态路由协议:在单一区域内的路由器是向相邻路由器发送链路状态信息,网络收敛后形成网络拓扑
工作流程
-
相邻的路由器首先建立邻接关系(邻居关系)
-
根据链路状态信息,形成对应链路状态数据库
-
根据OSPF自己的算法,进行最短路径树
-
最终形成路由表
度量值
cost值(代价)
基于链路带宽来决定
100Mbps 1
10Mbpsp 10
OSPF–区域划分
描述
为了适应大型网络
每个OSPF的路由器只维护自己所在区域的链路状态信息
每个区域都有一个区域ID,区域ID可以表示成一个十进制的数也可以表示成一个IP地址
骨干 区域
至少指定一个骨干区域。主要负责区域之间的路由信息传播
默认情况下,所有的非骨干区域都和骨干区域相连
非骨干区域
普通区域
单区域
OSPF单区域指的是在OSPF网络中只有一个区域,通常这个区域是骨干区域(Area 0)。
DR(区域内路由选举)
区域中的其他路由器只和区域中的DR建立邻接关系
BDR
BDR是OSPF(开放最短路径优先)协议中的缩写,表示Backup Designated Router,即备份指定路由器。在OSPF网络中==,除了选举出一个DR(Designated Router)外,还会选举出一个BDR==。这两个角色的目的是帮助减少LSA(链路状态通告)更新的数量,从而降低网络的拓扑计算负担。
多区域
多区域目的
实现大型网络环境
划分区域后,实现单区域网络收敛
多区域优点
改善网络,更具有拓展性
快速网络收敛
减少了路由表,也减小了LSU的流量
OSPF邻接关系
根据邻居建立邻接关系
发送DBD同步链路状态
只想DR和BDR发送发送链路状态请求报文LSR
根据链路状态更新报文更新自己的链路状态信息
确认链路状态信息
OSPF的通信流量
在区域内(域内通信流量)
DR和BDR
内部路由器
不同区域之间(域间通信流量)
ABR(域间边界路由器)
与其他自治系统之间(外部通信流量)
ASBR(自治系统边界路由器)
OSPF高级配置
路由重分发
基本概念
一个单一IP路由协议是管理网络中IP路由的首选方案
在大型的企业中,可能在同一网络内使用到多种路由协议,为了实现多种路由协议的协同工作,路由器可以使用路由重分发,将其学习到的路由通过另一种协议广播出去,这样网络的所有部分都可以连通了,为了实现路由重分发,路由器必须同时运行多种路由协议,这样,每种路由协议才可以取路由表中的所有或者部分其他协议的路由来进行广播
虚链路
基本概念
在两台ABR之间去建立一条虚拟链路,穿越一个非骨干区域
目的
指一条通过一个非骨干区域连接到骨干区域的链路
通过一个非骨干区域连接一个分段的骨干区域
ch5 TCP协议与UDP协议
传输层
功能
定义应用层协议数据报文的端口号,流量控制
对原始数据进行分段处理
提供服务
传输连接服务
数据传输服务-流量控制 差错控制 序列控制
控制位的作用
主要保证两个终端系统交互数据报文不会丢失、无差错
面向连接的传输协议TCP
基本概念
-
面向连接的传输层协议,采用客户端+服务端的工作模式。客户端监听一个通信端口,服务端监听一个通信端口,建立起一个双向的连接。
-
要求数据在传输以前必须建立连接,数据传输完成后,必须释放连接
-
仅支持单播传输:在两个终端之间建立的点对点连接
tcp报文字段
MTU与TCP MSS参数
MTU:Maximum Transmission Unit 最大传输单元
含义:网络设备一次能够发送出去的最大数据报文(最大数据帧),即二层
链路的最大负载。
MTU的构成=网络层报头(通常20字节)+传输层报头(通常20字节)+应用层数据(最大1460字节)
MSS: Maximum Segment Size最大分段大小,最大分段长度。
系统的默认值是1460字节
TCP三次握手
TCP三次握手是建立TCP连接时使用的协议,用于确保通信的可靠性和双方的同步。它的过程如下:
-
第一步 - 客户端发送 SYN 包:
客户端向服务器发送一个带有 SYN(同步)标志位的TCP数据包,表示客户端请求建立连接,并选择一个初始序列号(Sequence Number)。
-
第二步 - 服务器发送 SYN + ACK 包:
服务器收到客户端的SYN包后,会回复一个带有 SYN 和 ACK(确认)标志位的TCP数据包,表示接受连接请求,并确认客户端的初始序列号。同时,服务器也选择一个自己的初始序列号。
-
第三步 - 客户端发送 ACK 包:
客户端收到服务器的SYN+ACK包后,会发送一个带有 ACK 标志位的TCP数据包,表示确认收到服务器的确认,并确认服务器的初始序列号。
完成这三个步骤后,TCP连接建立成功,双方可以开始进行数据传输。此时的TCP连接处于已建立(Established)状态。
这个三次握手过程的目的在于确保双方都能够正常通信,避免出现不同步或者未被接收的情况。
TCP四次挥手
TCP四次挥手是用于关闭TCP连接的过程,确保数据的完整传输和连接的正常终止。它的过程如下:
-
第一步 - 客户端发送 FIN 包:
当客户端希望关闭连接时,它向服务器发送一个带有 FIN(结束)标志位的TCP数据包,表示数据传输结束,但仍可以接收数据。
-
第二步 - 服务器发送 ACK 包:
服务器收到客户端的FIN包后,会发送一个带有 ACK 标志位的TCP数据包,确认收到了客户端的关闭请求,但表示自己还需要继续发送数据。
-
第三步 - 服务器发送 FIN 包:
服务器在发送完所有数据后,也会向客户端发送一个带有 FIN 标志位的TCP数据包,表示自己也准备关闭连接。
-
第四步 - 客户端发送 ACK 包:
客户端收到服务器的FIN包后,会发送一个带有 ACK 标志位的TCP数据包,确认收到了服务器的关闭请求。
完成这四个步骤后,TCP连接就正式关闭了。此时,双方都进入了关闭状态,不再进行数据传输。需要注意的是,经过这个过程,确保了双方的数据都得以完整传输,避免了数据丢失的情况。
TCP常见攻击方法
TCP(传输控制协议)是互联网上最常用的协议之一,因此也成为攻击者的目标。以下是一些常见的TCP攻击方法:
-
SYN 攻击:攻击者向目标系统发送大量的TCP连接请求(SYN),但不完成握手过程,从而消耗目标系统的资源,使其无法响应合法的连接请求。
-
SYN Flood 攻击:这是一种特定形式的SYN攻击,攻击者发送大量伪造的源IP地址的SYN请求,使目标系统不断发送SYN+ACK响应,最终导致资源耗尽。
-
ACK 攻击:攻击者向目标系统发送大量的TCP ACK(确认)包,消耗目标系统的资源,降低其性能。
-
RST 攻击:攻击者发送大量的TCP RST(复位)包,终止合法的TCP连接,导致服务不可用。
-
TCP Fragmentation 攻击:攻击者发送TCP片段,其中某些片段可能不符合TCP规范,导致目标系统解析出错或消耗大量资源。
-
TCP Session Hijacking:攻击者监视TCP会话并尝试在其中插入自己的数据,或者完全接管已经建立的TCP连接,通常通过欺骗或嗅探技术实现。
-
TCP Sequence Number Attack:攻击者预测TCP序列号并发送恶意数据包,使目标系统接受并处理这些数据包。
-
TCP Reset Injection:攻击者发送伪造的TCP RST包,终止合法的TCP连接或阻止连接的建立。
这些攻击方法都可以对TCP协议的正常功能造成影响,降低系统的性能或使其不可用。为了防范这些攻击,网络管理员可以采取一系列措施,如使用防火墙、入侵检测系统(IDS)、入侵防御系统(IPS)等。
用户数据报协议——UDP协议
基本概念
UDP(用户数据报)协议,是传输层的另外一个协议。
不需要建立连接,直接发送数据,不会去重新排序,不需要确认。
一种无连接的传输层协议,同样采用了客户端+服务端的通信模型。
报文字段
ch6 DHCP协议
基本概念
主要是一个局域网的网络协议,广泛应用在一个局域网内部。
动态主机配置协议:主要就是给客户机提供TCP/IP参数
(IP地址、子网掩码、网关、DNS等)。
工作原理
它是一个应用层的协议,基于UDP,主机是向服务器的67号端口,服务器响应给客户机的68号端口
客户机与服务器的交互过程
报文格式
DHCP攻击
-
攻击DHCP服务器,消耗地址池中的IP地址,让新来的主机不能获得IP。
-
伪装成DHCP服务器,采用中间人攻击,获取各种数据包。
DHCP防御
防御DHCP(动态主机配置协议)攻击是网络安全中的一个重要方面,因为DHCP协议是局域网中自动分配IP地址的标准协议,攻击者可能利用它来执行各种恶意行为,如IP地址冲突、IP地址枯竭、中间人攻击等。以下是一些防御DHCP攻击的方法:
-
DHCP Snooping:启用DHCP Snooping功能可以在交换机上监视DHCP消息流量,只允许受信任的DHCP服务器响应客户端的DHCP请求。这可以防止未经授权的DHCP服务器出现在网络上,从而避免中间人攻击。
-
动态ARP检测:结合DHCP Snooping,动态ARP检测能够防止DHCP服务器伪装攻击,即攻击者通过伪装成DHCP服务器向客户端发送恶意ARP响应,导致客户端与攻击者进行通信。
-
静态IP分配:为网络中的重要设备分配静态IP地址,而不是使用DHCP自动分配。这样可以减少对DHCP服务的依赖,同时降低了攻击者利用DHCP服务的风险。
-
MAC地址过滤:在网络设备上配置MAC地址过滤列表,只允许已知的MAC地址进行DHCP请求和分配IP地址,这可以防止未经授权的设备加入网络。
-
限制DHCP服务器访问:通过网络ACL(访问控制列表)或防火墙规则限制DHCP服务器的访问,只允许特定的子网或IP地址范围的DHCP请求进入DHCP服务器。
-
DHCP报文验证:部署DHCP报文验证机制,确保DHCP消息的完整性和真实性,防止篡改或伪造的DHCP消息导致网络故障或安全漏洞。
-
定期审查日志:定期审查DHCP服务器的日志,检测异常活动,如大量的DHCP请求、重复的IP地址分配等,及时发现和应对潜在的攻击行为。
综合利用以上措施可以有效地保护网络免受DHCP攻击的威胁,提高网络的安全性和可靠性。
ch7 DNS协议
基本概念
DNS(domain name system)域名系统,作为将域名与IP地址的相互映射关系存放在一个分布式的数据库中。
DNS使用的是UDP的53端口
域名空间结构
树状结构
树状结构根域:(全世界只有13台根域服务器)
顶级域:(主要用于区分域名的用途)
组织类
com 商业
edu 教育和学校
org 社会非盈利性组织
国家/地区域名
cn 中国
hk 香港
us 美国
uk 英国
域名查询过程
域名查询过程中常见的两种方法是递归查询和迭代查询:
1. 递归查询:
在递归查询中,客户端向本地域名服务器发送查询请求。如果本地域名服务器有所查询的域名记录,则直接返回结果给客户端。如果本地域名服务器没有该域名的记录,则会向根域名服务器发送查询请求。
根域名服务器会返回指向顶级域(TLD)服务器的地址。然后本地域名服务器向TLD服务器发送查询请求,TLD服务器会返回指向权威域名服务器的地址。
本地域名服务器再次向权威域名服务器发送查询请求,权威域名服务器查询域名的记录,并将结果返回给本地域名服务器。最后,本地域名服务器将查询结果返回给客户端。
2. 迭代查询:
在迭代查询中,客户端向本地域名服务器发送查询请求,本地域名服务器如果没有所查询的域名记录,会向根域名服务器发送查询请求。
根域名服务器会返回指向顶级域(TLD)服务器的地址。然后本地域名服务器会向TLD服务器发送查询请求,但是在这种情况下,TLD服务器不会直接返回查询结果,而是会将下一级域名服务器的地址返回给本地域名服务器。
本地域名服务器接收到TLD服务器返回的下一级域名服务器地址后,会向下一级域名服务器发送查询请求,然后继续这个过程,直到找到具有所查询域名记录的权威域名服务器。最后,本地域名服务器将查询结果返回给客户端。
总的来说,递归查询是由本地域名服务器代替客户端完成整个查询过程,而迭代查询则是本地域名服务器向上级服务器一步一步地迭代查询,直到找到查询结果。
DNS报文格式
DNS高速缓存
描述
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
作用
可大大减轻根域名服务器的负荷,使互联网上的DNS查询请求和回答报文的数量大为减少。
工作
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)
DNS攻击
-
DNS劫持:攻击者通过操纵DNS查询响应,将用户的域名解析请求重定向到恶意的IP地址上。这使得用户在尝试访问正常网站时被导向到攻击者控制的恶意网站上。
-
DNS缓存投毒:攻击者向DNS服务器发送伪造的DNS响应,将恶意域名映射到合法网站的IP地址上。这样,DNS服务器会将错误的信息存储在其缓存中,导致后续用户访问该网站时被重定向到恶意站点。
-
DNS放大攻击:攻击者利用开放的DNS服务器,向目标服务器发送大量伪造的DNS查询请求,使得目标服务器发送大量响应数据给受害者,从而占用其网络带宽和资源。
-
域名抢注:攻击者通过快速注册已过期的域名或者监测域名注册的过程,抢注关键域名,然后用于恶意目的,如欺骗、诈骗等。
-
域名伪造:攻击者伪造域名解析请求或响应,以执行欺骗、劫持或中间人攻击,从而干扰通信或获取敏感信息。
DNS防御
引入
DNS欺骗攻击是很难防御的,因为这种攻击大多数本质都是被动的。通常情况下,除非发生欺骗攻击,否则用户不可能知道自己的DNS已经被欺骗,只是打开的网页与用户想要看到的网页有所不同。在很多针对性的攻击中,用户都无法知道自己已经将网上银行账号信箱输入到错误的网址,直到接到银行的电话告知其帐号已购买某某高价商品时用户才会知道。不过,通过借助一些安全策略,还是可以加强其安全性的。
常见方法
-
绑定IP地址和MAC地址
-
直接使用IP地址访问
-
不要依赖DNS服务
-
对DNS应答包进行检测
ch8 FTP协议
基本概念
提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
FTP(文件传输协议),由两部分组成:客户端/服务器,CS架构。
工作原理
FTP:基于传输层TCP协议,默认端口号(20号端口一般用于传输数据,21号端口用于传输控制信息)。
但是,是否使用20号端口作为传输数据端口和FTP的传输模式有关系:
如果采用的主动模式:传输数据使用20号端口
如果采用的被动模式:传输数据使用的端口需要服务器和客户机协商决定
FTP两种模式
主动模式(port方式):建立连接使用21号端口,客户端通过此通道向服务器发送port命令,服务器从20号端口主动向客户端发起连接。
被动模式(pasv( passive)方式):建立连接使用21号端口,客户端向服务器发送pasv命令,服务器收到会随机打开一个高端端口(大于1024),服务器在指定范围内的某个端口被动等待客户机连接。
TFTP协议
TFTP(简单文件传输协议)也是采用客户机/服务器模式的文件传输协议
TFTP适用于客户端和服务器之问不需要复杂交互的环境
TFTP承载在UDP之上,端口号69
TFTP仅提供简单的文件传输功能(上传、下载)
TFTP没有存取授权与认证机制,不提供目录列表功能
TFTP协议传输是由客户端发起的
数据块的大小固定为512
如果最后一块正好是512,最后需要发送一个不携
带数据的空包
如果最后一块数据不足512,则不需要额外发送
数据包
ch9 HTTP协议与HTTPS协议
HTTP协议注意事项
-
HTTP是无连接的:限制每次连接只处理一个请求。
-
HTTP是独立的:只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的 MIME-type(消息内容类型)。
-
HTTP是无状态的:没有记忆能力,后续处理的内容需要用到前面内容时,就必须重传,每次连接传送的数据量比较大,从另一个方面来考虑,服务器不需要提供先前信息,应答就比较快。
HTTP请求报文格式
HTTP 请求报文通常由以下几个部分组成:
-
请求行(Request Line): 请求行包含了请求方法、请求的资源路径和 HTTP 协议的版本信息。通常的格式为:
<方法> <资源路径> <协议版本>
,例如:GET /index.html HTTP/1.1
。 -
请求头部(Request Headers): 请求头部包含了关于客户端、请求内容、支持格式等的各种信息。每个头部字段都由一个字段名和一个字段值组成,中间用冒号分隔。例如:
Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8
-
空行(Empty Line): 请求头部和请求体之间需要有一个空行作为分隔符。
-
请求体(Request Body): 对于一些请求,比如 POST 请求,会带有请求体,用来传输客户端向服务器发送的数据。请求体的内容格式可以是文本、JSON、XML 等。
下面是一个简单的 HTTP 请求报文的示例:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8
在这个例子中,请求行指定了请求方法是 GET,请求的资源路径是 /index.html
,HTTP 协议版本是 1.1。请求头部包含了 Host、User-Agent 和 Accept 等信息。这个请求没有请求体,因此没有空行之后的请求体。
HTTP响应报文格式
HTTP 响应报文通常由以下几个部分组成:
-
状态行(Status Line): 状态行包含了 HTTP 协议的版本信息、状态码和状态消息。通常的格式为:
<协议版本> <状态码> <状态消息>
,例如:HTTP/1.1 200 OK
。 -
响应头部(Response Headers): 响应头部包含了关于服务器、响应内容、支持格式等的各种信息。每个头部字段都由一个字段名和一个字段值组成,中间用冒号分隔。例如:
Date: Wed, 05 May 2024 12:00:00 GMT Server: Apache/2.4.41 (Unix) Content-Type: text/html; charset=utf-8 Content-Length: 1234
-
空行(Empty Line): 响应头部和响应体之间需要有一个空行作为分隔符。
-
响应体(Response Body): 响应体包含了服务器向客户端发送的数据。响应体的内容格式可以是文本、HTML、JSON、XML 等。
下面是一个简单的 HTTP 响应报文的示例:
HTTP/1.1 200 OK
Date: Wed, 05 May 2024 12:00:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Type: text/html; charset=utf-8
Content-Length: 1234
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>
在这个例子中,状态行指定了 HTTP 协议版本是 1.1,状态码是 200,状态消息是 OK。响应头部包含了 Date、Server、Content-Type 和 Content-Length 等信息。空行之后是响应体,包含了一个简单的 HTML 页面。
HTTP协议状态码
状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求还是出现了错误。
状态码类别
HTTP协议报文首部
首部作用
-
HTTP首部字段是构成HTTP报文的要素之一。在客户端与服务器之间以HTTP协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用。
-
使用首部字段是为了给浏览器和服务器提供报文主体大小所使用的语言、认证信息等内容。
请求报文首部
响应报文首部
HTTP协议首部字段结构
HTTP 协议的首部字段结构包括通用首部字段、请求首部字段、响应首部字段、实体首部字段和扩展首部字段。以下是它们的概述:
- 通用首部字段(General Headers):
这些首部字段可以用在请求报文和响应报文中,但不会包含有关资源本身的信息。常见的通用首部字段包括:
-
Cache-Control: 控制缓存的行为。
-
Connection: 控制连接的选项。
-
Date: 发送消息的日期和时间。
-
Upgrade: 升级协议。
- 请求首部字段(Request Headers):
这些首部字段提供有关请求的信息。常见的请求首部字段包括:
-
Host: 请求的主机和端口号。
-
User-Agent: 发出请求的用户代理软件。
-
Accept: 客户端可接受的内容类型。
-
Referer: 发出请求的页面的 URL。
3.响应首部字段(Response Headers):
这些首部字段提供有关响应的信息。常见的响应首部字段包括:
-
Server: 响应中包含的服务器软件信息。
-
Content-Type: 响应体中的内容类型。
-
Content-Length: 响应体的长度。
-
Last-Modified: 资源的最后修改时间。
- 实体首部字段(Entity Headers):
这些首部字段提供有关实体主体的信息,即请求或响应所传输的数据。常见的实体首部字段包括:
-
Content-Encoding: 实体主体适用的编码方式。
-
Content-Language: 实体主体使用的自然语言。
-
Content-Disposition: 实体主体的处理方式(例如,文件下载时的文件名)。
扩展首部字段(Extension Headers):
这些首部字段是 HTTP 协议中的扩展,用于特定应用场景或定制需求。
每个首部字段都由一个字段名和一个字段值组成,中间用冒号分隔。例如:
Content-Type: text/html
字段名不区分大小写,但通常以大小写混合的形式表示,例如 Content-Type
。字段值可以是单个值,也可以是多个值,用逗号分隔。
HTTPS协议的基本知识
HTTP协议的缺点:
通信使用明文,内容可能会被窃听
不验证通信方的身份,有可能遭遇伪装
无法证明报文的完整性,有可能信息已遭篡改
基本概念:
HTTPS是以安全为目标的HTTP通道,并不是独立于HTTP的一个全新协议,而是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。
定义
(全称: Hyper Text Transter Protocol over Secure Socket Layer),
是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。
工作流程
SSL/TLS设计目标
保密性:所有的信息都加密传输
完整性:校验机制
认证:双方都配备证书,防止冒充
互操作、通用性
可扩展高效率
加密算法
对称加密算法
定义
对称加密算法是一种加密技术,使用相同的密钥对数据进行加密和解密。在对称加密中,发送方和接收方必须共享相同的密钥,该密钥用于加密和解密数据。
特点:
- 单一密钥: 对称加密使用相同的密钥进行加密和解密,因此通信双方必须提前共享密钥。
- 高效: 相对于非对称加密,对称加密算法通常更加高效,因为它们不涉及复杂的数学运算。
- 适用于大量数据: 对称加密通常适用于需要处理大量数据的情况,因为它们的加密和解密速度较快。
常见的对称加密算法:
- AES(高级加密标准): AES 是一种流行的对称加密算法,被广泛用于保护敏感数据。它支持不同的密钥长度(128位、192位和256位)。
- DES(数据加密标准): DES 是一种较早的对称加密算法,使用 56 位密钥,已经被认为不够安全,因此逐渐被 AES 取代。
- 3DES(Triple DES): 3DES 是对 DES 的改进,它对数据进行三次加密,使用了两个或三个不同的密钥。
加密过程:
- 密钥生成: 通信双方通过安全的方式协商生成共享的密钥。
- 加密: 发送方使用密钥将原始数据加密为密文。
- 传输: 发送方将密文通过网络发送给接收方。
- 解密: 接收方使用相同的密钥对密文进行解密,恢复出原始的数据。
对称加密算法在保护数据安全和隐私方面发挥着重要作用,但由于密钥共享和管理的挑战,以及在密钥传输上的安全性问题,它也面临一些安全风险,如密钥泄露和中间人攻击。
非对称加密
定义
非对称加密算法是一种加密技术,使用一对密钥来进行加密和解密操作,其中一个密钥是公开的(公钥),另一个则是私有的(私钥)。这种加密方式也被称为公钥加密算法,因为加密和解密使用不同的密钥。
特点
在非对称加密算法中,公钥用于加密数据,而私钥用于解密数据。只有持有私钥的一方才能够解密由公钥加密的数据。这种方式提供了更好的安全性,因为即使公钥被泄露,也无法轻易地破解加密数据,只有私钥的持有者才能够解密。
非对称加密算法的一个重要应用是数字签名,通过私钥签署数据以验证其来源和完整性。这种算法在网络安全、身份验证、数据传输等领域都有广泛的应用。RSA、DSA、ECC(椭圆曲线加密)等都是常见的非对称加密算法。
PKI体系
PKI(Public Key Infrastructure,公钥基础设施)是一种基于非对称加密技术的体系结构,用于管理数字证书的创建、分发、存储和撤销,以确保网络通信的安全性和可信性。
PKI体系通常由以下组件构成:
-
证书颁发机构(CA,Certificate Authority):CA是PKI中的核心组件,负责颁发数字证书以验证实体的身份。CA签发的证书包含了公钥以及相应实体的信息,由CA进行数字签名以确保证书的真实性和完整性。常见的CA包括商业CA(例如Verisign、GeoTrust)和内部企业CA。
-
注册机构(RA,Registration Authority):RA通常是CA的辅助机构,负责在用户和CA之间进行身份验证,并协助用户获取数字证书。RA可以处理用户注册、身份验证等任务。
-
证书撤销列表(CRL,Certificate Revocation List):CRL是由CA发布的列表,列出了被吊销的数字证书的序列号。应用程序可以通过检查CRL来确认证书的有效性。
-
证书存储库:证书存储库是用于存储数字证书的地方,可以是本地计算机、服务器或者专门的存储设备。这些证书包括用户证书、服务器证书等。
-
证书策略:证书策略定义了数字证书的使用规则,包括证书的有效期、密钥长度、加密算法等。证书策略确保了PKI的一致性和安全性。
PKI体系通过以上组件构建了一个可信的网络通信环境,使得用户可以安全地进行加密通信、身份验证和数据完整性验证。PKI在互联网、电子商务、电子政务等领域都有广泛的应用。
HTTPS协议交互流程
HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密HTTP通信内容。下面是简化的HTTPS协议交互流程:
-
客户端请求建立连接:
- 客户端向服务器发起HTTPS连接请求。
- 服务器返回证书信息(包含公钥)给客户端。
-
客户端验证证书:
- 客户端验证服务器发送的证书是否有效,包括检查证书的颁发者、有效期、签名等。
- 如果证书有效,客户端使用预置的根证书(Root CA)公钥解密服务器发送的证书中的数字签名,以验证证书的真实性。
-
客户端生成会话密钥:
- 如果证书验证通过,客户端生成一个随机的对称密钥(会话密钥)。
- 客户端使用服务器的公钥加密该会话密钥,并将其发送给服务器。
-
服务器接受连接:
- 服务器接收客户端发送的加密的会话密钥。
- 服务器使用自己的私钥解密客户端发送的会话密钥。
-
双方开始加密通信:
- 服务器和客户端双方都拥有了相同的会话密钥,它们将使用该密钥来加密和解密通信内容。
- 通信双方可以开始安全地交换数据,所有的通信都经过加密处理。
在整个通信过程中,SSL/TLS协议确保了数据的加密传输和通信双方身份的验证,从而提供了更高的安全性和隐私保护。
ch10 邮件协议
邮件协议是用于电子邮件传输的一系列规范和协议,主要包括发送、接收和管理电子邮件的各个环节。以下是电子邮件通信中最常见的协议:
-
SMTP(Simple Mail Transfer Protocol):
- SMTP是用于发送电子邮件的标准协议。当你在电子邮件客户端中编写并发送一封邮件时,客户端会使用SMTP协议将邮件传输到你指定的邮件服务器。
-
POP3(Post Office Protocol version 3):
- POP3是一种用于接收电子邮件的协议。邮件客户端通过POP3从邮件服务器上下载电子邮件到本地设备。通常情况下,邮件被下载后会从服务器上删除,除非设置为保留一份副本。
-
IMAP(Internet Message Access Protocol):
- IMAP也是一种用于接收电子邮件的协议,与POP3类似,但提供了更丰富的功能。IMAP允许用户在客户端上管理邮件服务器上的邮件,例如在不同设备之间同步邮件状态、创建文件夹等。
-
SMTPS和POP3S/IMAPS:
- 这些是SMTP、POP3和IMAP的安全版本,使用SSL/TLS加密进行安全通信,保护邮件传输过程中的数据安全性。
-
RFC(Request for Comments):
- RFC是Internet Engineering Task Force(IETF)发布的文档系列,包含了许多互联网标准、协议和最佳实践,其中包括了邮件协议相关的RFC,如SMTP、POP3、IMAP等。
这些协议共同构成了电子邮件通信的基础,允许用户通过各种邮件客户端和服务提供商之间进行互操作性的电子邮件传输和管理。
ch11 略
ch12 VPN与IPSecVPN
概述
虚拟专用网络(VPN)的功能:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用,VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访同。VPN可通过服务器、硬件、软件等多种方式实现・
虚拟:不需要拥有实际的长途线路,使用公共网络资源建立自己的私有网
专用:可以定制最符合自身需求的网络
核心技术:隧道技术
VPN分类
当谈到 VPN 分类时,一个重要的维度是基于 VPN 连接的方向。这包括客户端到局域网(Client-to-LAN)VPN 和站点到站点(Site-to-Site)VPN。
客户端到局域网 VPN(Client-to-LAN VPN):
这种类型的 VPN 允许单个用户或客户端设备(如笔记本电脑、智能手机)通过公共网络连接到局域网(LAN)。它常见于企业环境中,允许远程员工或移动设备访问公司内部资源。通常使用的身份验证方法包括用户名/密码、数字证书等。
站点到站点 VPN(Site-to-Site VPN):
这种类型的 VPN 是用于连接两个或多个不同地理位置的网络,通常是两个企业办事处之间或企业办事处与数据中心之间的连接。它允许安全地在这些网络之间传输数据,使它们看起来像是一个单一的网络。站点到站点 VPN 通常使用 IPsec 或其他隧道协议来加密通信。
这两种 VPN 类型各自适用于不同的使用场景,并且具有不同的配置和管理要求。
ch13 网络地址转换NAT
网络地址转换(NAT,Network Address Translation)是一种网络技术,用于将私有网络内部的IP地址转换为公共网络的IP地址,以实现局域网内部主机与外部网络的通信。NAT通常被用于解决IPv4地址枯竭的问题,以及提供网络安全和隐私保护。
以下是NAT的基本工作原理和主要类型:
-
工作原理:
- 当私有网络内的主机尝试访问外部网络时,NAT设备会拦截这些请求,并将其源IP地址和端口转换为路由器或防火墙的公共IP地址和一个唯一的端口号。
- 外部网络返回的数据包首先发送到路由器或防火墙,然后由NAT设备根据转换表将其转发到对应的私有网络主机。
-
NAT类型:
- 静态NAT(Static NAT):一对一映射,将私有IP地址映射到固定的公共IP地址上,通常用于服务器或特定设备的访问。
- 动态NAT(Dynamic NAT):将私有IP地址动态映射到一组公共IP地址中的某一个,通常会创建一个地址池来管理映射关系。
- PAT(Port Address Translation,端口地址转换):也称为NAPT(Network Address Port Translation),是一种将多个私有IP地址映射到单个公共IP地址的NAT技术,通过修改端口号来区分不同的内部主机。
-
优点:
- 节省公共IP地址资源,延长IPv4地址池的使用寿命。
- 提供了一定程度的网络安全性,隐藏了内部网络结构,增强了网络隐私性。
- 允许多个内部主机共享单个公共IP地址,提高了网络效率。
-
缺点:
- 可能会引入单点故障,如果NAT设备出现问题,整个网络的外部通信将受到影响。
- 可能会引起一些网络应用的功能受限,如P2P连接、VPN等。
- 使得网络管理和监控变得更加复杂。