一、Ethernet协议(以太网协议)
1.1 概念
Ethernet(以太网)是一种计算机网络协议,用于在局域网中传输数据。它是最常用的有线局域网技术之一,采用CSMA/CD(载波侦听多路访问/冲突检测)技术来解决网络冲突的问题。
Ethernet协议定义了物理层和数据链路层的规范,它包括以下几个方面:
- 物理层规范
- Ethernet使用同轴电缆、双绞线或光纤等媒介传输数据,规定了传输介质的接口标准、连接方式、信号电平和传输速率等参数。例如,10BASE-T以10Mbps的速度在双绞线上传输数据,1000BASE-SX以1Gbps的速度在光纤上传输数据。
- 数据链路层规范
- Ethernet规定了数据帧的格式和传输方式,包括帧头、帧尾、MAC地址等信息。帧头包含了目的MAC地址和源MAC地址等信息,用于标识数据包的发送方和接收方。帧尾则包含了帧校验序列,用于保证数据的完整性。
- CSMA/CD技术
- CSMA/CD技术是Ethernet协议用于解决网络冲突问题的重要手段。当多台主机同时发送数据时,会发生网络冲突。为了解决这个问题,Ethernet规定了一种策略,即在发送数据之前侦听信道上的情况,如果没有其他主机在发送数据,则可以继续发送;否则,就采取一定的算法来处理冲突。
1.2 Ethernet帧格式以及各个字段长度
1.2.1 Ethernet II帧格式
- Preamble(前导码):用于接收方与发送方的同步,7个字节,每个字节的值固定为0xAA
- SFD(start frame delimiter):帧起始定界符,用于标识一个以太网帧的开始,值固定为0xAB
- DST && SRC:分别表示目标地址和源地址。均为6个字节长度。如果传输出去的目标地址第一位是0,表示这是一个普通地址;如果是1,则表示这是一个组地址。
- Length/Type:通常这个字段用于指定报文头后所接的数据类型。通常使用的值包括:IPv4(0x0800),IPv6(0x86DD),ARP(0x0806)。而值0x8100代表一个Q-tagged帧(802.1q)。通常一个基础的以太网帧长为1518字节,但是更多的新标准把这个值扩展为2000字节。
- MAC Client Data:数据主体,最小长度为46字节(加上帧头12字节,CRC4字节,加上type的2字节刚好64字节),当数据主体小于46字节时,会添加pad字段。选取最小长度是出于冲突检测的考虑(CSMA/CD)。而数据字段最大长度为1502字节。(一个数据帧的范围64~1518字节)
- FCS(Frame Check Sequence):也叫CRC(Cyclic Redundancy Check),CRC是差错检测码,用来确定接收到的帧比特是否正确。
1.2.2 IEEE802.3帧格式
- IEEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。
- Length字段定义了Data字段包含的字节数。
- 逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。
- SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。Org Code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
-
当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。
-
当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多种协议。
-
DSAP和SSAP其他的取值均为纯IEEE802.3帧。
-
二、ARP协议(地址解析协议)
2.1 原理
- ARP协议:将一个已知的IP地址解析为MAC地址,工作在数据链路层,封装在数据链路层的上层
- 当源设备向目标设备发送数据时,源设备首先会检查自身的ARP缓存表,查看表中是否存有目标设备的MAC地址。如果表中有记录,则直接将数据发送到对应的MAC地址,否则源设备会发送一个ARP请求广播(MAC地址全为F)到局域网络上的所有主机, 当请求的目标收到了ARP报文后,进行单播响应。
2.2 报文字段
2.3 ARP攻击原理
- 攻击主机向靶机发送ARP应答报文,报文中携带虚假的MAC地址,所以靶机想要与其他主机进行通信时,会将其他主机的MAC地址记录为虚假的MAC地址,导致无法正常通信。
2.4 ARP欺骗原理
- 攻击主机通过向靶机发送应答报文,报文中携带真实的MAC地址(一般是攻击主机自己的MAC),靶机收到后记录该MAC地址,下次通信就会将数据发送到该MAC地址上。
- 攻击主机需要开启转发功能,靶机可以正常通信,但是数据是经由攻击主机转发,从而攻击主机就能截获靶机的通信流量。
2.5 APR攻击和欺骗实验模拟
- 不管攻击还是欺骗都是在ARP应答报文中产生
- 准备两台虚拟机,其中攻击主机为kali
- 在kali上安装工具
apt-get install -y dsniff
- 靶机的ip地址设为:192.168.10.1,网关为192.168.10.254
# arp攻击:攻击主机告诉靶机(10.1),我是网关(10.254),你要上网的话就把数据发送给我
#结果:造成靶机断网
# -t 攻击的目标地址 自己设置的地址
arpspoof -t 192.168.10.1 192.168.10.254
# arp欺骗,同时欺骗靶机和网关,相当于中间人的身份,靶机和网关直接的数据交换,需要经由攻击主机来转发
# 攻击主机开启转发功能:/proc/sys/net/ipv4下的ip_forward中,默认值为0(关闭状态),修改为1,开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 对靶机进行欺骗,告诉靶机我是网关
arpspoof -t 192.168.10.1 192.168.10.254
# 对网关进行欺骗,告诉网关我是靶机
arpspoof -t 192.168.10.254 192.168.10.1
2.6 研判ARP攻击/欺骗
2.6.1 APR攻击造成主机网络无法通信
- 进行问题排查
- 确定网卡的物理连接:ping 127.0.0.1
- 确定是否配置了正确的IP地址,如果使用DHCP自动获取的方式,没有获取到对应的TCP/IP参数,主机会自动给自己配置一个169.254.x.x网段的IP
- 一直不停去ping 网关, 同时不停地清理arp缓存表,然后通过抓取ARP报文,然后去查看是否有不同的网关MAC地址。(因为ping之前,如果缓存表之中没有网关MAC地址,那么会向网关发送一个广播请求,真实的网关就会回应)
- 如果攻击者是去欺骗的网关,在客户机上排除比较困难,这时候可以确定的是网关没有绑定客户机的MAC地址,可以在客户机上尝试修改IP
2.6.2 ARP欺骗研判
- 查看ARP缓存表,网络IP是否对应了多个MAC地址
- tracert跟踪路由,如果第一条不是自己的网关,说明遭受了ARP欺骗
- 防御措施——ARP绑定(主机和网关上同时绑定):
- arp绑定(命令出现拒绝访问可以使用添加邻居的时候)
arp -s IP地址 MAC地址
- 通过netsh添加邻居地址
netsh interface ip add neighbors "主机名" "IP地址" "MAC地址"
三、Internet协议(互联网协议)
3.1 TCP/IP体系的核心部分
属于网络层协议,网络层封装的IP头部,网络层所传输的是IP数据包
3.2 IP数据包格式
- 版本(Version):标识是IP协议版本(IPv4或IPv6)
- 4 位二进制数,表示 IP 协议的版本号,IPv4 的版本号为 0100,IPv6 的版本号为 0110
- 头部长度(Header Length):标识IP头部的长度(因为IP头部中有一个可选项,可选项是不固定的)
- 区分服务字段(Differentiated Services Field):提供网络层Qos(服务质量),为网络通信提供更好的服务,做网络层的流量控制(流量整形)
- 总长度(Total Length):标识整个IP数据包的长度
- 标识、标志、段偏移量
- 标识号(Identification):16 位二进制数,用于标识 IP 数据包的唯一性,通常与数据包的来源和目的相关
- 标识标志(Flags):3 位二进制数,用于指示是否分片以及分片的状态,包括:第一片、中间片和最后一片
- 片偏移(Fragment Offset):13 位二进制数,用于表示分片数据包在原始数据包中所处的位置偏移量。
- TTL存活时间(Time to Live)
- 8 位二进制数,表示 IP 数据包的生命周期(即允许经过的路由器数量),每经过一个路由器就减少 1,如果到达目的地时该值为 0,则丢弃该数据包
- 存活时间一般是根据主机的操作系统确定,如果主机的操作是windows,存活时间一般为128,如果主机的操作系统是Linux,存活时间一般为64
- 协议(Protocol):标识上层使用的协议,TCP为6,UDP为17
- 首部校验和(Header Checksum):用于校验IP头部
- 源地址(Source Address)
- 目的地址(Destination Address)
四、ICMP协议(internet控制报文消息协议)
4.1 基本内容
- internet控制报文消息协议,在主机和路由器之间去传递控制报文消息
- 控制报文消息:路由是否可达,网络通不通,主机是否可达
- 常用的ping命令用于检测网络连通性,使用的就是ICMP协议
- 属于网络层协议,当时封装在网络层的上层
- 封装结构:
4.2 原理
- 它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
- ICMP的功能是检错而不是纠错;
- 它将出错的报文返回给发送方的设备,发送方根据ICMP报文确定「错误类型」,从而更好的重发错误的数据包。
4.3 ICMP协议常见类型
4.4 ICMP重定向
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发。
PC去访问192.168.20.20,正常情况下交给自己的网关R1,再由R1转发给R2,从而路线就是属于非优化路由
# R1配置
en #进入特权模式
conf t #进入全局配置模式
int f0/0 #进入f0/0接口
ip add 192.168.1.100 255.255.255.0 #为接口添加一个IP地址
no shut #开启接口
int loopback 0 #进入本地回环接口
ip add 192.168.10.10 255.255.255.0 #为回环接口添加一个IP地址
no shut
# R2配置
en
conf t
int f0/0
ip add 192.168.1.200 255.255.255.0
no shut
int loopback 0
ip add 192.168.20.20 255.255.255.0
no shut
# PC配置
en
conf t
int f0/0
ip add 192.168.1.10 255.255.255.0
no shut
exit
no ip routing #PC使用的是路由器模拟,关闭设备路由功能
ip default-gateway 192.168.1.100 #为主机设置网关为1.100
4.5 ICMP重定向攻击
# 在kali上使用netwox工具实施icmp重定向网关
#安装 netwox 工具
apt-get install -y netwox
#实施 ICMP 重定向,直接指定网关,使用 86 模块
netwox 86 -g ...
五、TCP协议(传输控制协议)
5.1 概述
TCP(Transmission Control Protocol)是一种在计算机网络中广泛使用的传输层协议。它提供了可靠的、面向连接的数据传输,确保数据的准确性、完整性和顺序性。
在数据传输之前需要去进行连接的建立,数据传输完成后需要连接的释放,单播通信(点到点),可靠的传输
5.2 三次握手和四次挥手
5.2.1 TCP三次握手
- 第一次握手:客户机向服务器发送一个
SYN(seq=x,SYN=1)
报文,表示请求建立连接。此时客户机处于SYN_SENT
状态,等待服务器确认。 - 第二次握手:服务器收到客户机发送的SYN报文后,回应一个
SYN-ACK(SYN=1, ACK=1, seq=y, ack=x+1)
报文。此时服务器处于SYN_RCVD
状态。 - 第三次握手:客户机收到服务器的SYN-ACK报文后,也向服务器发送一个
ACK(ACK=1, ack=y+1)
报文,表示确认服务器响应。此时客户机和服务器都处于ESTABLISHED
状态,表示已经成功建立连接。-
SYN=1
表示请求连接;SYN=1 ACK=1 表示对方同意连接;ACK=1 表示前面的确认字段有效 -
SYN_SENT
:客户机去建立连接状态 -
LISTEN
:服务器监听某个端口状态,被动等待连接 -
SYN-RCVD
:服务器等待客户机进行第三次握手(半连接状态) -
ESTABLISHED
:已经建立连接状态
-
5.2.2 TCP四次挥手
以客户机主动断开连接为例
- 第一次挥手:客户端向服务器发送一个
FIN(seq=u)
报文,表示要断开TCP连接。此时客户端处于FIN_WAIT_1
状态,等待服务器响应。 - 第二次挥手:服务器收到客户端的FIN报文后,回应一个
ACK(ACK=1, seq=v,ack=u+1)
报文,表示已经收到客户端的请求。此时服务器处于CLOSE_WAIT
状态。 - 第三次挥手:服务器回应客户端的请求后,不会马上进行TCP断开连接。服务器会确认断开连接之前,所有传输到客户端的数据是否已经传输完毕。确认数据传输完毕后,向客户端发送一个
FIN-ACK(FIN=1, ACK=1, seq=w, ack=u+1)
报文。此时服务器处于LAST_ACK
状态。 - 第四次挥手:客户端收到服务器的FIN-ACK报文后,向服务器发送一个
ACK(ACK=1, seq=u+1,ack=w+1)
报文,表示确认服务器请求。此时客户端处于TIME_WAIT状态,等待一段时间(通常为2MSL)后才会转换为CLOSED
状态。-
CLOSE_WAIT
:一般是服务器的关闭等待状态(服务器还未完成数据传输,等待数据传输完成后再发送FIN+ACK报文断开连接) -
TIME_WAIT
:一般是客户机超时等待时间(一般为两秒),客户机完成4次挥手后,等待2秒后关闭连接
-
5.3 TCP报文字段(传输层头部20+传输层选项12+网络层头部20+数据链路层4=66)
- 源端口(Source Port):发送方的端口号,一般情况下是随机的,在某些特定的情况下是固定端口
- 例如123端口:服务器和客户端都是123端口, 123端口是一个UDP端口,通常用于NTP(网络时间协议)服务,用于同步计算机的时钟。
- 目的端口(Destination Port):接收方,一般是服务器所开放的端口
- 序号(Sequence Number):当前请求连接时会自动生成一个随机序号,在此数据流中的报文都是沿用此序号(下一次请求的序号 = 这个序号+数据长度)两个序号, 一个是客户端向服务端发起请求生成的序号, 一个是服务端同意客户端连接生成的序号。 后续的序号都是在这两个序号的基础上进行的。
- 确认号(Acknowledgment Number):对上一个报文的确定,在上一个报文的序号上做增加
- 头部长度(Header Length):标识传输层的报文头部(因为传输层头部中有一个可选项,所以不是固定的)
- flags(标志位):标识了TCP的报文类型
-
urgent (URG)
:紧急位,表示本报文段中发送的数据是否包含紧急数据。URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效 -
Acknowledgment (ACK)
:表示前面的确认号字段是否有效。ACK=1 时表示有效。只有当 ACK=1 时,前面的确认号字段才有效。TCP 规定,连接建立后,ACK 必须为 1。 -
Push (PSH)
:告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来 -
Reset (RST)
:表示是否重置连接。如果 RST=1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接 -
Syn (SYN)
:在建立连接时使用,用来同步序号。当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段;当 SYN=1,ACK=1 时,表示对方同意建立连接。SYN=1 时,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中 SYN 才为 1 -
Fin (FIN)
:标记数据是否发送完毕。如果 FIN=1,表示数据已经发送完成,可以释放连接
-
5.4 常见的TCP协议以及对应的端口号
5.5 TCP半连接状态
- TCP 半连接状态指的是在 TCP 三次握手过程中,客户端发送了 SYN 报文并进入了 SYN_SENT 状态,但服务器还没有回复 SYN-ACK 报文确认连接请求的状态。此时,客户端处于半连接状态。
- 客户机向服务器发送SYN报文后,服务器响应SYN+ACK报文后,客户机不进行第三次握手,从而服务器就会进入半连接状态。
5.6 TCP半连接攻击
客户机向服务器发送SYN报文后,服务器响应SYN+ACK报文后,客户机不进行第三次握手,从而服务器就会进入半连接状态,服务器就需要消耗一部分资源来保持这个连接,Windows操作系统中,默认情况,内核参数已经配置了防此攻击行为
# 使用kali作为攻击主机
hping3 -S -p 80 --flood --rand-source -d 10000 -c 1000 192.168.88.203
# -S 只发送SYN报文
# -p 80 指定目标端口
# --flood 尽可能快速发送
# --rand-source 指定随机地址发送
# -d 指定数据包大小
# -c 指定每次发送的数据包个数
六、UDP协议(用户数据报文协议)
6.1 UDP协议的特点
- 没有各种连接:在传输数据前不需要建立连接,也避免了后续的断开连接。
- 不重新排序:对到达顺序混乱的数据包不进行重新排序
- 没有确认:发送数据包无需等待对方确认。因此,使用UDP协议可以随时发送数据,但无法保证数据是否能成功被目标主机接收。
6.2 报文段
- 源端口:这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报文的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0。这样,接收端的应用程序就不能发送响应了。
- 目的端口:接收端计算机上 UDP 软件使用的端口,占据 16 位。
- 长度:该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8。
- 校验值:该字段占据 16 位,可以检验数据在传输过程中是否被损坏
6.3 UDP常见端口号对应的应用层协议
6.4 kali实施UDP flood攻击
hping3 -q -n --rand-source --udp -p 53 --flood 192.168.2.100 -d 1000
# -q 安静模式
# -n 数字化输出,象征性输出主机地址
# --rand-source 随机源地址
# --udp UDP模式
# -p 目标端口
# --flood 尽最快发送数据包,不显示回复
# -d 发送数据包大小
6.5 防御UDP Flood攻击
UDP协议与TCP协议不同,是无连接状态的协议,因此针对UDP Flood的防护非常困难,UDP攻击是一种互损的攻击方式,消耗对方资源的同时也消耗攻击者本身的资源
1、使用防火墙防御DDOS
- 静态过滤:直接丢弃位于黑名单中的IP地址发出的流量,或者直接让位于白名单的IP地址发出的流量通过。
- 畸形报文过滤:过滤利用协议栈漏洞的畸形报文攻击。
- 扫描窥探报文过滤:过滤探测网络结构的扫描型报文和特殊控制报文。
- 源合法性认证:基于应用来认证报文源地址的合法性,这些应用支持协议交互。清洗设备通过发送源探测报文及检查响应报文来防范虚假源或工具发出的攻击流量。
- 基于会话防范:基于会话来防御并发连接、新建连接或异常连接超过阈值的连接耗尽类攻击。
- 特征识别过滤:主要靠指纹学习和抓包分析来获得流量特征,防范僵尸工具或通过代理发起的攻击流量,以区别正常用户的访问行为。
- 其中抓包分析是指对异常/攻击流量抓包以生成抓包文件,通过对抓包文件进行解析和提取指纹,能够获取流量特征。流量整形:流量经过此前各分层过滤之后,流量依然很大,超过用户实际带宽,此时采用流量整形技术,确保用户网络带宽可用。
七、DHCP协议(动态主机配置协议)
7.1 作用
主要是为局域网中的客户机去提供TCP/IP参数(IP地址、子网掩码、默认网关、DNS服务器地址)
7.2 交互过程
-
发现阶段
,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。如果说没有寻找到DHCP服务器,客户机就会给自己配置一个169.254网段的IP地址。(广播) -
提供阶段
,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。(广播) -
选择阶段
,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。(广播) -
确认阶段
,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。(广播) -
重新登录
。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。 -
更新租约
。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过50%时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。(单播) -
当租约时间达到87.5%
的时候,客户机会判定原本的DHCP服务器不存在,会继续向网络中去发送DHCP request报文(广播),寻找是否有其他DHCP服务器为我提供我当前的IP的地址。 -
当租约时间到达100%时
,客户机会主动释放自己当前的IP地址参数,重新去寻找网络中的DHCP服务器,发送DHCP discover报文。
7.3 DHCP的8种报文
-
DHCP discover
:这是 DHCP 客户端首次登录网络时进行 DHCP 过程的第一个报文,用来寻找 DHCP 服务器。 -
DHCP offer
:DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。 -
DHCP request
:此报文用于以下三种用途:- 客户端初始化后,发送广播的 DHCP REQUEST 报文来回应服务器的 DHCP OFFER 报文
- 客户端重启初始化后,发送广播的 DHCP REQUEST 报文来确认先前被分配的 IP 地址等配置信息。
- 当客户端已经和某个 IP 地址绑定后,发送 DHCP REQUEST 报文来延长 IP 地址的租期(一般情况下,租约时间到50%时,客户机会再次发送DHCP request报文)。
-
DHCP Ack
:服务器对客户端的 DHCP REQUEST 报文的确认响应报文,客户端收到此报文后,才真正获得了 IP 地址和相关的配置信息。 -
DHCP NAK
:当客户机发送DHCP request广播报文时,网络中的DHCP服务器无法为客户机提供客户机提供请求的IP地址时,发送NAK报文进行拒绝 -
DHCP inform
:客户端已经获得了 IP 地址,发送此报文的目的是为了从服务器获得其他的一些网络配置信息,比如网关地址、DNS 服务器地址等。 -
DHCP release
:客户端主动释放当前的TCP/IP参数 -
DHCP decline
:当客户端发现服务器分配给它的 IP 地址发生冲突时会通过发送此报文来通知服务器,并且会重新向服务器申请地址。
7.4 DHCP端口号
- UDP67
- DHCP 服务器使用 UDP 端口号 67 来监听客户端发来的广播 DHCP Discover 报文,并回应相应的 DHCP Offer 报文。
- UDP68
- DHCP 客户端则使用 UDP 端口号 68 发送广播 DHCP Discover 报文,等待服务器回应的 DHCP Offer 报文。
7.5 DHCP欺骗
使用DHCP Dos攻击去把原本的DHCP服务器地址池占满,新加入的客户机就无法从原本的DHCP服务器上获取IP参数,再伪造一台DHCP服务器出来为新加入的客户机提供IP参数,达到欺骗效果。
八、DNS协议(域名系统)
8.1 作用
将域名和IP地址相互映射
8.2 域名结构
- 采用倒树状
- 根:使用
.
表示,全球只有13个根域服务器 - 顶级域:(组织
com商业、edu教育、org非盈利性组织...
、地区或国家cn中国、hk香港、us美国
) - 二级域: 二级域名(Second-Level Domain)是指在顶级域名的基础上再添加一个子域的域名形式。例如,在
.com
这个顶级域名下添加一个子域example.com
,则example
就是二级域名。 - 三级:二级子域: 二级子域(Second-Level Subdomain)是指在主域名的基础上再添加一个子域的域名形式。例如,在
example.com
这个主域名下添加一个子域subdomain.example.com
,则subdomain
就是二级子域。 - …
- 主机名:根据一个二级域名可以有多台主机
- 根:使用
- 完全限定域名FQDN: 一个 FQDN 包含了主机名和域名两部分,以点号分隔。例如,
www.example.com
是一个 FQDN,其中www
是主机名,example.com
是域名。 一个二级域名
8.3 查询过程
- 客户机要访问一个域名,首先向自己的首选dns发送域名解析请求。
- 首选dns服务器上没有记录,根据服务器上的根提示去请求根域服务器。
- 根域服务器上维护的是顶级域的信息,返回给首选dns顶级域的信息
- 首选dns又去请求顶级域服务器
- 顶级域服务器上维护的是二级域信息,返回给首先dns二级域服务器
- 首选dns又去请求二级域服务器
- 二级域服务器上维护的是整个二级区域的所有域名信息,可以直接返回域名对应的ip地址
- 首选dns收到对应的ip地址后,返回给主机
- 递归查询
- dns服务器上有域名和对应的IP的记录能够直接返回结果
- 迭代查询
- dns服务器上没有域名和对应IP的记录,逐级去请求根域名服务器、顶级域名服务器、二级域名服务器等,直至找到所需的解析记录。
- 递归查询
8.4 DNS的记录
8.4.1 常见的DNS记录
- A 记录 - 保存域的 IP 地址的记录
- AAAA 记录 - 包含域的 IPv6 地址的记录(与 A 记录相反,A 记录列出的是 IPv4 地址)
- CNAME 记录 - 将一个域或子域转发到另一个域,不提供 IP 地址
- MX 记录 - 将邮件定向到电子邮件服务器
- TXT 记录 - 可让管理员在记录中存储文本注释。这些记录通常用于电子邮件安全
- NS 记录 - 存储 DNS 条目的名称服务器
- SOA 记录 - 存储域的管理信息
- SRV 记录 - 指定用于特定服务的端口
- PTR 记录 - 在反向查询中提供域名
8.5 DNS的端口号
UDP/53:DNS 查询通常使用 UDP 协议在 53 端口上进行传输。
TCP/53:特定情况下会使用TCP协议的53端口进行数据传输。
- 响应超过UDP最大长度:DNS响应数据包的大小有限制,一般为512字节。如果DNS响应超过UDP的最大长度,就需要使用TCP来传输完整的响应。
- 消息可靠性要求高:相对于UDP,TCP是一种面向连接、可靠传输的协议。在一些对消息完整性和可靠性要求较高的场景,如一些安全策略或防火墙设备中,可能会优先选择使用TCP的53端口进行DNS查询和响应。
- DNS隧道和加密:在某些特定的网络配置中,如DNS隧道或DNS-over-HTTPS(DoH)等,为了绕过网络限制或提供额外的安全性,可能会将DNS流量转发到使用TCP的53端口。
8.6 Flags:2字节,标识位设置
- 第1位:msg类型,0为请求(Query)1为响应(Response)
- 第2~5位:opcode,查询种类,0000标识标准Query
- 第6位:是否权威应答(应答时才有意义)
- 第7位:因为一个UDP报文为512字节,所以该位指示是否截断超过的部分
- 第8位:是否请求递归(这个位被请求设置,应答的时候使用相同的值返回)
- 第9位:允许递归标识。此字段在应答字段中使用,0表示应答服务器不支持递归查询,1表示应答服务器支持递归查询
- 第10~12位:保留位(设置为0)
- 第13~16位:应答码(0:没有错误,1:格式错误,2:服务器错误,3:名字错误,4:服务器不支持,5:拒绝,1-5:保留值)
九、FTP协议(文件传输协议)
9.1 作用
应用层的文件传输协议,用于在网络上进行文件传输。
9.2 端口号
- TCP/20:该端口用于在 FTP 控制连接建立成功后,建立数据连接
- TCP/21:该端口用于建立 FTP 客户端与服务器之间的控制连接
9.3 FTP的主动模式和被动模式
- 主动模式:客户机向服务器的TCP/21端口号发起TCP连接请求,连接建立后,客户机发送port指令,告诉服务器使用主动模式,服务器使用20号端口主动向客户机发起数据请求。
- 被动模式:客户机向服务器的TCP/21端口号发起TCP连接请求,建立连接后,客户机发送pasv指令,告诉服务器使用被动模式,服务器打开一个高端口,等待客户机向此端口发起数据传输请求。
十、HTTP协议(超文本传输协议)
10.1 作用
超文本传输协议,主要用于浏览器和服务器之间进行数据传输。
10.2 端口号
TCP/80
10.2 URL结构
- 协议://(http://、https://、ftp://)
- 主机名:端口号
- /资源路径
10.4 HTTP请求头
-
Host
:指定请求的目标服务器主机名和端口号 -
User-Agent
:指定客户端程序的名称、版本号和操作系统等信息 -
Referer
:请求中URL的原始获取方 -
Accept
:客户端可接受的MIME类型 -
Accept-Language
:客户端期望接受的自然语言类型 -
Accept-Encoding
:客户端能够进行解码的数据编码方式 -
Authorization
:客户端的身份信息验证
10.5 HTTP响应头
-
Accept-Ranges
:服务器指定它对某个资源请求的可接受范围 -
Age
:服务器规定自服务器生成该响应以来所经过的时间,以秒为单位,主要用于缓存响应 -
Etag
:提供实体标签的当前值 -
Location
:因资源已经移动,把请求重定向至另一个位置,与状态编码302或者301配合使用 -
Proxy-Authenticate
:类似于WWW-Authenticate,但回应的是来自请求链(代理)的下一个服务器的认证 -
Retry-After
:由服务器与状态编码503 ( 无法提供服务)配合发送,以标明再次请求之前应该等待多长时间 -
Server
:标明Web服务器软件及其版本号 -
Vary
:用于代理是否可以使用缓存中的数据响应客户端的请求 -
WWW-Authenticate
:提示客户端提供用户名和密码进行认证,与状态编码401 (未提权)配合使用530
10.6 Content-Type的四种方式
-
application/x-www-form-urlencoded
(URL encoded)- 如果不设置 Content-type 的值,默认就是 urlencoded
-
multipart/form-data
(键值对型数据) -
application/json
(Json 类型数据) -
text/xml
(xml)
10.7 响应状态码各状态码含义
- 1xx:指示信息,表示请求已接收,继续处理
- 100:继续。客户端应继续请求
- 101:切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议。
- 2xx:成功,操作被成功接收并处理
- 200:请求成功。
- 201:已创建。成功请求并创建了新的资源。
- 202:已接受。已经接受请求,但未完成处理。
- 204:无内容。服务器成功处理,但未返回内容。
- 206:部分内容。服务器成功处理了部分内容。
- 3xx:重定向,需要进一步操作以完成请求
- 301:永久重定向。服务器通知客户端请求的资源已经被永久性移动到了新的位置,并且所有对该资源的未来请求都应该使用新的 URL。
- 302:临时重定向。本次请求使用新的URL。
- 303:查看其他地址。表示请求对应的资源存在另一个URL,应重新请求新的URL
- 304:未修改。请求的资源没有发生变化。
- 307:临时重定向:与302类似。使用GET请求重定向。
- 4xx:客户端错误,请求包含语法错误或无法完成请求
- 400:客户端请求的语法错误,服务器无法理解。
- 401:请求需要用户身份认证。
- 403:服务器拒绝执行此次请求。
- 404:服务器上无法找到请求的资源。
- 5xx:服务器端错误,服务器在处理请求的过程中发生了错误
- 500:服务器内部错误,无法完成请求。
- 503:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
十一、HTTPS协议(安全套接层超文本传输协议)
http+ssl(tls),安全套接层(安全的传输层)
广泛使用的是TCP/443,也有一部分使用的是UDP/443
11.1 加密算法
- 对称加密算法
- 加密密钥和解密密钥相同,DES、AES等
- 非对称加密算法
- 加密密钥和解密密钥不一致(公钥和私钥,公钥可以公开在网络中),RSA、ECC等
11.2 摘要算法
摘要算法又称哈希算法、散列算法。将任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)
- MD5、SHA1、SHA128、SHA256、SHA512等
11.3 证书包含内容
- 版本号:指证书的版本号,常见的有 X.509 版本 1、2 和 3。
- 序列号:指证书的唯一标识符,用于区分不同的证书。
- 颁发者信息:指证书颁发机构的信息,包括颁发者名称、组织机构代码等。
- 有效期:指证书的有效期限,包括起始日期和截止日期,超过有效期的证书会被认为无效。
- 使用者信息:指使用该证书的实体的信息,通常包括姓名、电子邮件地址等。
- 公钥信息:指证书中包含的公钥,用于加密和解密数据。
- 签名算法和签名值:指颁发者使用的签名算法和签名值,用于验证证书的真实性和完整性。
11.4 TLS交互过程
握手阶段一(Client Hello)客户机发起握手消息
-
Client Hello
:告诉服务器自己所支持的加密套件,生成一个随机数X
握手阶段二(Server Hello,Certificate,Server Key Exchange,Server Hello Done)服务器响应握手消息,将服务器证书发送给客户端,执行DH密钥协商 -
Server Hello
:服务器选择客户机所支持的一个加密套件,生成一个随机数y -
Certificate
:服务器将自己的证书发送给客户机
■ 证书里面会包含签名算法的公钥用于去解数字签名得摘要值
-
Server Key Exchange
:服务器开始进行密钥交互去生成对称密钥,产生一个pubkey发送给客户机
■ 服务器计算得出一个pubkey,通过自身生成的随机数加上客户机的随机数再加上自己隐藏数运算得出
-
Server Hello Done
:服务器告诉客户机握手报文结束
握手阶段三(Client Key Exchange,Change Cipher Spec,Encrypted Handshake Message )客户端进行密钥协商完成DH过程(因为主密钥是由客户端和服务器的随机数共同生成),随即改变密码规范,告诉服务器启用加密参数
-
Client Key Exchange
:客户机开始进行密钥交互去生成对称密钥,产生一个pubkey发送给服务器。
■ 客户机计算得出一个pubkey,通过自身生成的随机数加上客户机的随机数再加上自己隐藏数运算得出
■ 客户机已经拿到服务器的计算出来的pubkey,再次使用自己的隐藏数进行运算得出对称密钥 -
Change Cipher Spec
:根据服务器发来的pubkey生成对称密钥,改变密码规范。 -
Encrypted Handshake Message
:客户端完成握手阶段,加密握手消息。
握手阶段四(Change Cipher Spec,Encrypted Handshake Message)服务器响应客户端改变密码规范,启用加密参数文章来源:https://www.toymoban.com/news/detail-743925.html
-
Change Cipher Spec
:根据客户机发来的pubkey生成对称密钥,改变密码规范。 -
Encrypted Handshake Message
:服务器完成握手阶段,加密握手消息
十二、邮件交互协议
SMTP
(Simple Mail Transfer Protocol,简单邮件传输协议)和POP3
(Post Office Protocol version 3,邮局协议第三版)/IMAP
(Internet Message Access Protocol,互联网信息访问协议)。文章来源地址https://www.toymoban.com/news/detail-743925.html
- 发送邮件对应的协议及协议相关内容
- SMTP:简单邮件传输协议,默认端口号 25,主要用于传输电子邮件(一般用于发送邮件)
- 下载邮件副本对应的协议及协议相关内容
- POP3:邮局协议第3版,默认端口号 110,主要用于下载接收邮件(一般用于接收邮件)
- 在线查看邮件对应的协议及协议相关内容
- IMAP4:网际消息访问协议第4版,默认款口号143,主要用于在线查看邮件(一般用于接收邮件)
到了这里,关于网络安全:常用协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!