【(待整理)网络安全、内网渗透知识基础】

2、DMZ区域:在向外界提供在线服务的同时,组织外部用户直接访问内网,以确保内部网络环境的安全。
3、在安全区域划分中DMZ区通常用作:对外服务区。
4、MSC业务全阻超过:60分钟,即属重大故障。
5、发生紧急故障后,地市公司必须在:15分钟内,上报省监控。
6、上传功能常用安全监测机制:客户端检查机制javascript验证、服务端MIME检查验证、服务端文件扩展名检查验证机制。
7、一般的防火墙能实现:隔离公司网络和不可信的网络、隔离内网、提供对单点的监控,(特洛伊病毒无法被监测)。
Intranet是企业内部的私有网络,其主要目的是把企业的信息和其他各种资源在员工之间进行共享
8、HTTP状态码是反映web请求的一种描述,表示请求资源不存在的是:404
9、SYN FLOOD攻击:拒绝服务攻击。攻击者想办法让目标机器停止提供服务
10、序列号预测攻击:攻击者预测从主机A期望从主机B发送到A的序列号,让主机A认为它来自B
11、IEEE802.1Q的标记报头将随着介质不同而变化,标记实际上嵌在:源MAC地址和目标MAC地址后
12、所谓日志系统就是对所指定对象的操作和操作的结果按时间有序的集合
13、SNMP:异步请求/响应协议,它的请求与响应没有必定的时间顺序关系,它是一非面向对象的协议
14、代码注入是一种技术,通过向目标进程插入独立运行代码,并使之运行,从而实现对目标程序的控制
15、SQL联合查询注入:union select,对两个表联合查询
16、风险评估包括:资产评估、脆弱性评估、威胁评估
17、finger服务:查询站点上的在线用户清单及其他一些有用的信息。
18、关闭路由器的finger服务:no finger service
19、TCP/IP握手三通过程(SYN:同步标志,ACK:确认标志):1.客户端发送SYN包(syn=j),进入SYN_SEND状态 2.服务器收到SYN包,并确认客户的SYN(ack=j+1),同时自己发送SYN包(syn=k),即SYN+ACK包,进入SYN_RECV状态 3.客户端收到SYN+ACK包,向服务器发送确认包ACK(ACK=k+1),此后客户端和服务器进入ESTABLISHED状态
20、TCP/IP三次握手三通过程:1.(sys_connect)client(SYSC_SEND)->SYNC->server(LISEN)2.server(SYNC_RECV)->SYNC+ACK->client(SYNC_SEND)3.client(ESTABLISHED)->server(ESTABLISHED)
21、完整备份策略是备份周期对整个系统所有文件(数据)进行备份,是客服系统数据不安全最简单的方法。
22、LEAP认证过程中,AP仅仅担任转发通道的角色
23、Netbios协议:给局域网提供网络以及其他特殊功能。
24、可以通过禁止TCP/IP上的Netbios:禁止internet用户通过\IP的方式访问主机。

二、Day-2

1、堡垒机:运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警。
2、运维人员都需要远程登录跳板机,然后从跳板机登录其他服务器中进行运维操作。
3、跳板机:可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一。
4、双重宿主朱姐:一台至少配有两个网络接口的主机,可以充当这些接口相连的网络之间的路由器,在网络之间发送数据包,因为路由功能被关闭,所以可起到保护内网的作用。
5、屏蔽主机体系结构:屏蔽路由器+堡垒主机。屏蔽路由器负责与外网实施连接,并参与外网路由,仅提供路由和数据包过滤功能。堡垒主机被攻陷是最大的安全隐患。
6、屏蔽子网:在内部和外部网络之间建立一个被隔离的子网,用两台分组过滤路由器将这子网分别于内、外网络分开。
7、屏蔽子网的防火墙配置安全性最高。
8、思科路由器利用Ping命令,返回了“”,证明是连通的。
9、域名服务系统DNS的功能是:完成域名和IP地址之间的转换。
10、黑客入侵的方式:1.获取口令入侵:通过各种方式获取管理员或者用户的账号、密码进行入侵 2.远程控制入侵:网络控制远端计算机。 3.木马程序入侵:通过植入对方计算机,通知攻击者用户的ip地址以及预先设定的端口,攻击者利用潜伏的程序,修改用户的计算机参数设定,控制计算机。4.系统漏洞入侵:攻击者利用专业的工具发现漏洞,了解计算机存在的漏洞和缺点后,攻击者利用缓冲区溢出和测试用户的账号密码等方式,实现对该主机试探攻击。5.电子邮件入侵:包括电子邮件轰炸、邮件欺骗(谎称自己是系统管理员,要求用户修改口令和或者加载病毒程序)6.网络监听入侵:接受同一条物理信道上传输的所有信息,不管信息的发送方和接收方是谁。使用监听工具截取口令和账号在内的信息。
11、缓冲区溢出:计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。造成程序崩溃、拒绝服务或者跳转并执行一段恶意代码。
12、基于认证、漏洞、第三方程序入侵称之为:实施入侵。
13、防火墙的核心是:访问控制。
14、计算机病毒的特征是:潜伏性、传染性、隐蔽性。
15、网络系统安全是数据库安全的第一道保障。
16、渗透测试是评估潜在安全漏洞的过程、模拟黑客攻击。包括信息搜集、漏洞扫描、漏洞利用、权限提升等。
17、Brupsuite:渗透测试工具,用于对web应用进行安全测试和漏洞扫描,可对Intruder模块进行暴力破解。
18、Intruder模块:定制的高度可配置的工具,对web应用程序进行自动化攻击。
19、Mysql的协议端口默认值:3306.
20、SQL注入中耗时最长的是:时间盲注。
21、SQL注入:通过将恶意的sql查询或添加语句插入到应用的输入参数中,再在后台sql服务器上解析执行进行的攻击,是最常用的攻击数据库的手段。
22、文件上传漏洞:对用户文件上传部分的控制不足或者处理缺陷,导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件(包括木马、病毒、恶意脚本等)。
23、MIME:一种媒体类型,用来表示文档、文件或字节流的性质和格式。
24、使用brupsuite软件可绕过上传漏洞前端白名单校验。
25、白名单技术可以能够让企业批准的进程被允许在特定系统运行。
26、入侵检测系统(IDS):对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备,可积极主动的安全防护技术。
27、入侵检测系统对入侵行为的处理方式包括:拒绝、报警、日志记录、有限度的反击及跟踪。
28、使用配有计算机的仪器设备时,不应该做的事:更改登机密码和系统设置、自行安装软件、玩各种电脑游戏、将获得的图像、数据等资料存储在未予指定的硬盘分区上。
29、包过滤防火墙:互联网路由器,能够丢弃符合或者不符合特定条件的数据包。
30、代理防火墙:多宿主的服务器主机,是TCP和UDP传输关联的终点;能够理解应用层上的协议,时延较高、吞吐量低,能做复杂一些的访问控制、并做精细的认证和审核,可伸缩性较差。
31、ISP:网络业务提供商。BGP:边界网关协议:在路由选择域之间交换网络层可达性信息的路由选择协议。
32、UDP:用户数据报协议,非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地抓取来自应用的数据。
33、防火墙的作用:防止不希望的、未授权的通信进出被保护的网络,迫使单位强化自己的网络安全政策。
34、防火墙系统:由屏蔽路由器和代理服务器组成。
35、网关:网间连接器、协议转换器;在传输层上以实现网络互连,是最复杂的网络互连设备。
36、目前最好的防病毒软件能做到的是:检查计算机是否感染病毒,消除已感染的任何病毒;杜绝病毒对计算机的危害;查出计算机已感染的已知病毒,消除其中的一部分;检查计算机是否染有已知病毒并作相应处理。
37、漏洞评估是对IT系统的系统审查,用于发现、分类和确定安全漏洞的优先级。漏洞评估技术的优点:预知性和重点防护。
38、Nessus:使用人数最多的系统漏洞扫描与分析软件(远端系统安全扫描程序)。其扫描结果可以生产为TXT、PDF、HTML、Nessus、CSV、DB等。
39、网络型安全漏洞扫描器在工作时,仿真黑客从网络端发出数据包,以网络主机接收到的数据包相应作为判断标准,进而测试基于主机的网络操作系统等的漏洞。
40、主机型安全漏洞扫描器:针对UNIX、Linux、Windows NT等操作系统内部的安全问题进行更深入的漏洞扫描,可以弥补网络型漏洞扫描器仅仅通过网络对系统进行安全测试的不足;包括:重要资料锁定、密码检测、系统日志文件和文字分析、实时报警、产生分析报表、加密通信、安全知识库更新等。
41、SSID的简称包括:认证表示重置服务、业务组标识符。SSID用于标识无线局域网的名称、识别无线网络、连接到特定的无线网路、限制无线网络访问。
42、ORACLE中的数据加密方式:1.DES加密算法:是一种分组密码,以64位为分组对数据加密,密钥长度是56位,加密解密用统一算法。2.RC4加密算法:是一种流加密算法,密钥长度可变,加解密使用相同密钥,属于对称加密算法,包括初始化算法和伪随机自密码生成算法。
43、系统感染病毒后的现象:系统错误或系统崩溃,系统反应慢、网络拥塞,陌生的进程或服务,陌生的自启动。
44、无线网络中常见的三种攻击方式:中间人攻击、会话劫持攻击、拒绝服务攻击。
45、中间人攻击:在目标主机与另一方主机进行正常连接的过程中,攻击者通过拦截、插入、伪造、中断的方式,达到截获对方登录账号及密码、伪造身份的目的。
46、会话劫持攻击:攻击者作为第三方参与到正常的会话过程中,在正常的数据包中插入恶意数据,也可以在双方的会话当中进行监听、甚至代替某一方主机接管会话。
47、拒绝服务攻击:简称DoS攻击或洪水攻击,使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。
48、黑客利用最频繁的入侵方式:基于认证的入侵、基于漏洞的入侵、基于第三方程序的入侵。
49、基于协议的入侵检测:利用网络协议的高度规则性,快速地检测网络上不安全因素的存在。
50、网络协议:计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则集合。
51、私钥加密算法:又称对称加密算法,此算法加密和解密的密钥是相同的,密钥是不公开的(DES加密算法)。
52、公钥加密算法:又称非对称加密算法,加密和解密的密钥不同,其中一个是公钥、另一个是私钥。
53、公钥密码体制的应用主要在于:数字签名和密钥交换。
54、NAT(网络地址转换):将私有地址转化为合法的IP地址的转换技术。
55、NAPT(网络地址端口转换):多个内部地址使用同一地址不同端口转换成外部地址进行通信。
56、网络地址端口转换(NAPT)与网络地址转换(NAT)有什么区别:1.经过NAPT转换后,对于外网用户,所有报文都来自同一个IP地址。2.NAT支持网络层的协议地址转换(NAPT有了端口的概念)
57、基于网络的入侵检测系统:用原始的网络包作为数据源,将网络数据中检测主机的网卡设为混杂模式,该主机实时接收和分析网络中流动的数据包,从而检测是否存在入侵行为。
58、基于主机的入侵检测系统:根据操作系统的审计、跟踪日志或不存在于系统日志中的信息作为数据源以检测入侵。
59、计算机场地安全测试包括:温度、湿度、尘埃、照度、噪声、电磁场干扰环境场强、接地电阻、电压、频率、波形失真率、腐蚀性气体的分析方法。
60、一个强壮的密码应该包含8位以上的:字符、数字、符号、大小写混排,而且不应该是字典中的单词。
61、硬件安装维护重要安全提示:不要在雷雨天气进行故障处理,保持故障区域的干净、干燥,戴上防静电手套或防静电腕带再执行安装和更换操作,在使用和操作设备时需要按正确的操作流程来操作。
62、ARP欺骗:针对以太网地址解析协议ARP的攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不畅通。
63、DNS欺骗:攻击者冒充域名服务器,把查询的IP地址转化为攻击者的IP地址,用户上网就只能看到攻击者的主页。
64、网络欺骗方式:IP欺骗、ARP欺骗、DNS欺骗、WEB欺骗。
65、IP欺骗:行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。
66、web欺骗:使攻击者相信有可攻击窃取的资源,通过隐藏、伪造信息或安插错误信息,将攻击者引向这些错误的资源。,显著增加攻击者的工作量。
67、在SQL Server中创建数据库:1.创建数据库的权限默认授权sysadmin和dbcreator固定服务器角色的成员,但是它仍可以授予其他用户。2.创建数据库的用户将成为该数据库的所有者。3.在一个服务器上,最多可以创建32767个数据库。4.数据库名称必须遵循标识符规则。
68、数字证书:一种数字文档,证明用于加密在线资产的公钥的真实性;是由CA( Certificate Authority)权威机构发行的电子文档,是网络环境中的一种身份证。
69、IDS:入侵检测系统;NIDS:网络入侵检测系统;HIDS:主机入侵检测系统
70、SQL注入漏洞:数据交互中,前端的数据传入到后台处理时,没有做严格的判断导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行,导致数据库受损。
71、web应用,没有对攻击者的输入进行适当的编码和过滤,就用于构造数据库查询或操作系统命令时,可能导致注入漏洞。
72、摘要算法:通过一个函数,把任意长度的数据转化成一个长度固定的数据串(16进制字符串),其加密过程不需要密钥,且加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。
73、TCP序列号欺骗:通过TCP三次握手的过程,推测服务器的响应序列号实现,只要截获当前发送的TCP包,就能伪造下一个包的序列号。
74、交接班过程中,需要进行的重要操作、异常运行和事故处理,仍由交班人员负责处理。
75、EFS加密文件系统:windows2000/XP特有的实用功能,对NTFS卷上的文件和数据,可直接加密保存。
76、NTFS系统:windows文件格式,专门为网络和磁盘配额、文件加密等管理安全特性设计,比FAT格式更新且有更大的分区、更有效地管理磁盘空间,避免磁盘空间浪费。
77、OSI网络安全体系结构的五类安全服务:鉴别、访问控制、保密性、完整性、抗否认;鉴别:对身份及数据来源进行验证;访问控制:防止未授权用户非法访问资源;保密性:防止数据在传输过程中被破解;完整性:防止数据在传输过程中被篡改;抗否认性:防止发送方与接收方在执行各自操作后,否认各自所做的操作。
78、对于公司机密信息必须根据公司的相关规定予以适当的标识。
79、oracle数据库可以使用TCP协议通过8080端口进行连接,所以占用了8080端口
80、默认可通过web程序来远程管理oracle10g数据库,端口是8080。
81、XSS跨域脚本攻击:代码注入攻击,攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行,攻击者可获取用户的敏感信息如Cookie、SessionID等
82、Session会话控制:服务器为了保存用户状态而创建的一个特殊的对象,session用于存储信息。
83、Cookie:为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据。
84、需要彻底防范XSS攻击。
85、通过xp-cmdshell存储过程可以在数据库服务器中执行任意系统命令;xp-cmdshell开放接口:用SQL Server调用cmd命令,直接用SQL语句实现CMD操作。
86、古典加密主要采用的主要方法是置换、代换。
87、计算机的逻辑安全需要口令字、文件许可、查账等方法来实现。
88、oracle的弱算法加密机制:两个相同的用户名和密码在两个不同的oracle数据库机器中,将具有相同的哈希值。这些哈希值存储在SYS.USER$表中,可以通过向DBA_USERS这类的视图来访问。
89、rainbow表(彩虹表)生成器:用于加密散列函数逆运算的预先计算好的表,常用于破解加密过的密码散列(破解哈希值);如果知道oracle密码长度,用rainbow表生成器来破解其密码哈希值是绝对成功的。
90、非对称加密中,加密和解密使用的是不同的密钥。
91、针对不同的攻击行为,IPS需要不同的过滤器;每种过滤器都设有相应的过滤规则,以提高其过滤的准确性。
92、虚拟专用网络VPN的关键技术主要是隧道技术、加解密技术、密钥管理技术以及使用者与设备身份认证技术。
93、身份认证是判明和确认贸易双方真实身份的重要环节;不可抵赖性是认证机构或信息服务商应当提供的认证功能之一。

三、Day-3

1、归档日志是用于长期保存的,它是在线日志的离线拷贝版本,在线日志切换的时候,ARCH进程就会将这个刚刚关闭的在线日志文件的内容复制到磁盘上,长期保存;归档日志的主要用途是用于数据库的回复操作。
2、ORACLE数据库的归档日志是在线日志的备份。
3、归档进程ARCH就是负责在重做日志文件切换后将已经写满的重做日志文件复制到归档日志中,以防止循环写入重做日志文件时将其覆盖。
4、隧道技术的实质是用一种网络层的协议来传输另一种网络层协议,其基本功能是封装和加密,主要利用网络隧道实现。
5、IPsec是为IP网络提供安全性的协议和服务的集合,是一组基于网络层的,应用密码学的安全通信协议族。通信双方通过IPsec建立一条IPsec隧道,IP数据包通过IPsec隧道进行加密传输,有效保证了数据在不安全的网络环境中传输的安全性。
6、PPTP:点对点协议上的VPN隧道技术,其将控制包与数据包分开,控制包采用TCP控制;PPTP使用TCP协议,适合在没有防火墙限制中的网络使用。
7、L2TP:工业标准隧道协议,从数据链路层开始,数据包都是安全的,数据的整个发送过程都是可靠的;相比较PPTP而言,L2TP可使用IPsec加密机制进行加密。
8、ICMP互联网控制报文协议:各种网络设备用来发送错误消息和操作信息的支持协议,所述错误消息和操作信息指示连接问题;防火墙可以组织ICMP请求,以保护网络信息;对于防火墙而言,除非特殊定义,否则全部ICMP消息包将被禁止通过防火墙(即不能使用ping命来检验连接是否建立)
9、ping命令就是查询报文,是一种主动请求,并且获得主动应答的ICMP协议;ping命令发出的包是符合ICMP协议格式的。
10、公钥密码体制中,使用不同的加密密钥和解密密钥(不同于对称加密算法)
11、公钥加密的缺点:吞吐量上,大多流行的公钥方案要比已知最好的对称密钥方案慢几个数量级,密钥长度比对称密钥大很多。
12、公钥算法一般基于大数运算,因此性能劣于一般的对称加密算法。
13、复杂的系统存在大量的相互引用访问,如果开发者不能有效的进行权限控制,就有可能被恶意引用。
14、现代加密算法的密钥基本上都是公开的,现代密码学的安全性主要取决于密钥的设计和使用;古典加密算法是对加密算法进行保密。
15、XSS跨站脚本漏洞(跨域脚本攻击)主要影响的是客户端浏览用户,攻击者通过在目标网站上注入恶意脚本,可获取用户的cookie、sessionid。
16、oracle默认允许用户输入10次错误密码,超过10账户次后就会被锁定。
17、一封电子邮件可以被拆封成多个ip包,每个ip包可以沿不同的路径到达目的地。
18、IP包(网络数据包):网络上信息传输的基本单位。
19、计算机机房的建设应当符合国家标准和国家有关规定,在计算机机房附近施工,不得危害计算机信息系统的安全。
20、 端口号:一个16字节的整数;用来表示网络进程,告诉操作系统数据交给哪个进程来处理;一个端口号只能被一个进程占用。
21、telnet是internet远程登录服务的标准协议和主要方式,用于internet会话,基本功能是允许用户登录进入远程主机系统,端口号23。
22、dns用于命名组织到域层次结构中的计算机和网络服务,端口号53。
23、安全加密技术分为两类:对称加密技术和非对称加密技术,两者主要区别是对称加密算法在加密、解密过程中使用同一密钥;非对称加密算法使用两个不同的密钥。
24、对称算法要求创建密钥和初始化向量,密钥需要对不应解密数据的任何人保密,但是初始化向量不一定要保密,但应定期更改。
25、数字证书提供了验证身份的方式;最简单的数字证书包含一个公开密钥、名称以及证书授权中心的签名。
26、网络交互过程中,可通过出示数字证书判断对方身份是否合法,实现身份认证。
27、如果不设置必要的日志审核,就无法追踪回溯安全事件。
28、程序被感染病毒后,由于病毒会添加代码到文件中,文件的长度会变长。
29、SYN同步序列编号:建立TCP/IP连接时的握手信号。
30、SYN攻击:DOS攻击的一种,利用发送大量半连接的请求,消耗掉对方的CPU和内存资源。
31、HTTP基本认证过程:1.客户端在未提供身份凭证的情况下请求受限资源2.服务端接受请求,返回带有www-authenticate相应头部的响应3.客户端获得用户ID以及密码,编码后发出带有authorization请求头部的 4.服务端根据请求提供的身份凭证返回请求的资源或返回错误。
32、渗透测试中:1.黑盒测试:测试人员不清楚被测单位内部技术架构的情况下,从外部对网络设施的安全性进行测试的过程。2.白盒测试:测试人员可以获取被测单位的网络结构和各种底层技术,使用针对性的测试工具,以较小的代价发现和验证系统最严重的安全漏洞。3.灰盒测试:测试人员可以根据对目标系统获取的有限知识和信息,选择渗透测试的最佳路径,测试者需要从外部逐渐渗透进入内容部网络。
33、黑盒测试主要针对软件的外部行为进行测试,即软件是否满足用户需求;目标是检查软件功能是否正确、是否易于使用、是否容错;测试的方法有功能测试、性能测试、安全测试,测试人员通过输入不同的数据、操作不同的功能,检查软件在不同情况下的行为和反应。
34、白盒测试:针对软件的内部结构进行测试,即测试软件的代码是否正确、是否符合编码的规范、是否容错;测试目标是检查软件的正确性、性能、可维护性。
35、渗透测试过程:1.前期交互阶段:测试团队与客户组织进行交互讨论,确定渗透测试的范围、目标、限制条件以及合同服务细节。2. 情报收集阶段:测试团队利用各种信息来源和搜集技术方法,获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。3.威胁建模阶段:测试团队针对获取的信息进行威胁建模与攻击计划。4.漏洞分析阶段:综合分析前几个阶段获取并汇总的情报信息,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中验证。5.渗透攻击阶段:利用测试团队找出的目标系统安全漏洞,入侵系统、获得访问控制权。6.后渗透攻击阶段:根目标组织的业务经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,找到最具价值和尝试安全保护的信息和资产,最终达到能够对客户组织造成最重要业务影响的攻击途径。7.报告阶段:渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款。
36、Hash函数:散列函数,能够将任意长度的输入值转变成固定长度的值输出,该值称为散列值,输出值通常为字母与数字的组合;Hash函数可将任意长度的明文映射到固定长度的字符串。
37、SNMP基于无连接UDP的协议。
38、代理防火墙:能够理解应用层上的协议;时延较高、吞吐量低;能做复杂一些的访问控制,并做精细的认证和审核;可伸缩性较差。
39、网络型漏洞扫描器的功能:动态式的警讯、端口扫描检测、后门程序扫描检测、密码破解扫描检测、应用程序扫描检测、阻断服务扫描检测、系统安全扫描检测。
40、主机式漏洞扫描器的功能:重要资料检测、密码监测、系统日志文件和文字分析、加密通信。
41、数据库安全漏洞扫描器的功能:专门针对数据库的漏洞进行扫描。
42、公钥密码体质的应用主要在:数字签名,加密/解密,密钥管理,哈希函数。
43、网络欺骗方式包括:IP欺骗、ARP欺骗、DNS欺骗、WEB欺骗。

四、Day-4

1、web表单是用户和web站点(以超文本标注语言HTML与超文本传输协议HTTP为基础,能够提供面向internet服务的、一致的用户界面的信息浏览系统)或应用程序之间交互的主要内容之一。他们允许用户输入数据,大多情况下会将数据发送到web服务器进行处理和存储,或者在客户端使用某种方式立刻更新界面。web表单是由一个或多个表单组件,以及一些有助于构建整个表单的附加元素组成——通常被称为HTML表单。
2、绝对路径:目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。
3、相对路径:指的是与自身的目标档案相关的位置。
4、找寻绝对路径:参与到实际渗透中,通过绝对路径判断目标的web框架,分析目标的目录结构,找到文件上传后的存储位置,写入木马。
5、gpc函数在php中的作用:判断解析用户提示的数据。
6、WAF:web应用防火墙,WAF通过执行一系列针对HTTP/HTTPS的安全策略来专门为web应用提供保护,主要用于防御针对网络层的攻击,像SQL注入、跨站脚本攻击XSS、参数篡改、应用平台漏洞攻击、拒绝服务攻击等。
7、XAMPP:由多种模块构成的一个功能强大的集成软件包,主要用于方便用户快速开放和搭建属于自己的php网站。
8、测试文件:给设计好的文件做测试的文件,模块需要验证其功能,则需要给出模块的输入信号。
9、load_file函数:读取文件并返回文件内容为字符串。
10、前端:用户可见的界面,前端页面=网站页面开发。前端工作:将美工设计的效果图设计成浏览器可以运行的网页,并配合后端做网页的数据显示和交互等可视方面工作内容。
11、后端:用户看不见的东西,通常是与前端工程师进行数据交互及网站数据的保存和读取,相对来说,后端涉及的逻辑代码比前端要多,后端考虑的是底层业务逻辑的实现】平台的稳定性与性能等。

五、Day-5

1、什么是SQL注入?
通过把SQL命令插入到Web表单递交或或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令(恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程,即数据越俎代庖做了代码做的事);该问题的来源:无论是执行代码还是数据项都必须写在SQL语句中,导致关键字在数据库写入或者读取数据时得到执行。
2、SQL注入需要满足的条件:1.参数用户可控:前端传给后端的参数是用户可控的。2.参数代入数据库查询:传入的参数拼接到SQL语句中,且带入数据库中查询。
3、php爆绝对路径的方法:
1.单引号爆路径:就像测试SQL注入一样,在参数后面加单引号,直接在URL后面加单引号’,要求单引号没有被过滤(gpc=off)且服务器默认返回错误信息。
2.错误参数值爆路径:这种方式可以出发WAF,可通过错误的参数值来爆网站路径。3.通过搜索引擎语法。
4.测试文件获取路径。
5.配置文件获取路径:如果注入点有文件读取权限,可以通过load_file函数读取配置文件,再从中寻找路径信息。
3、SQL注入原理:SQL注入能使攻击者绕过认证机制,完全控制远程服务器上的数据库。大多数SQL数据库来存放应用程序的数据。SQL语法允许数据库命令和用户数据混杂在一起,若开发人员不细心,用户数据就有可能被解释成命令——远程用户不仅能向web应用输入数据,而且还能在数据库上执行任意命令。
4、SQL注入攻击的攻击形式:1.直接注入式攻击:直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。2.间接攻击方法:将恶意代码注入要在表中存储或者作为原数据存储的字符串,在存储的字符串中会连接到一个动态的SQL语句中,以执行一些恶意的SQL代码。

六、Day-6

1、表单用来接受用户的输入,并将用户的输入以“name=value值对”集合的形式提交到服务器进行处理。
2、表单用标记定义,表单里面放置各种接受用户输入的控件。
3、id:表单的唯一标识;name:表单的名字;method:定义表单的提交方法POST和GET;action:用于处理表单的服务器端页面,以URL形式表示。
4、表单中的name属性和value属性:每一个控件的这两个属性将构成“name-value对”提交到action属性所定义的页面进行处理。
5、post方法提交的表单:数据将以数据块的形式提交到服务器,表单数据不会出现在URL中,服务器端页面接受表单数据所用的方法是Request.Form[“表单控件的name属性”],接收到数据后便可进行处理,然后返回结果。
6、get方法发送表单数据的默认方法:以“?name1=value1&name2=value2”的形式,将表单数据附加到URL后面,提交到服务器处理,因为表单数据会暴露在URL中,没有post安全,但是处理效率比post方法高,服务器端接受表单数据所用方法:Request.QueryString[“表单控件的name属性”]。
7、Request.Form:用来接收表单变量(post方法)
8、Request.Querystring:接受URL参数(get方法)
9、Request会优先获取get方式提交的数据,会在QueryString、Form、ServerVariable中都搜寻一遍。
10、WAF的工作过程:解析HTTP请求——>匹配规则——>防御动作——>记录日志
11、SQL注入的WAF绕过:
1.运算符绕过and、or限制:如输入and或者or的语句就会被拦截,这时and和or可以用&&和||进行代替,例如1=1用-1=-1代替。
2.内联注释绕过order by:mysql中,单行注释可以施用#注释符,注释符#后直接加注释内容,多行注释施用/* */注释符,/用于注释开头、/用于注释结尾。
3.添加控制字符绕过union select。
4.函数拆分获取数据库名:施用内联注释加插入控制符进行注入。
12、SQL数据库order by语句:用于对结果集进行排序。
13、union select:union用于将多个select语句的结果合并到一个结果集中。
14、SQL注入的步骤:
1.判断注入类型是数字型还是字符型:数字型的变量在SQL查询语句拼接时没有括号括起来,字符型的变量需用括号括起来(实际测试过程中:#数字型: q u e r y = " S E L E C T f i r s t n a m e , l a s t n a m e F R O M u s e r s W H E R E u s e r i d = query = "SELECT first_name, last_name FROM users WHERE user_id= query="SELECTfirstname,lastnameFROMusersWHEREuserid=id;" 若返回的结果:1 and 1=1则表示测试的对象是数字型,同样,#字符型: q u e r y = " S E L E C T f i r s t n a m e , l a s t n a m e F R O M u s e r s W H E R E u s e r i d = ′ query = "SELECT first_name, last_name FROM users WHERE user_id=' query="SELECTfirstname,lastnameFROMusersWHEREuserid=id’;" 若返回的值丽日1 and 1=2,则说明user_id的值不匹配,就不是字符型,若返回的结果正确,则是字符型)
2.猜解SQL查询语句中的字段数:利用1’实现引号闭环,再利用 or 1=1 可以暴露出表中所有的数据,最后利用order by num#去看是否报错来证明查询语句中的字段数,#用于阶段SQL语句(例如:SELECT first_name, last_name FROM users WHERE user_id = ‘1’ or 1=1 union select 1, 2#‘;)
3.确定字段的显示顺序:使用union,例如:SELECT last_name, first_name FROM users WHERE user_id=‘1’ or 1=1 union select 1, 2#’; 故意扰乱了first_name 和 last_name后,查询出来的结果1,2指明数据在查询语句中的位置。
4.获取当前数据库:1’ union select 1, database() # 假设有两个字段,此查询语句会把数据库名称放在第二个字段中:SELECT last_name, first_name FROM users WHERE user_id = ‘1’ union select 1, database() #‘;
5.获取数据库中的表:information_schema是MYSQL自带的信息数据库,用于存储数据库元数据,information_schema的tables表记录了数据库中表的信息,指定table_schema的名称即可显示对应数据库中表的信息。例如:SELECT first_name, last_name FROM users WHERE user_id=‘1’ union select 1,group_concat(table_name) from information_schema where table_schema=database() #’;
6.获取表的字段名:1’ union select 1, group_concat(column_name) from information_schema.columns where table_name=‘users’#
7.下载数据:1’ or 1=1 union select group_concat(user_id, first_name, last_name), group_concat(password) from users #
15、实例:
1.确定注入类型:字符型的万能密码:1’ or 1=1 #
2.确定字段数和显示顺序:1’ union select 1, 2, 3 #
3.获取数据库以及表信息:
1’ union select 1, 2, group_concat(table_name) from information_schema.tables where table_schema=database() #
1’ union select 1, 2, group_concat(column_name) from information_schema.columns where table_name=“10ve1ysq1” #
1’ union select 1, 2, group_concat(password) from 10ve1ysq1 #
1’ union select 1, 2, group_concat(password) from 10ve1ysq1 where id=16 #
16、SQL注入威胁表现形式可以体现为以下几点:1.绕过认证,获得非法权限 2.猜解后台数据库全部信息 3.注入可以借助数据库的存储过程进行提权等操作。
17、SQL注入攻击的典型手段:
1.判断应用是否存在注入漏洞
2.收集信息、并判断数据库类型
3.根据注入参数类型,重构SQL语句的原貌
4.获取web信息,攻击web或为下一步攻击做准备
18、如何证明有漏洞:
1.URL后添加单引号’,若页面提示报错或者提示数据库有错误的话。
2.如果URL后添加 and 1=1页面正常显示,而添加 and 1=2页面报错(加了 or 1=1后,不管用户名和和密码是否正确,SQL语句都为真)(get请求中,若?id=1 and 1=1和?id=1 and 1=2都没有报错,则是字符型输入)。
19、字符型数据以字符串的形式表示,通常用’'或者“”扩起来。
20、数字型数据都以数字的形式表示,可以使整数或浮点数等。
21、通过order by可以判断服务器在查询某个表时所查询的列数,例如:order by 1:按照查询的第一个字段进行排序。
22、如何收集信息、判断数据库类型:从其返回的信息中可以判断数据库的类型,并为后续的攻击做铺垫。
23、根据注入的参数类型,重构SQL语句的原貌:
1.id=40参数为数字型
2.name=电影参数为字符型
3.搜索时没有过滤参数的,如keyword=关键字,SQL语句:‘%关键字%’
24、如何猜解表名、字段名:直接将SQL语句添加到URL后
1.and exists(select * from 表名):若页面没有变化,则说明附加条件成立,有猜解的表名,反之就不存在这个表。
2.and exists(select 字段 from 表名):方法同上。
3.猜解字段内容:比较古老且麻烦。
4.猜解字段内容的长度:(select top 1 len (字段名) from 表名) >0 直至猜解到>n不成立的术后,得出字段的长度为:n+1.
5.得到长度后,猜解具体内容:(select top 1 asc (mid (username, 1,1) ) from 表名) >0 直到>m不成立时,可以猜解出ASCII码了。
25、webshell:黑客使用的恶意脚本,目的是获得服务器执行的操作权限。
26、webshell特点:可以穿越防火墙,由于与被控制的服务器或远程主机交换的数据都是通过80端口传递的,因此不会被防火墙拦截,且使用webshell一般不会再系统日志中留下记录,只会在网站的web日志中流血数据提交记录。
27、webshell攻击危害:网站入侵的脚本攻击工具,通过入侵网站上传webshell后获得服务器的执行操作权限,比如执行系统命令,窃取用户数据等。
28、获取webshell的常见方法:
1.直接上传获得webshell:因过滤上传文件不严,导致用户可以直接上传webshell到网站任意可写目录中,从而拿到网站的管理用控制权限。
2.添加修改上传类型。
3.利用后台管理功能写入webshell。
4.利用后台数据库备份及恢复获得:利用后台对access数据库备份数据库或恢复数据库功能,备份的数据库路径等变量没有过滤导致可以把任意文件后缀改为asp,得到webshell。
5.利用php+mysql:利用执行sql查询语句,将webshell代码插入mysql再利用select in…到处shell。

七、Day-7

1、SQL注入攻击:
1.攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。
2.案例:用户登录,输入用户名、输入密码=’ or 1=1,如果此时使用参数构造的防暑,会出现:select * from users where password=‘*’or ‘1’=‘1’ 不管用户名和密码是什么内容,都使查询出来的用户列表不为空。
(补充:
JDBC:标准JAVA API,是 一套客户端程序与数据库交互的规范,提供了一套通过JAVA操纵数据库的完整接口。
PREPARESTATEMENT:预编译的SQL语句,用它提供的setter方法可以传入查询的变量,由于是预编译的,通过它可以将对应的SQL语句高效的执行多次,其可自动对特殊字符转义,避免了SQL注入攻击。)

2、如何通过PrepareStatement防范SQL注入(两方面):
web端:
1.有效性检验。
2.限制字符串输入的长度。
服务端:
1.不用拼接SQL字符串。
2.使用预编译的PrepareStatement。
3.有效性检验。(防止攻击者绕过web端请求)
4.过滤SQL需要的参数中的特殊字符,比如单引号、双引号。

3、什么是XSS攻击:
1.跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作的攻击方式。
2.如何防范XSS攻击(核心是必须对输入的数据做过滤处理):
1)前端:web端,同时需要字符串输入长度的限制。
2)后端,服务端,同时需要对HTML转义处理(敏感字符过滤函数的转义),将其中的“<”,“>”等特殊字符进行转义编码。

4、什么是CSRF(cross-site request forgery)攻击:
1.跨站请求伪造攻击,攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说是完全合法的,并进行相应的操作(攻击者通过跨站请求,以合法的用户的身份进行非法操作)。
2.如何防范CSRF攻击:
(1)Spring Security框架:功能强大且高度可定制的、提供声明式的身份验证和访问控制的安全框架。
作用:
1)认证:系统中是否有这个用户。
2)授权:权限控制/鉴别:系统中某个用户能够访问哪些资源。
3)防护攻击:防止身份伪造等各种攻击手段。
4)加密功能:对密码进行加密、匹配等。
5)会话功能:对session进行管理。
6)RememberMe功能:实现“记住我”功能,并实现tokenl令牌持久化。
(补充:
什么是token令牌access token?
1)访问资源接口API时所需要的资源凭证
2)组成:uid、time、sign等
3)token就是访问资源对凭证,一般是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串作为token

(2)token机制:在HTTP请求中进行token验证,如果请求中没有token或者token内容不正确,则认为是CSRF攻击而拒绝该请求。
(3)验证码。
(4)referer识别:在HTTP Header中有一个字段Referer,它记录了HTTP请求的来源地址,如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。
总结:
1)验证请求来源地址。
2)关键操作添加验证码。
3)在请求地址添加token并验证。

5、文件上传漏洞
1.指的是用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。
(补充:
1)批处理文件:将一些常用的命令写入一个文本文件内,当使用这个批处理文件时,只要键入批处理的文件名,系统将依照文件中的命令来执行全部或者是一部分指定要执行的命令,就可以简化工作。
2)脚本文件:由应用程序提供的编程语言,类似于批处理文件,可以将不同的命令组合起来,并按确定的顺序自动连续地执行,脚本文件也是文本文件,用户可以使用任意文本编辑器创建脚本文件。

2.如何防范文件上传漏洞:文件上传的目录设置为不可执行
(1)判断文件类型:判断文件类型的时候,可以结合使用MIME、后缀检查的等方式。因为对于上传文件,不能简单地通过后缀名称来判断文件的类型,攻击者可以将可执行文件的后缀名称改为图片或其他后缀类型,诱导用户执行。
(2)对上传的文件类型进行白名单校验,只允许上传可靠类型。
(3)上传的文件需要重新进行命名,使攻击者无法猜想上传文件的访问路径(应用了随机数改写文件名和路径),将极大 的增加攻击成本,同时像shell.php…rar.ara这种文件,因为重命名而无法成功实施攻击。
(4)限制上传文件的大小。
(5)单独设置文件服务器域名。
(补充:
1)MIME:MIME是一种标准类型,用来表示文档、文件、字节流的性质和格式,也就是告诉浏览器等这个文件的类型,目的和文件扩展名类似。
2)白名单校验:常见的安全措施,用于限制访问或执行某些操作范围,通过白名单校验,只有在预先定义的白名单列表中的实体才被允许进行访问或执行操作,其他实体则被拒绝,如果请求或操作的来源在白名单列表中,则允许其继续进行。

八、Day-8

1、DDos攻击:
1.服务器通过破坏网络服务来锁定网站和服务器,试图耗尽应用程序的资源,攻击者会用错误的流量攻占网站,导致网站功能不佳或完全离线,此类型的攻击有逐渐增加的趋势。
2.DDos攻击期间,一系列机器人或僵尸网络会用HTTP请求和流量攻占网站或服务,攻击期间会有多台计算机攻击一台计算机,导致用户无法推出,服务会延迟或中断一段时间。
3.攻击期间,攻击者有可能渗入数据库以访问敏感信息,DDos攻击可以利用安全漏洞并攻击可通过internet公开访问的任何终点。
4.DDos攻击的类型:
(1)容量耗尽攻击:通过最初似乎合法的流量来使网络层不堪重负,DNS放大就是其攻击方式的一种,DNS放大使用开放的DNS服务器向目标发送海量DNS相应流量。
(2)协议攻击:通过利用第3层和第4层协议堆栈(协议栈是计算机网络协议套件的一个具体的软件实现,即网络中各层协议的总和,形象的反映了一个网络中文件的传输过程,协议栈是协议的实现,可以理解为代码、函数库、供上层应用调用。)中的弱点导致服务中断,同步SYN攻击是其中攻击方式之一,此攻击会占用所有可用的服务器资源(SYN攻击利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源)。
(3)资源层攻击:针对web应用程序数据包并破坏主机之间的数据传输,此类攻击的示例包括HTTP协议违规、SQL注入、跨站脚本和其他第7层攻击。
5.如何检测(迹象提示)和响应DDos攻击:
(1)看到网络流量激增但来源不明,这些流量实际来自同一个IP地址或范围。
(2)网络性能缓慢或异常。
(3)网站、在线商店或其他服务完全离线。
6.如何预防DDos攻击:
(1)制定拒绝服务防御策略,以帮助检测、预防和减少DDos攻击。
(2)识别安全漏洞并评估针对设置的潜在威胁。
(3)更新任何保护软件或技术,并确保其正常工作。
(4)成立相关团队并针对应对攻击分配角色。
7.DDos防护:
(1)定期进行风险分析,以了解组织的哪些部分需要威胁防护。
(2)成立DDos攻击相应团队,专门负责识别和缓解攻击。
(3)在线运营汇总纳入检测和预防工具,并培训用户需要注意什么事项。
(4)评估防御策略的有效性,并确定后续措施。
(补充:DDos攻击是客户端发送请求链接数据包,服务端向客户端发送确认数据包,客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认,消耗服务器端的资源。
1)没有彻底根治DDos攻击的方法,除非不使用TCP。
2)预防DDos攻击:
①限制同时打开SYN半链接的数目(客户端发送SYN包,服务端收到后回复SYN+ACK后,服务端进入SYN_RCVD状态,这时候socket会放到半连接队列)(socket套接字是一个抽象层,应用程序可以通过它发送或接受数据,可对其进行像对文件一样的打开、读写和关闭等操作,网络套接字是IP地址与端口的组合))
②缩短SYN半连接的time out时间。
③关闭不必要的服务。

2、ARP协议:
1.ARP地址解析协议ADDRESS RESOLUTION PROTOCAL:根据IP地址获取物理地址的一个TCP/IP协议。
2.工作过程:
(1)发送ARP请求的以太网数据帧广播到以太网上的每个主机,ARP请求帧中包含了目的主机的IP地址。
(2)目的主机收到了该ARP请求之后,会发送一个ARP应答,里面包含了目的主机的MAC地址。
3.ARP工作原理:
(1)每个主机都会在自己的ARP缓冲区建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
(2)主机的网络接口新加入网络时(也可能是MAC地址发生变化、接口重启等)(MAC在跨广播域的时候会变化)会发送免费ARP报文,把自己IP地址与MAC地址的映射关系广播给其他主机。
(3)网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区,将新的映射关系更新自己的ARP表中。
(4)某个主机需要发送报文时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址、源主机MAC地址、目的主机的IP地址等。
(5)当本网络的所有主机收到该ARP数据包时:
1)首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包。
2)如果是,则首先从数据包中取出源主机的IP和MAC地址,写入到ARP列表中,如果已存在,则覆盖。
3)将自己的MAC地址写入ARP相应包中,告诉源主机自己是它想要找的MAC地址。
4)源主机接收到ARP相应包后,将目的主机的IP和MAC地址写入进ARP列表,并利用此信息发送数据。
5)如果源主机一直没收到ARP响应数据包,表示ARP查询失败,ARP高速缓存(ARP表)是ARP地址解析协议能够高效运行的关键。

3、RARP:反向地址转换协议reverse address resolution protocol
1.反向地址转换协议,网络层协议,RARP与ARP的工作方式相反,RARP使只知道自己硬件地址的主机能够知道其IP地址,RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。
2.RARP允许局域网的物理机器从网关服务器的ARP表或者缓存上请求其IP地址(网关服务器:在网络层以上实现网络互连,实质是一个网络通向其他网络的IP地址),及物理设备凭借自己的MAC地址向RARP寻求自己的IP地址。
3.RARP原理:
(1)网络上的每台设备都有独一无二的硬件地址,通常是由设备厂商分配的MAC地址,主机从网卡上读取MAC地址(MAC地址是写入了网卡中),然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该主机的IP地址。
(2)RARP服务器收到了RARP请求的数据包,为其分配IP地址,并将RARP回应发送给主机。
(3)PC1收到RARP回应后,就使用得到的IP地址进行通讯。

(补充:
不同网络环境中的网络互联:
1.ARP缓存表中可以找到目的主机的MAC:
①主机1查找本机ARP缓存表,根据ARP协议,找到MAC。
②数据报由主机1,发送到集线器(数据报中有:主机1源MAC、主机3目的MAC)。
③集线器直接转发数据到除主机1的其他所有相连主机(主机2、主机3)
④主机2接收:数据报中,目的MAC不是我,丢弃。
⑤主机3接收:数据报中,目的MAC是我,接收,目的IP是我,交给对应端口进程处理。

2.ARP缓存表中找不到目的主机MAC:
①主机1查找本机ARP缓存表,发现找不到目的主机MAC。
②主机1发送广播数据报(非真实数据,只是要求对应主机返回MAC数据)
(补充:
1.数据包:TCP/IP协议通信传输中的数据单位,处于网络层,在局域网中,“包”是包含在“帧”里的。
2.数据报:多用于网络层以上,面向无连接的数据传输,工作过程类似于报文交换,采用数据报方式传输时,被传输的分组称为数据报。
3.数据帧:数据链路层的协议数据单元,包含帧头、数据部分、帧尾,其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等,数据部分包含网络层传下来的数据。
三者有什么关联:
①数据包和帧:许多帧(数据链路层的传输单元)组合在一起,才能形成一个完整的数据包(由最上层到下一层层封装,最后借由数据链路层发送出去的数据单元)。
②数据包和数据报:数据包时整个的数据单元,数据报是组成这一个数据单元的分组,每一层封装后的数据都可以称作数据报,即一个完整的数据包是由若干个数据报组成的。

③广播数据报通过集线器转发到主机2、主机3。
④主机2接收:要求的IP不是我,丢弃。
⑤主机3接收:要求的IP是我,返回我的MAC。
⑥主机1收到主机3的返回数据(IP、MAC),更新自己的ARP缓存表。
⑦主机1发送真实的数据到主机3(源MAC、IP,目的MAC、目的IP)
⑧使用集线器的缺陷:网络冲突(通过集线器发送广播寻找主机3的过程会对区域内所有的主机进行访问)。

3.局域网中交换机组网方式:
(1)主机1发送数据到主机3:http://主机3:80
(2)交换机的作用:
1)MAC地址转换表:保存连接的主机。
2)MAC和端口的映射。
3)目的MAC是谁,直接转发到对应的端口。
(3)过程如下:
1)主机1查找本机ARP缓存表,如果找不到,发送广播数据报,让IP为主机3告诉他的MAC。
2)交换机转发到其他所有端口(广播)。
3)主机2丢弃,主机3返回自己的MAC。
4)交换机得到主机3的MAC,然后转发到主机1,主机1得知主机3的MAC,并更新自己的ARP缓存表。
5)主机1发真实的数据给交换机(包括主机1的源MAC、主机3的目的MAC)。
6)交换机查找自己的MAC地址转化表,通过MAC找端口,发送到对应窗口。
7)主机3接收:目的MAC是我,目的IP也是我。

4.局域网中的交换机+路由器方式:
(1)主机1发送数据到主机2:http://192.168.2.y:8080/xxx。
(2)主要过程:
1)通过目的IP+子网掩码。计算出是否目的主机和本机在同一网段(IP和子网掩码位与操作,得到网络号)。
(补充:
1.子网掩码:将某个IP地址划分成为网络地址和主机地址两部分,子网掩码不能单独存在,必须结合IP地址一起使用。
2.A类网络的默认子网掩码:255.0.0.0,B类网络的子网掩码:255.255.0.0,C类网络的子网掩码:255.255.255.0.
3.将子网掩码和IP地址按位进行逻辑“与”运算,得到的IP地址的网络地址,剩下的就是主机地址,从而区分出任意IP地址中的网络地址和主机地址。

2)如果是,那么和交换机组局域网流程一致。
3)如果不是,那么表示主机1处理不了,要发给网关转发(路由器)。
(补充:路由器和网关的区别
1.本质区别:
(1)网关在应用层中,主要连接两种不同的网络,同时还能够同时对两边的主机之间进行通信,但两边的主机不能够直接通信,必须要经过网关。
(2)路由器属于网络层设备,通常以包为单位进行数据的发送。
2.使用方式区别:
(1)网关可以是路由器、交换机或者是PC,在同一网段之内进行通信,是不需要网关介入其中,只有当主机与非本网段设备进行通信的时候,才需要将数据包全部发给网关设备,再经由网关设备进行转发或者是有路由处理。
(2)路由器是网络层系统,可以进行数据格式转换,成为不同于协议之间的网络互连的必备设备。

4)数据报发给路由器。
5)路由器接收到数据报,分用:物理层到网络层,获取到目的IP(即路由器通过与目的物理主机相连可获取目的IP)。
6)路由器查看自己的ARP缓存表(IP找MAC)。
7)如果找不到,则路由器发送广播,通知主机2,并获取到主机2的MAC。
8)得到主机2的目的MAC,将数据报发送给主机2。
(补充:无线AP和无线路由器的区别
1.功能的区别:
1)无线AP(AP:ACCESS POINT接入点):把从AC产品(ACCESS CONTROL接入控制器)上的有线网络转为无线网络(即无线AP是连接有线网络和无线网络的桥梁)。
2)无线路由器是AP和宽带路由器的结合体,借助于路由功能,实现家庭无线网络中的internet连接共享(也可以理解为:无线路由器是一个转发器,将家中的宽带信号通过天线转发给附近的无线网络设备)。
2.应用场景区别:
1)无线AP一般应用于中大型的无线网络建设,以一定数量的无线AP配合AC产品来组建较大的无线网络覆盖。
2)无线路由器一般应用于小型的无线网络建设,可独立工作,不需要AC的产品的配合。
3.性能的区别:
1)无线AP可配合AC产品进行集中管理,可集中管理数以千计的无线AP,且实现漫游功能,无线网络覆盖面积更广。
2)无线路由器不可集中管理,需要每个进行单独配置,且不可进行漫游功能,覆盖面积有限。

(补充:
(1)局域网方式只能使用路由器的LAN口,而广域网可使用LAN口和WAN口
(2)局域网和广域网:
1)广域网WIDE AREA NETWORK:连接不同地区局域网或城域网计算机通信的远程网,通常跨接很大的物理范围。
2)局域网LOCAL AREA NETWORK:在某一区域内多台计算机互联成的计算机组,局域网是封闭型的。
3)LAN和WAN的区别:广域网上的每一台电脑都有一个或多个广域网IP地址,广域网IP地址不能重复;局域网上的每台电脑都有一个或多个局域网IP地址,局域网IP地址都是内部分配的,不同的局域网IP地址可以重复,不会相互影响。
4)

(补充:路由器、交换机、集线器的不同应用场景
1.路由器至少连接两个网络。
2.交换机在LAN网段之间过滤和转发数据包,交换机在数据链路层运行,支持任何数据包协议,使用交换机连接网段LAN时称为交换LAN,在以太网网络情况下,称为交换以太网LAN。
3.集线器用于连接LAN的各个部分,数据包到达一个端口时会被复制到其他端口,以便LAN的所有网段都可以看到所有数据包。
4.当路由器不使用WAN端口、只使用LAN端口时,可以看成是交换机(但LAN端口IP要设置成局域网IP,并且最好配置关闭DHCP)

(补充:DHCP动态主机配置协议DONAMIC HOST CONFIGURATION PROTOCOL
1.定义: DHCP是一个局域网的网络协议,指服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
2.DHCP采用C/S架构,即CLIENT(客户机)(端口67)、SERVER(服务器)(端口68)架构。
3.作用:为客户机分发IP地址、子网掩码、网关、DNS服务器等;DHCP使网络管理员能从中心节点监控和分配IP地址,当某台计算机移到网络中的其他位置时能自动收到信息IP地址;DHCP自动化分配IP地址不仅降低了配置和部署的时间,也降低了发生配置错误的可能性;DHCP可管理多个网段的配置信息,可实现集中化管理。
4.优点:
1)简化了客户机配置。
2)防止用户误操作。
3)避免IP地址重复使用。
5.工作过程:
1)DHCP客户机向局域网中所有DHCP服务器发送DHCP DISCOVERY请求,请求DHCP服务器下发IP地址。
2)局域网中所有DHCP服务器恢复DHCP OFFER,为客户机提供IP网址。
3)客户机选择第一台DHCP服务器提供的IP地址,并回复DHCP REQUEST,通告给局域网中所有的DHCP服务器客户机选择了哪个IP、哪个DHCP。
4)被选中的DHCP服务器收到DHCP REQUEST消息后,会给DHCP客户机回复一个DHCP ACK,告知客户机,此IP地址可以使用了,客户机将此IP与自己的MAC地址绑定,方便下次使用,而其他DHCP服务器将收回分配给客户机的IP地址。
6.租期:
DHCP客户机使用的IP地址是有期限的,一般DHCP客户机使用分配的IP地址到了租期的50%时,会主动向DHCP发送续约请求,如果IP地址被其他客户机使用,就再重新发起DHCP DISCOVERY,请求获取新的IP。
7.DHCP实现的两种情况:
1)DHCP客户机DHCP服务器在同一个网段。
2)DHCP客户机和DHCP服务器不在同一个网段,需要用到DHCP中继,只能由路由器实现,DHCP无法单独实现。
8.DHCP中继:
1)一种软件技术,安装在DHCP中继代理的设备(路由器、交换机等),称为DHCP中继代理服务器,来承担不同网段之间的DHCP客户机和服务器的通信任务。
2)工作原理:
①当DHCP客户端启动并进行DHCP初始化时,在本地网络广播配置请求报文。
②如果本地网络存在DHCP服务器,则可以直接进行DHCP配置,不需要DHCP中继。
③如果本地网络没有DHCP服务器,则与本地网络相连的且带有DHCO中继功能的网络设备收到该广播报文后,进行适当的处理,并转发给指定的在其他网络上的DHCP服务器。
④DHCP服务器根据客户端提供的信息进行相应配置,并通过DHCP中继将配置信息发送给客户机,完成对客户端的动态配置。
9.VLAN:VIRTUAL LOCAL AREA NETWORK虚拟局域网
1)将一个物理的局域网在逻辑上划分成多个广播域的通信技术,每一个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。
2)为什么要使用VLAN?
1)当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降等问题(不能隔离广播报文和提升网络质量)。
2)可以把LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间不能直接互通,广播报文就被限制在一个VLAN内。
3)VLAN的作用:
①限制广播域:节省了带宽,提高了网络处理能力。
②增强LAN的安全性:不同VLAN内的报文在传输时相互隔离,即一个VLAN内的用户不能和其他VLAN内的用户直接通信。
③提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
④灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,网络的构建和维护更方便灵活。
10.TRUNK:端口汇聚
1)通过配置软件的设置,将2个或多个物理端口组合在一起成为一条逻辑路径从而增加在交换机和网络节点之间的带宽,将属于这几个端口的带宽合并,给端口提供一个几倍于独立端口的独享的高带宽。
2)TRUNK是一种封装技术,是一条点到点的链路,链路的两端可以都是交换机或者是路由器。
3)TRUNK是在交换机和网络设备之间比较经济的增加带宽的方法。
11.交换机端口:
1)Ethernet0/0/1:以太网端口,10Mbit/s。
2)FastEthernet0/0/1:快速以太网端口,100Mbit/s。
3)GigabitEthernet0/0/1:千兆以太网端口,1000Mbit/s。
4)slot口:槽位,一些可扩展的交换机具有的插槽,当需要不同的业务或者扩展的时候就需要slot,例如交换机上可以加光纤模块,路由器上可以增加远程模块等。
5)GE 0/0/1是交换机中的一个接口标识,这个标识中,GE 表示Gigabit Ethernet,0/0/1表示第0个槽位(slot)、第0个端口(port)和第1个子端口(sub-port)的接口,这个标识常用于描述交换机上的物理接口,方便管理和配置网络设备。
6)交换机有两排业务接口,左下接口从1起始编号,依据从下到上,再从左到右的规则依次递增编号。
7)槽位slot:计算机硬件中用于插入扩展卡或其他组件的插槽,通常用于添加额外的功能或扩展计算机的性能。
8)端口port:计算机网络中用于标识不同应用程序或服务的逻辑通信终点每个端口都与一个特定的协议或服务相关联。
9)子端口sub-port:某些网络设备中进一步划分的端口。
10)LSW:综合接入交换机,在拓扑中代表着网关。

5.广域网中的交换机+路由器方式:
(1)发送网络数据报:http://www.baidu.com
(2)DNS协议,域名转IP。
(3)根据目的IP计算是否和主机1在同一网段。
(4)不是同一网段,发送数据报到网关(路由器)。
(5)交换机转发,在MAC地址转换表(ARP协议),通过目的MAC找端口。
(6)路由器接收、分用、修改数据报。
(7)路途中的设备,百度服务器,接收数据并响应。
(8)路由器接收百度服务器的响应数据,分用、修改、封装。
(9)主机接收数据报。

九、Day-9

1、DNS:
1.域名解析服务,将主机域名转换为ip地址,属于应用层协议,使用UDP传输。
(1)TCP:TRANSMISSION CONTROL PROTOCOL传输控制协议,是面向连接的协议,即收发数据前,必须和对方建立可靠的连接。(ACK是TCP报头的控制位之一,对数据进行确认,确认由目的端发出,只有当ACK=1时,确认好才有效。)
(2)UDP:USER DATA PROTOCOL用户数据报协议,是非连接的协议,传输数据之前源端和终端不建立连接,想传送时,就抓取来自应用程序的数据,并尽可能快地把他扔到网络上。UDP的传送数据的速度仅仅受程序生成数据的速度、计算机的能力和传输带宽的限制,接收端,UDP把每个消息放在队列中,应用程序每次从队列中读一个消息段。一台服务机使用UDP可同时向多个客户机传输相同的消息。
(3)TCP和UDP的区别:
TCP基于连接、UDP无连接;TCP对资源要求高、UDP要求少;UDP程序结构较简单;TCP采用流模式、UDP采用数据报模式;TCP可保证数据的正确性、UDP可能丢包;TCP保证数据顺序、UDP不保证。
2.工作过程:
(1)主机向本地域名服务器的查询一般都是采用递归查询。
(递归查询:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(替主机继续查询),因此,递归查询返回的查询结果要么是IP地址,要么报错。)
(2)本地域名服务器向根域名服务器查询的迭代查询。
(迭代查询:根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出IP地址,要么告诉本地服务器下一步应当向哪个域名服务器进行查询,然后让本地服务器进行后续查询。通常根域名服务器把自己知道的顶级域名服务器的IP地址告诉本地服务器,让本地服务器再向顶级服务器进行查询。顶级域名服务器收到本地域名服务器的查询请求后,要么给出IP地址,要么告诉本地服务器应当向哪一个权限域名服务器进行查询。最后的结果是:查询成功或者失败。)
(顶级域名:
1.国家和地区顶级域名COUNTRY CODE TOP-LEVEL DOMAIN,ccTLD:对应国家和地区的地理位置,例如.cn。
2.通用顶级域名GENERIC TOP-LEVEL DOMIAN,gTLD:供一些特定组织使用的顶级域,对应不同类别的域名,例如:.com。
3.新通用顶级域名NEW GENERIC TOP-LEVEL DOMIAN,New gTLD:在传统域名资源日趋枯竭的情况下开放注册的,例如:.org)
(二级域名:顶级域名之下的域名,例如:.gov.cn。
三级域名:二级域名之下的域名,例如:sample.org.cn。)
(3)解析过程:
1)用户输入域名时,浏览器先检查自己的缓存中是否有这个域名映射的ip地址,若有解析,则结束。
2)若没命中,则检查操作系统缓存(如windows的hosts)中没有解析过的结果,若有解析,则结束。
3)若没有解析过的结果,则请求本地域名服务器解析(LDNS)。
4)若LDNS没有命中就直接跳到根域名服务器请求解析,根域名服务器返回给LDNS一个主域名服务器地址。
5)此时LDNS再发送请求给上一步返回的gTLD,接收请求的gTLD查找并返回这个域名对应的NAME SERVER的地址。
6)NAME SERVER根据映射关系表找到目标IP,返回给LDNS。
7)LDNS缓存这个域名和对应的IP,把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中。
(TTL:TIME-TO-LIVE,即域名解析记录在DNS服务器中的存留时间,各地的DNS服务器接收到解析请求时,就会向域名指定的服务NS服务器发出解析请求从而获得解析记录,该记录会在DNS服务器中保存一段时间,若再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录)
(NS服务器:NAME SERVER,即域名解析服务器记录,用来指定该域名由哪个DNS服务器来进行解析,NS记录中的IP即为该DNS服务器的IP地址。)

十、Day-10

1、RIP:
1.RIP协议,ROUTING INFORMATION PROTOCOL动态路由选择协议(网络层协议),RIP是一种基于矢量(DISTANCE-VECTOR)算法的协议,它使用跳数(HOP COUNT)作为度量来衡量到达目的网络的路由距离。RIP通过UDP报文进行路由信息的交换,使用端口号为520.
(路由算法:距离矢量和链路状态,距离矢量根据目的地的远近来决定最好的路径;链路状态是可以使用更高级的方法根据链路的变化)
2.RIP工作原理:RIP用更新UPDATES和请求REQUESTS这两种分组来传递信息,每个具有RIP协议功能的路由器每隔30秒用UDP520端口给与之直接相连的机器广播更新信息,并且用路程段数(跳数)作为网络距离的尺度,每个路由器在给相邻路由器发送路由信息时,都会给每个路径加上内部距离。
(RIP的作用:通过启用RIP协议,路由器可以更好的学习相邻路由表,更好的适应多变且庞大的网络环境。)
3.路由器的收敛机制:如何距离向量路由选择协议,例如RIP,都有一个问题,路由器不知道网络的全局情况,路由器必须依靠相邻路由器来获取网络的可达信息,由于路由选择更新信息在网络上传播慢,距离向量路由选择算法有一个慢收敛的问题,这个问题导致不一致性产生。
(收敛:经过若干次更新后,所有路由器最终都会知道到达本自制系统任何一个网络的最短距离和吓一跳路由器的地址。)
(收敛:当网络出现故障时,要经过较长的时间才能将此信息传送到所有的路由器,即慢收敛;实际过程:网1出现故障时,R1知道是无法到达网1的,但是R2在收到R1的报文之前,还是发送了原来的报文,R1收到R2的新报文之后,误以为R2可以经过到达网1,于是更新自己的路由表,并将更新信息发送给R2,R2又根据自己的路由表将信息发送给R1。)
4.解决RIP带来的收敛问题:
(1)记数到无穷大机制:RIP协议允许最大跳数为15,大于15的目的地被认为是不可达,当路径超过15会被路由表中被删除。
(2)水平分割法:路由器不向路径到来的方向回传此路径。当打开路由器口后,路由器记录路径是从哪个接口来的,并且不向此接口回传此路径。
(3)破坏逆转的水平分割法:忽略在更新过程中从一个路由获取的路径又传回该路由器。
(4)保持定时器法:防止路由器在路径从路由表中删除后的一定时间内(180S左右)接受新的路由信息。保证每个路由器都收到了路径不可达信息。
(5)触发更新法:当某个路径的跳数改变了,路由器立即发出更新信息,不管路由器是否到达常规信息更新时间,都发出更新信息。
5.RIP的缺点:
(1)由于15跳为最大值,RIP只能应用于小规模网络。
(2)收敛速度慢。
(3)根据跳数选择的路由,不一定是最优路由。

十一、Day-11

1、OSPF,OPEN SHORTEST PASS FIRST 开放最短路径优先协议:
1.一个最常用的内部网管协议,是一个链路状态协议(网络层协议)。
2.原理:OSPF组播的方式在所有开启OSPF的接口发送HELLO包,用来确定是否有OSPF邻居,若发现了,则建立OSPF邻居关系,形成邻居表,之后互相发送LSA(链路状态通告)相互通告路由,形成LSDB(链路状态数据库)。再通过计算SPF算法,计算最佳路径(COST最小)后放入路由表。
3.组播:IP传输三种方式之一,组播指的是报文从一个源发出,被转发到一组特定的接受者,相同的报文在每条链路最多有一份。相较于传统的单播和广播,组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于IPTV、实时数据传送和多媒体会议等业务中。
4.单播:单播是主机间一对一的通讯模式,网络中的设备根据网络报文中包含的目的地址选择传输路径,将单播报文传送到指定目的地,只对接收到的数据进行转发,不会进行复制,它能针对每台主机即时的响应,现在的网页浏览全部都是采用单播模式。
5.LSA:LINK STATE ADVERTISEMENT链路状态通告,用于装载和传输链路状态信息。LSA需要描述邻接路由信息、直连链路信息、跨区域信息等,所以定义了多种类型的LSA。
6.LSDB表:LINK STATE DATABASE链路转态数据库,存在着OSPF的LSA详细信息,通过命令display ospf lsdb查看首要信息,同一个OSPF网络维护着一张LSDB表,所有同一网络的OSPF路由器,其LSDB表都是相同的。
7.SPF算法:SHORTEST PATH FIRST最短路径优先算法,用于计算一个节点到其他节点的最短路径,主要特点是以起始点为中心向外层层扩散,直到扩展到终点为止。
8.IPTV:交互式网络电视,利用宽带网向用户提供包括数字电视在内的多种交互式服务技术。

2、TCP、UDP:
1.TCP面向连接,提供可靠的服务,UDP无连接,发送数据前不需要建立连接,UDP尽最大努力交付,即不保证可靠交付,UDP由于无需建立连接,因此UDP不会引入建立连接的时延,TCP需要在端系统中维护连接状态,比如接收和发送缓存、拥塞控制、序号与确认号的参数等,故TCP会比UDP慢。

十二、Day-12

1、TCP和UDP:
1.UDP具有较好的实时性,工作效率比TCP高,适用于高速传输和实时性有较高需求的通信或广播通信。
2.每一条TCP连接只能是一对一的;UDP支持一对一、一对多、多对一和多对多的交互通信。
3.TCP面向字节流,实际上是把TCP数据看成一连串无结构的字节流;UDP是面向报文的(一次交付一个完整的报文,报文不可分割,报文是UDP数据报处理的最小单位)(UDP更适合一次性传输较小数据的网络应用)。
4.NAGLE算法:避免发送小的数据宝,要求TCP连接上最多只能由一个未被确认的小分组,在该分组的确认到达之前不能发送其他的小分组。
5.TCP粘包:(发送方问题)发送端为了更加高效的将多个包发往接收端,采用NAGLE算法,将多次间隔较小、数据量较小的数据,合并成一个数据量较大的数据块,然后进行封包。前一份SEND的数据跟后一份SEND的数据可能会暂存到缓冲当中,然后一起发送。(接收方问题)TCP将接收到的数据包保存在缓存里,然后应用程序主动从缓存读取收到的分组,如果TCP接收数据包到缓存的速度大于应用程序从缓存中读取数据包的速度,多个包就被缓存,应用程序就有可能读取到多个首尾相接占到一起的包。
6.UDP丢包:SEND的时候,会直接SEND到网络上,对方收不收到也不管,传送过程中,只存在丢包的可能,收到包的时候,肯定这个包的内容就是正确的;UDP没有三次握手的过程,发送数据只是发送,没有发送成功的反馈,所以数据量大被切分为多个小数据包发包时会出现丢包现象。
主要丢包原因:
(1)接收端处理时间过长调用RECV方法接收端收到数据后进行数据处理,处理完后再次调用RECV方法,在二次调用的间隔里,发过来的包可能丢失(可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续RECV)
(2)发送的包巨大:不切割,直接通过SEND方法帮助分成小包也会导致丢包,需要切割成再小的包进行SEND。
(3)发送的包较大超过接受者缓存导致丢包(可以设置SOCKET接收缓冲的值)。
(4)发送的包频率太快:连续发送包时不SLEEP。
(5)局域网内不丢包,公网上丢包:切割小包并SLEEP发送解决(减小流量、换成TCP传输、丢包重传)。
7.什么时候需要处理粘包现象:如果发送方发送的多组数据本来就是同一块数据的不同部分,则不需要处理;如果多个分组毫不相干,甚至是并列关系,就需要处理了。
8.如何处理粘包现象:
(1)发送方:关闭NAGLE算法,使用TCP_NODELAY选项来关闭算法。
(2)接收方:无法处理,只能将问题交给应用层处理。
(3)应用层:循环处理,应用程序从接收缓存中读取分组时,读完一条数据,应该读取下一条数据,知道所有数据都被处理完成。
9.UDP丢包(补充):
1.UDP是不安全的,不加任何控制情况下,不仅会丢包,还可能收到包的顺序和发送包的顺序不一样。造成UDP丢包的情况:
(1)客户端发送过快,网络状况不好,或者超过服务器接收速度。
(2)服务器接收到包后,还需要进行一些处理,这段时间客户端发送的包没有去收,造成丢包。
2.解决UDP丢包的方法:
(1)客户端降低发送速度,可以等待回包,或者加一些延迟。
(2)服务器部分单独开一个线程,去接收UDP数据,存放在一个缓冲区,又另外的线程去处理收到的数据,尽量减少因为处理数据延时造成的丢包。
10.吞吐量:没有帧丢失的情况下,设备能够接受的最大速率。
(1)吞吐量和报文转发率是关系防火墙应用的主要指标。
(2)吞吐量的大小主要由防火墙内网卡及程序算法的效率决定,尤其是程序算法,会使防火墙系统进行大量运算,通信量大打折扣。
11.缓存和缓冲:
(1)缓存:用于提高数据读取速度的技术,当计算机需要读取某个数据时,先检查缓存中是否已经存在该数据,如果存在,计算机可以直接从缓存中读取数据,避免了访问更慢的主存储器。缓存通常位于处理器和主存储器之间,可以通过减少对主存储器的访问次数来提高系统性能。
(2)缓冲:用于平衡数据读取和写入速度不匹配的技术,当读取的速度和写入速度不一样时,使用缓冲可以平衡二者之间的差异,缓冲通过在内存中暂时存储数据,以便在读取或写入过程中进行调整,以满足系统的需求;硬盘读取大量数据时,使用缓冲可以将数据暂时存储在内容中,并按需提供给应用程序。
(3)缓存更多关注数据访问的速度优化,缓冲更多关注数据的读写平衡。
12.计算机硬件:
(1)内存:直接与CPU交换信息的存储器,指CPU能够通过指令中的地址码直接访问的存储器,常用于存放处理活动状态的程序和数据(分为RAM、ROM)。
(2)RAM,RANDOM ACCESS MEMORY随机存储器:执行期间,程序的数据存放在主存内,各个存储单元的内容可通过指令随机访问。
(3)ROM,READ ONLY MEMORY只读存储器:存放一次性写入的程序或数据,仅能随机读出。(RAM和ROM共同分享主村存储器的地址空间)
(4)外存:(辅存)硬盘、磁盘、光盘、软盘、U盘等。
(5)缓存(缓冲寄存器):CPU同时处理很多数据,又不能同时进行所有数据传输的情况,把优先级低的数据暂时放入缓存中,等优先级高的数据处理完毕后,再把它们从缓存中拿出来进行处理。
(6)虚拟内存:运行数据超过内存限度,超出部分数据自动溢出,系统会将硬盘上的部分空间模拟成内存(虚拟内存),并且将暂时不运行的程序或不使用的数据存放到虚拟内存中等待需要时调用。
(7)速度比较:CPU>缓存>内存>外存。
13.RECV函数的执行过程:
(1)RECV先等待SOCKET发送缓冲中的数据被协议传送完毕,如果协议在传送中的网络出现错误,RECV函数返回SOCKET_ERROR.
(2)如果发送缓冲区中没有数据或数据被协议成功发送完毕后,RECV先检查SOCKET的接收缓冲区。
(3)如果接收缓冲区没有数据或者协议正在接收数据,RECV就一直等待,知道协议把数据接收完毕。
(4)当协议把数据接收完毕,RECV函数就把接收缓冲区中的数据COPY到BUF中(RECV函数仅仅是COPY数据,真正接收数据是协议来完成的),RECV函数返回其实际COPY的字节数,如果RECV在COPY时出错,返回SOCKET_ERROR。
(5)如果RECV函数在等待协议接收数据时网络中断了,返回0。
14.关于各种盘:
(1)光盘:用激光打上去数据,区别于磁盘。
(2)磁盘:用电磁原理记录数据,由涂上磁性物质的盘片和盘片读写装置(驱动器)组成(可分为软盘、硬盘)。
(3)硬盘:(也叫固定盘)基盘有金属构成,最常见的外存,硬盘存储速度比内存慢,但存储量要更大,常用的硬盘有SSD固态硬盘、HDD机械硬盘。
(4)软盘:基盘由塑料构成,使用前必须要格式化,完成后磁盘被分成若干个磁道,每个磁道分成若干个扇区,每个扇区存储512个字节,磁道是一组同心圆,数据存储在磁道上。
(5)机械硬盘HHD:造价低,寿命长,存在机械结构,读取和写入时由磁头在转动的盘片上转动寻找文件所在扇区,运行时马达高速运转,产生震动和可感噪音,工作时能承受的温度范围较小,但容易做大容量。
(6)固态硬盘SSD:噪音小,效率高,由主控缓存和闪存组成,不存在机械结构,读取和写入时无需寻道,速度极快效率高,运行时无噪音、抗震能力强,具备低功耗待机功能,寿命相对较短,单位成本较高。
15.BUF:缓冲IO方式读取时,通过BUF块,CPU可把外设里的缓冲池avaliable的字节整块读入该BUF内存。
16.格式化:将数据按照特定规则和布局进行排列和处理,通常指的是将数据转换为特定的格式,以便于人类阅读和理解,或者适合特定的输入和输出要求,格式化可以通过语言中提供的函数、方法或工具来实现。
17.报文和字节流:
(1)TCP/IP的应用层和OSI的会话、表示、应用层把数据成为数据或者信息,到了传输层把数据成为报文,到了最底层就是比特流或成为字节流。
(2)字节就是散乱的数据;报文就是添加了标记,封装后的数据。
(3)字节流是由字节组成的,它是最基本的,主要用在处理二进制数据(STREAM:流)。
(4)流就是程序输入或输出的连续的字节队列,设备的输入和输出都是用流来处理的。
18.TCP/IP和OSI:
(1)OSI:是一个理论上的概念模型,用于描述计算机网络中不同层次的功能和通信流程,共7层,每层都有特定的功能和协议,每个层次的通信都是通过接口进行,OSI强调了不同层次之间的分离和独立性,以及保准化的接口。
(2)TCP/IP:实际应用中最常用的网络协议簇,共4层,每个层次都有对应的协议,TCP/IP与OSI模型都描述了网络通信中不同层次的功能和协议。
(3)OSI更强调七个层次的独立性和标准化接口;TCP/IP更强调功能和协议。
19.TCP的四次挥手:
(1)客户端发送FIN,进入FIN_WAIT1状态,用来关闭CLIENT到SERVER的数据传送。
(2)服务端收到FIN,发送ACK,进入CLOSE_WAIT状态,客户端收到ACK,进入FIN_WAIT2状态。
(3)服务端发送FIN,进入LAST_ACK状态,用来关闭SERVER到CLIENT的数据传送。
(4)客户端收到FIN,发送ACK,进入TIME_WAIT状态,服务端收到ACK,进入CLOSE状态。
20.TCP的6种标志位:
(1)SYN:SYNCHRONOUS建立联机。
(2)ACK:ACKNOWLEDGEMENT确认。
(3)PSH:PUSH传送。
(4)FIN:FINISH结束。
(5)RST:RESET重置。
(6)URG:URGENT紧急。

2、GET和POST:
1.GET:获取数据;POST:修改数据。
2.GET:把请求的数据放在URL上,以分割URL和传输数据,参数之间以&相连,所以GET不安全;POST:数据放在HTTP包体内(REQUEST BODY)。
3.GET提交的数据最大是2K;POST理论上没有限制。
4.GET产生一个TCP数据包,浏览器会把HTTP HEADER和DATA一并发送出去,服务器相应200(返回数据)。
5.POST产生两个TCP数据包,浏览器先发送HEADER,服务器相应100CONTINUE,浏览器再发送DATA,服务器相应200OK(返回数据)。
6.GET请求会被浏览器主动缓存;POST不会,除非手动设置。
7.GET是幂等的;POST不是幂等的。
8.一个URL地址,用于描述一个网络上的资源,HTTP中的GET,POST,PUT,DELETE对应这个资源的增删改查四个操作,GET用于查询资源信息,POST用于更新资源信息。
9.GET:请求指定页面信息,并返回实体主体;HEAD:类似于GET请求,返回的响应中没有具体的内容,用于获取报头;POST:向指定资源提交数据进行处理请求,数据被包含在请求体中,POST请求可能会导致新的资源的建立或已有资源的修改。
10.HTTP幂等:无论调用这个URL多少次,都不会有不同的结果的HTTP方法,幂等性指的是作用于结果而非资源本身,得到不同的返回内容但并不影响资源。
11.HTTP GET:用户获取资源,不管调用多少次接口,结果都不会改变,所以说幂等的;HTTP POST:会对资源本身产生影响,每次调用都会有新的资源产生,因此不是幂等的。

3、COOKIES和SESSION
1.COOKIES和SESSION都是客户端与服务器之间保持状态的解决方案。
2.存储位置不同:COOKIE:存放在客户端;SESSION:存放在服务端,SESSION存储的数据比较安全。
3.存储的数据类型不同:两者都是KEY-VALUE结构,但针对VALUE的类型是有差异的;COOKIE:VALUE只能是字符串类型;SESSION:VALUE是OBJECT类型。
4.存储的数据大小限制不同:COOKIE大小受浏览器限制;SESSION:理论上受当前内存限制。
5.生命周期的控制:COOKIE的生命周期当浏览器关闭的时候,就消亡了,其生命周期是累积的,从创建时就开始计时,20分钟后,COOKIE生命周期结束;SESSION生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问SESSION,那么SESSION生命周期被销毁。
6.KEY-VALUE:一种以键值对存储数据的一种数据库;KEY-VALUE具有极高的并发读写性能。

4、DNS:
1.将主机域名转换为IP地址,属于应用层协议,使用UDP传输。
2.工作过程:
(1)用户输入域名,浏览器检查自己的缓存中是否存在这个域名的IP地址(递归:程序调用自身的编程技巧,将大型复杂问题转化为一个与原问题规模更小的问题,即被拆解)。
(2)如果浏览器缓存中没有,则检查操作系统缓存有没有。
(3)如果操作系统缓存中没有,则请求本域名服务器解析(LDNS)。
(4)如果本地域名服务器没有,就直接跳到根域名服务器解析,根域名服务器会返回给本地域名服务器一个主域名服务器地址。
(5)本域名服务器再给主域名服务器发送GTLD(GENERIC TOP-LEVEL DOMAIN通用顶级域),接收请求的GTLD查找并返回这个域名对应的NAME SERVER地址(通用顶级域GTLD:DNS中的一类顶级域名,代表着通用的领域或类别)(NAME SERVER:名称服务器,负责解析域名和IP地址之间映射关系的服务器,NAME SERVER会将域名转换为相应的IP地址,以便于目标服务器建立连接,NAME SERVER还可以缓存这些映射关系,以加快后续域名解析过程)。
(6)NAME SERVER根据映射关系找到目标IP,返回给LDNS。
(7)LDNS缓存这个域名对应的IP,把解析结果返回给用户,用户根据TTL值缓存到本地系统缓存中(TTL:TIME TO LIVE,一条域名解析记录在DNS服务器中的留存时间)。

5、SESSION会话控制:
1.客户端登录完成后,服务器创建对应的SESSION,SESSION创建完之后,会把SESSION的ID发送给客户端,客户端在存储到浏览器中,样客户端每次访问服务器时,都会带着SESSIONID,服务器拿到SESSIONID后,在内存找到与之对应的SESSION,就可以正常工作了(SESSION是服务器为了保存用户状态而创建的一个特殊的对象,即SESSION是一个对象,用于存储信息)。
2.SESSION作用:SESSION是服务器端共享,客户端(浏览器)独享的,可以在SESSION上存储数据,实现数据共享(使用SESSION进行页面跳转时,服务端可以利用SESSION进行数据共享,SESSION由服务器进行控制,SESSION由服务器进行控制,SESSION的创建和销毁都是服务器进行管理的,服务器会为每一个客户端创建一个SESSION)。
3.SESSION底层实现机制:访问网站时,在HTTP请求中会携带一个COOKIE,这个COOKIE的名字是JSESSIONID,这个JSESSIONID表示的就是SESSION的ID,这个是由服务器创建的,并且是唯一的,服务器在使用SESSION时,会根据JSESSIONID来进行不同操作。

十三、Day-13

1、SESSION底层实现机制:
1.客户端发送HTTP请求,如果由JSESSIONID就携带。
2.服务端的SERVLET通过REQUEST.GETSESSION得到SESSION(SERVLET:运行在WEB服务器或应用服务器上的程序,作为来自WEB浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层,使用SERVLET,可以收集来自网页表单的用户输入,呈现来自数据库或其他源的记录)。
3.如果客户端携带了JSESSIONID的cookie,先判断这个ID对应的SESSION是否存在,存在就返回ID对应的SESSION,不存在就创建SESSION,然后以cookie方式向客户端返回JSESSIONID。
4.如果客户没有携带JSESSIONID的cookie,那么就直接创建一个新的SESSION并返回,并且以cookie的形式向客户端返回JSESSIONID。
5.键值对:是一种数据结构,由一个唯一的键和与之关联的值组成,键通常用来标识或索引值,而值则是与该键相关联的数据,键值对广泛用于存储和访问数据。

2、HTTP:
1.完整请求过程:域名解析——发起TCP3次握手——建立TCP连接后发起HTTP请求——服务器响应HTTP请求——浏览器得到HTML代码——浏览器解析HTML代码,并请求HTML代码中的资源——浏览器对页面进行渲染呈现给用户。
2.HTTPS和HTTP的区别:
(1)HTTP协议传输都是未加密的(明文),因此使用HTTP协议传输隐私信息非常不安全。
(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全(SSL:SECURE SOCKETS LAYER安全套接层,是网络通信提供安全及数据完整性的一种安全协议,SSL用以保障在INTERNET上数据传输的安全,利用数据加密技术ENCRYPTION,可确保数据在网络上传输过程中不会被截取及窃听。)
3.HTTPS协议需要到CA申请证书,需要一定费用。
4.HTTP和HTTPS使用的是完全不同的连接方式,HTTP端口80,HTTPS端口443。
5…网络协议:
(1)为进行网络中的数据交换而建立的规则、标准或约定。
(2)协议规定了通信实体之间交换消息的格式、意义、顺序以及针对收到信息或发生的事件所采取的动作。
(3)两个相互通信的实体处在不同的地理位置,需要通过信息来协调动作达到同步,信息的交换必须按照预先约定好的规则进行。
(4)协议的三要素:
①语法:用来确定通信双方的信息格式;定义了数据与控制信息的结构、格式和信号电平。
②语义:规定通信双方需要发出何种信息,完成何种动作以及做出何种响应。
③时序:定义了双方通信所要遵循的事件顺序;定义了双方交换信息的速度匹配问题。
6.HTTP长连接和短连接:
(1)短连接(非持久性连接):客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接,下一次HTTP请求/响应操作再重新建立连接。
(2)长连接(持久连接):客户端和服务端建立一次连接后,可以在这条连接上进行多次请求/响应操作,持久连接可以设置过期时间。

3、OSI七层模型:
1.物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
(常见设备:中继器、集线器、双绞线)
2.数据链路层:接收来自物理层位流形式的数据,并封装成帧,传送到网络层。
(常见设备:网桥、以太网交换机、网卡)
3.网络层:(利用数据链路层的帧)将网络地址翻译成对应的物理地址,并通过路由选择算法选择最适当的路径进行通信。
(常见设备:路由器、三层交换机)
4.传输层:在源端与目的地之间提供可靠的透明数据传输。
(常见设备:四层交换机、四层路由器)
5.会话层:负责在网络中的两个节点之间建立、维持、终止通信。
6.表示层:处理用户信息的表示问题、数据的编码、压缩、解压缩,数据的加密、解密。
7.应用层:为用户的应用进程提供网络通信服务。
8.OSI七层协议数据传输的封包、解包过程:
(1)以太网封装过程:
①数据信息由应用层产生,并放置在传输层中。
②TCP或UDP报头与数据结合,形成段(SEGMENT)。
③IP报头与段结合形成包(PACKET)。
④以太网帧头与包结合形成帧(FREME)。
⑤以上步骤的组装都在数据链路层中进行,帧由数据链路层传至物理层,并转化为比特形成位(BIT),即二进制代码,向对方传输。
⑥通过物理层,比特传输到对方物理层,并解封。
⑦物理层向上传输给数据链路层解封成帧(FRAME)。
⑧数据链路层向上传输给网络层解封成包。(PACKET)。
⑨网络层向上传输给传输层解封成数据段(SEGMENT)。
⑩数据由传输层上传到应用层,供给客户。

4、TCP如何保证可靠传输:
1.三次握手。
2.将数据截断为合理的长度,应用数据被分割成TCO认为最合适发送的数据块(按字节编号,合理分片)。
3.超时重发:TCP发出一个段后,它启动一个定时器,如果不能及时收到一个就重发。
4.确认应答:对于收到的请求,给出确认响应。
5.校验和:校验出包有错,丢弃报文段,不给出响应。
(TCP校验和:有发送端计算,由接收端验证,目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动,如果接收方检测到校验和有差错,则TCP会被直接丢弃。)
6.序列号:对失序数据进行重新排序,然后才交给应用层。
7.丢弃重复数据。
8.流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,防止较快主机致使较慢主机的缓冲区流出。
9.拥塞控制:网络拥塞时,减少数据的发送。

5、状态码:
1.200 OK:客户端请求成功。
2.403 FORBIDDEN:服务端收到请求,但是拒绝提供服务。
3.404 NOT FOUND:请求资源不存在,或者输入了错误的URL。
4.500 INTERNET SERVER ERROR:服务器发生不可预期的错误。

6、URL和URI:
1.URL:统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁表示,是互联网上标准资源的地址。
2.URI:统一资源标识符,表示请求服务器的路径,表示资源本身,URI用字符串表示抽象或物理资源,URI属于URL更高层次的抽象、一种字符串文本标准。
3.URI属于父类,URL输入子类,URL是一种具体的URI,不仅唯一标识资源,还提供了定位该资源的信息,URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL必须提供足够的信息来定位,URL就是URI的定位。

7、详解TCP/IP五层模型:
1.物理层:计算机之间必须组网,物理层主要是基于电器特性发送高低电压(电信号),高电压对应1,低电压对应0。
2.数据链路层:
(1)收到物理层的电信号0或1时,数据链路层规定了电信号多少位为一组、每组都是什么意思,也就是定义了电信号的分组方式。
(2)后期统一了标准,即以太网协议ETHERNET标准:一组电信号构成一个数据包,叫做“帧”,每一数据帧分成:报头HEAD和数据DATA两部分。
(3)HEAD包含18个字节:源地址6字节、目标地址6字节、数据类型6字节;DATA包含最短46字节、最长1500字节的数据包具体内容。
(4)HEAD长度+DATA长度=最短64字节、最长1518字节,超过最大限制就分片发送。
(5)MAC地址:HEAD中的源地址、目标地址的由来,MAC地址长度为48位2进制,通常由12位16进制数表示,前6位是厂商编号,后6位是流水线号。
(6)广播:有了MAC地址,同一网络内的主机就可以通信了(通过ARP协议获取对方的MAC),广播的方式是最原始的方式,即向同一网段的所有成员发送数据包,所有成员看MAC地址,若是自己,则相应,若不是自己,则丢弃。
3.网络层:
(1)有了MAC、ETHERNET、广播这三个条件,所有主机都可以通信了,但是如果都使用广播的方式进行通信,效率低不说,会造成无尽的影响。且基本上大家都是由一个个的小局域网组成,此时一个局域网是一个广播域,以太网的广播包只能在一个广播域内发送,跨广播域通信只能通过路由转发。
(2)所以如果指定的主机是同属一个广播域,则可以采用广播的方式,如果不是,就采用路由的方式,向不同的广播域/子网分发数据包。
(3)网络层的出现,引入了一套新的地址,用来区分不同的广播域和子网,即IP地址出现了。
(4)IP协议及网络协议:是规定IP地址的协议,广泛采用V4版本,即IPV4,规定网络地址由32位2进制表示,范围在:0.0.0.0-255.255.255.255之间。一个IP地址通常写成4段十进制数。
(5)IP地址分成两部分,网络部分表示子网、主机部分标识主机,单纯的IP地址只是标识了IP的种类(即ABCD哪一类),从网络部分或主机部分都无法辨识一个IP所处的子网。
(6)子网掩码:是表示子网络特征的一个参数,在形式上等同于IP地址,也是一个32位2进制数字,它的网络位全部为1,主机部分全部为0,比如IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
(7)若已知子网掩码,我们就能判断任意两个IP地址是否处在同一个子网络,即将两个IP地址与子网掩码进行AND运算(位同为1得1,位不同为0),然后比较结果是否相同,如果相同,则同属一个子网络中,否则就不是(将IP地址化成32位的2进制数,再与子网掩码进行AND运算)。
(8)IP协议既为每台计算机分配IP地址,也可确定哪些地址在同一个子网络。
(9)IP数据包:IP数据包粉尘HEAD部分和DATA部分,HEAD:长度为20字节到60字节;DATA最长为65515字节;而以太网数据包的数据部分最长只有1500字节,因此,如果IP数据包超过了1500字节,他就需要分割成几个以太网数据包分开发送(每个包的IP数据DATA最多为1500字节)。
形成:【以太网头【IP头【IP数据【数据】】】】的形式。
(10)ARP协议:之前通信是基于MAC的广播实现,计算机在发包时,获取自身的MAC是容易的,如何获取目标主机的MAC,需要通过ARP协议。
(11)ARP协议以广播方式发送数据包,获取目标主机的MAC地址,工作方式:
①通过IP地址和子网掩码区分出自己所处的子网,若在同一子网,则数据包包含目标主机MAC和目标主机IP;若不在同一子网,则数据包包含网关MAC和目标主机IP。
②数据包会以广播的方式在发送端所处的子网内传输,所有主机接收后拆开数据包,发现目标IP是自己,就相应,返回自己MAC,若不是自己,就丢弃。
4.传输层:
(1)网络层的IP帮助我们区分子网,数据链路层即以太网层的MAC帮助我们找到主机,那么通过IP和MAC找到了特定的主机之后,如何标识这台主机上的应用程序呢,那就是端口,端口即应用程序与网卡关联的编号。
(2)传输层可建立端口到端口的通信,端口范围:0-65535,0-1023为系统占用端口。
(3)TCP协议:TCP协议是一种可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。经过传输层TCP协议的数据包为以下形式:
【以太网头【IP头【TCP头【数据】】】】
(4)UDP协议:不可靠传输,报头部分一共只有8个字节,总长度不超过65535字节,大小正好可以放进一个IP数据包。经过传输层UDP协议的数据包为以下形式:
【以太网报头【IP报头【UDP头【数据】】】】
5.应用层:用户使用的都是应用程序,均工作与应用层,而应用层规定了应用程序的数据格式,应用层有不同协议规定的电子邮件、网页、FTP数据的格式,这个应用程序协议构成了应用层(数据又应用层往下封装、又到对方主机解封的过程在上面)。
6.SOCKET:
(1)两个进程如果需要进行通讯,首先需要能够唯一标示进程,在本地进程通讯中,可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中两个进程的PID冲击几率很大,可以利用IP地址+协议+端口号来唯一标示网络中的一个进程。
(2)SOCKET套接字:在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
(3)SOCKET以: 打开——读/写——关闭 的模式实现,服务器和客户端各自维护一个文件,建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
7.网络通信的实现:
(1)每台主机需要具备:本机IP地址、子网掩码、网关的IP地址、DNS的IP地址。
(2)获取以上要素的方式:
①静态获取:手动配置。
②动态获取:DHCP,DYNAMIC HOST CONFIGURATION PROTOCAL动态主机配置协议,通过DHCP获取的数据包:
【以太网头【IP头【UDP头【DHCP数据包】】】】
数据包构造完成后,以太网以广播形式发送,同一个子网络的每台计算机都收到了这个包,DHCP服务器知道是发给自己的,接收,其他主机丢弃;DHCP收到包后读出这个包的数据内容,分配好IP地址,发送回去一个DHCP相应数据包,新加入的计算机收到这个响应包,就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等参数。
8.补充内容:
(1)发送数据时,从HTTP、TCP、IP到以太网,每一层都将自己的头部HEAD添加到由更高一层提供的数据中,即封装。
(2)PDU:PROTOCOL DATA UNIT协议数据单元,对等层次之间的传递的数据单位,其中,物理层:数据位BIT;数据链路层:数据帧FRAME;网络层:数据包PACKET;传输层:数据段SEGMENT;(最高层)应用层:数据DATA。
(3)OSI参考模型各个层次基本功能:
①物理层:设备之间传输比特流,规定了电平、速度和电缆针脚。
②数据链路层:将比特组合成字节,再将字节组合成帧,以太网使用MAC地址来访问介质,进行差错检测。
③网络层:提供逻辑地址,供路由器确定路径。
④传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。
⑤会话层:负责建立、管理和终止表示层实体之间的通信会话,该层的通信由不同设备中应用程序之间的服务请求和响应组成。
⑥表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
⑦应用层:为应用程序提供网络服务。

8、SSL:
1.SOCKET LAYER套接层:计算机网络中的一个抽象层,位于传输层之上,为应用程序提供了一种与网络进行通信的接口,套接层隐层了底层网络通信的细节,使得应用程序可以通过简单的函数调用用来发送和接收数据(即提供了与网络进行通信的接口)。
2.SOCKET套接字:是套接层的编程接口,是应用程序和网络之间的连接点,应用程序可以通过创建一个套接字对象来进行网络通信,套接字提供了一系列方法和属性,用于发送和接收数据、建立和关闭连接等操作。
3.SSL:SECURE SOCKET LAYER安全套接字层,用于加密和验证应用程序和WEB服务器之间发送的数据的协议。
4.TLS:TRANSPORT LAYER SECURITY传输层安全协议,相当于SSL后续版本。
5.SSL/TLS是一个安全通信框架,上面可以承载HTTP协议或者SMTP/POP3协议等。
6.TLS协议架构:包括握手协议、密码规格变更协议、警告协议、应用数据协议、TLS记录协议。
7.SSL/TLS协议作用:认证用户和服务,加密数据,维护数据的完整性,采用混合加密机制(非对称加密)。
8.SSL/TLS协议作用过程:
(1)客户端向服务器端发起SSL连接请求。
(2)服务器把公钥发送给客户端,并且服务器保存着唯一的私钥。
(3)客户端用公钥对双方通信的对称密钥进行加密,并发送给服务器端。
(4)服务器利用自己唯一的私钥对客户端发来的对称密钥进行解密。
(5)进行数据传输,服务器和客户端双方用公有的相同的对称密钥对数据进行加密解密,可以保证在数据收发过程中的安全,即是第三方获得数据包也无法对其进行加密、解密、篡改。
(6)总结:SSL/TLS基本思路是采用公钥加密算法,也就是说,客户端先向服务器索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。

9、交换机:
(1)二层交换机:根据第二层数据库链路层的MAC地址和通过站表选择路由来完成端到端的数据交换,二层交换机只需识别数据帧中的MAC地址,所以数据传输块。
(2)三层交换机:(可以理解为二层交换机和路由器的结合体)根据第三层网络层IP地址完成端到端的数据交换,当某一信息源的第一个数据流进行第三层交换后,其中的路由系统将会产生一个MAC地址与IP地址的映射表,并存储起来,当同一数据源数据流再次进入交换环境时,交换机将根据第一次产生并保存的地址映射表直接从第二层源地址传输到目的地址,不再经过第三路由系统处理,消除了路由选择造成的网络延迟,提高了数据包的转发效率,解决了网间传输信息时路由产生的速率瓶颈。
(3)四层交换机:支持TCP/UDP第四层以下的所有协议,可以完成端到端交换,还能根据端口主机的应用特点,确定或限制它的交换流量,即基于传输层数据包的交换过程。

10、物理层的各个设备及功能:
1.中继器:网络互连设备,可重新生成信号,可将两段或两段以上的以太网互连,中继器只对电缆上传输的数据信号再生放大,再重发到其他电缆段上。
2.集线器:实质是一个中继器,是对接收到的信号进行再生放大,以扩大网络的传输距离,它只是一个信号放大和中转的设备,不具有交换功能。
3.网桥:也叫桥接器,是在链路层实现局域网互连转发的存储转发设备,它工作在数据链路层,将两个LAN连起来,根据MAC地址转发帧,其从一个局域网接收MAC帧,拆封、校对、校验之后,按另一个局域网的格式重新组装,发往它的物理层。
4.交换机:也叫交换式集线器,它工作在数据链路层,基于MAC识别,有封装转发数据包功能,通过对信息进行重新生成,并经过内部处理后转发至指定端口,具备自动寻址能力和交换作用。

11、非对称加密和对称加密:
1.如果使用对称加密:加解密使用同一个密钥,除了自己保存外,对方也要知道这个密钥,才能对数据进行解密,如果密钥跟着一起传过去,就存在密码泄露的可能。
2.非对称加密:
(1)接收方(客户端)生成一对密钥,即私钥和公钥。
(2)接收方(客户端)将公钥发送给发送方(服务端)。
(3)发送方(服务端)用收到的公钥对数据加密,再发送给接收方(客户端)。
(4)接收方(客户端)收到数据后,使用自己的私钥解密。
(5)由于在非对称算法中,公钥加密的数据必须用对应的私钥才能解密,而私钥又只有接收方自己知道,这样就保证了数据传输的安全性。
(6)特点总结:
①对称加密的加密与解密使用的是同样的密钥,所以速度快,但是安全性不高。
②非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但是加密与解密速度慢。
③解决方法:将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到的对称加密的密钥,然后双方可以使用对称加密来进行沟通(密钥交换:首先使用非对称加密算法生成一对密钥,包括公钥和私钥,公钥可以自由地传输给其他人,而私钥则保密保存,当需要使用对称加密算法来加密数据时,发送方会生成一个随机的对称密钥,然后,发送方使用接收方的公钥来加密这个对称密钥,并将加密后的对称密钥与加密后的数据一起发送给接收方,接收方收到加密后的数据,使用其私钥解密后的对称密钥,接收方可以使用对称密钥来解密数据,即又有对称加密的速率,又能保证数据传输的安全性)。
H

H

1、公钥和私钥:
1.如何保证公钥不被篡改:将公钥放在数字证书中,只要证书是可信的,公钥就是可信的。
(采用HTTPS协议的服务器需要有一套数字证书,这套证书就是一对公钥和私钥)
2.公钥加密计算量太大,如何减少耗用的时间:每一次对话SESSION,客户端和服务器端都生成一个对话密钥SESSION KEY,用它来加密信息,由于对话密钥是对称加密,运算速度快,而服务器公钥只用于加密对话密钥本身,这样就减少了加密运算的消耗时间(即通过使用非对称加密算法来加密一个更快速的对称式加密算法的密钥)。
3.步骤:
(1)客户端向服务器端索要并验证公钥。
(2)双方协商生成对话密钥。
(3)双方采用对话密钥进行加密通信。

2、获取网站绝对路径:
1.获取网站绝对路径是为了在开发中方便定位文件和资源的位置,同时也能提高代码的可移植性(代码的可移植性意味着:用一种编程语言在一个系统上编写的程序经过很少改动或者不改动就可以在其他系统平台上运行);获取网站绝对路径并不意味着可以随意使用它来进行恶意操作或者访问敏感信息,合理使用这些方法可以提高开发效率,但应确保代码的安全性,避免滥用或暴露敏感信息。
2.爆网站绝对路径是指通过某种方式获取到网站的根目录路径,从而可以获得网站的敏感信息或者进行其他恶意操作。
3.爆绝对路径:
1.前提:注入点为root权限,模式off,能UNION SELECT。
2.方法:
(1)单引号爆路径:类似SQL注入,在参数后面加上单引号(此方式可以触发WAF,WAF:WEB应用防火墙)。
(补充:WEB应用防火墙,WAF,用于保护WEB应用程序免受网络攻击的安全工具,通过监控、过滤、阻止对WEB应用程序的恶意请求来提供安全防护。

1)WAF工作机制:
①攻击检测:WAF通过分析HTTP/HTTPS请求的内容、头部、参数等,识别出潜在的攻击行为。
②攻击预防:一旦检测到攻击行为,WAF会根据事先设定的规则进行拦截和阻止,防止攻击进一步影响WEB应用程序。
③日志记录与分析:WAF会记录所有的请求和响应数据,以便后续安全审计和分析。

2)WAF可预防的攻击:
①SQL注入攻击:通过在WEB应用程序的输入字段中插入恶意SQL代码,攻击者可以获取敏感数据或执行非法操作。
(补充:
1)SQL注入的产生:通过把SQL命令插入到WEB表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,即利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行。
2)SQL注入的原理:通过构建特殊的输入作为参数传入WEB应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,主要原因是程序没有细致地过滤用户输入的数据,致使非法数据入侵系统。)
②跨站脚本攻击XSS:攻击者通过在WEB应用程序中注入恶意脚本,窃取用户信息或者篡改网页内容。
(补充:
1)XSS运行机制:通过在目标网页中注入恶意代码,使得用户在浏览器中执行这段代码,攻击者可获取用户的敏感信息,如登录凭证、会话cookies等。
2)XSS的作用效果是可以窃取用户信息,篡改网页内容,劫持用户会话等。
3)XSS的作用方式:
①存储型XSS:攻击者将恶意脚本存储到目标网站的数据库中,当用户访问这些恶意脚本的页面时,恶意脚本会被执行。
②反射型XSS:攻击者构造一个包含恶意脚本的URL,诱使用户点击该URL,用户点击后,恶意脚本会被网页服务器读取并执行,从而进行攻击。
③DOM型XSS:DOM是文档对象类型,是构成文档结构和内容的对象的数据表示,可以理解为网络文档的编程接口;攻击者通过修改目标网页的DOM结构,注入恶意代码,当用户浏览器解析网页时,恶意代码会被执行。

③跨站请求伪造CSRF:
1)攻击者利用受害者在其他网站上已登录的身份,欺骗受害者浏览器发送带有恶意请求的请求,受害者在其他网站上登录时,攻击者构造一个包含恶意请求的URL或表单,诱使受害者点击,从而触发恶意请求
2)CSRF,CROSS-SITE REQUEST FOGERY跨站请求伪造,利用用户已经认证过的会话,在用户不知情的情况下执行非法操作,就是利用受害者身份执行未经授权的操作,如更改密码,发起转账等。
3)攻击方式:
①GET方式:构造一个包含恶意请求的URL,通过诱使受害者点击该URL触发攻击。
②POST方式:构造一个包含恶意请求的表单,通过诱使受害者提交该表单来触发攻击。
(补充:GET是把参数包含在URL中,POST通过REQUEST BODY,即通过表单提交传递参数。)
④命令注入攻击:
(1)由于嵌入式应用程序或者WEB应用程序对应用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至应用程序中,利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源。
(2)COMMAND INJECTION命令注入和SQL注入类似,是由于使用WEB应用程序执行系统命令的时候对用户输入的字符未进行过滤或者过滤不严格导致的。
(3)命令注入攻击:是攻击者通过在WEB应用程序的输入字段中注入恶意命令,执行非法操作或者获取用户权限。

3)WAF的部署方式:
①基于硬件的部署:WAF作为一个独立的硬件设备,放置在应用程序和外部网络之间。
②基于软件的部署:WAF作为一个软件模块,嵌入到WEB服务器中,与WEB应用程序共享同一台服务器。
③云端部署:WAF作为云服务的一部分,通过云提供商提供的服务进行部署和管理。
(补充:
④基于网络的WAF部署:直接部署在网络设备上,如负载均衡器、防火墙等),可以监视和过滤通过网络流量传输的恶意请求。
⑤基于主机的WAF部署:直接部署在WEB应用程序的服务器上,通过与WEB服务器进行集成,可以直接保护WEB应用程序
⑥反向代理模式:将WAF部署在WEB应用程序前面,作为反向代理服务器,可以过滤和拦截恶意请求。

(补充:反向代理、正向代理
①为什么使用代理服务器PROXY SERVER:
(1)隐私保密:代理可以加密数据,配置IP,以便隐藏真实位置,发送请求的服务器将不会知道客户端的实际IP和其他个人信息,可以避免黑客入侵和身份盗用。
(2)访问任何网站:如果网站限制了所在国家和地区的内容浏览,通过使用代理服务器可以更改IP地址,以越过限制。
(3)安全性更高:访问网站的数据保密了,所以INTERNET 连接更安全,代理服务器还可以用作WEB服务器,以保护设备并过滤可能包含恶意软件的WEB资源。
(4)性能提升:访问网站,数据会被保存在代理服务器的缓存中,下次访问时,代理服务器检查是否有更改,如果未更改,则显示之前的网站缓存版本,因此可减少已经访问的网站的加载时间。
②代理服务器和VPN:
(1)代理服务器用于代理网络用户去取得网络信息,是网络信息中转站。
(2)VPN,VIRTUAL PRIVATE NETWORK是虚拟出来的企业内部专线,通过在公用网络上建立专线网络,来进行加密通讯,而VPN是代理服务器的一种形式。
(3)代理服务器更多处理内部网络访问外部网络的问题,VPN更多解决外部网络访问内部网络的问题,即外部网络希望进入企业内部网络,需要通过VPN给外网分配一个内网IP地址才能实现。
③正向代理:位于客户端和目标服务器之间的代理服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。
④反向代理:对于客户端来说,反向代理就好像是目标服务器,客户端向反向代理发送请求,反向代理判断请求走向何处,并将请求转交给客户端,即客户端把反向代理服务器当成真正的服务器。
⑤正向代理和反向代理的区别:
(1)正向需要主动设置代理服务器IP或者域名进行访问,并由设置的服务器IP或者域名去获取访问内容并返回。
(2)反向代理不需要做任何设置,直接访问服务器真实IP或者域名,服务器会根据访问内容进行跳转和返回,所以不知道是哪个服务器进行服务。
(3)正向代理是代理客户端,为客户端收发请求,使真实客户端对服务端不可见。
(4)反向代理是代理服务端,为服务器收发请求,使真实服务端对客户端不可见。
(5)最关键两点的区别:是否制定目标服务器、客户端是否要做设置。
(6)正向代理中:客户端和代理服务器同属一个VAN,对SERVER透明。
(7)反向代理中,服务端和代理服务器同属一个VAN,对CLIENT透明。
(8)结构上看,代理服务器在两种代理模式下做的工作都是收发请求和响应。
⑥正向代理和反向代理的作用:
(1)正向代理在防火墙内的局域网提供访问INTERNET的途径,还可以使用缓冲特性减少网络的使用率。
(2)反向代理将防火墙外部的服务器提供给INTERNET用户访问,同时还可以完成负载均衡等功能。
⑦从安全性讲:
(1)正向代理允许客户端通过它访问任意网站,并且银币客户端自身,因此必须采用安全措施来确保仅为经过授权的客户端提供服务。
(2)反向代理对外是透明的,访问者不知道自己访问的是代理服务器,对访问者而言,以为访问的就是真正的服务器。

(补充:负载均衡LOAD BALANCE
(1)LOAD BALANCE负载均衡是高并发、高可用系统必不可少的关键组件,目标是尽力将网络流量平均分发到多个服务器上。(2)主要作用:
①高并发:通过算法调整负载,尽力均匀的分配应用集群中各个节点的工作量,以此提高应用集群的并发处理能力(吞吐量)。
②伸缩性:添加或减少服务器数量,并由负载均衡进行分发控制,使应用集群具备伸缩性(集群:让若干台计算机联合起来工作,通过网络实现进程间的通信,可以是并行的)。
③高可用:可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器,使得应用集群具备高可用的特性。
④安全防护:有些负载均衡软件或硬件提供了安全性功能,如黑白名单处理、防火墙、放DDOS攻击等。
(2)负载均衡的分类:
①硬件负载均衡:一般在定制处理器上运行的独立负载均衡服务器;硬件负载均衡功能强大,支持全局负载均衡,并提供较全面的、复杂的负载均衡算法;性能强悍:由于是在专用处理器上运行,因此吞吐量大;安全性高:基本具备防火墙、防DDOS攻击等安全功能;缺点是价格昂贵、扩展性差(访问量突增时,超过限度不能动态扩容)。
②软件负载均衡:从软件层面实现负载均衡,一般可以在任何标准物理设备上运行,主流产品有:NGINX、HAPROXY;软件负载均衡扩展性好,适应动态变化,可以通过添加软件负载均衡实例,动态扩展超出初始容量的能力;成本低廉:软件负载均衡可以在任何标准物理设备上运行,降低了购买和运维的成本;缺点:性能略差:比硬件负载均衡的性能要低。

恶意命令可达到的目的:
1.收集信息:可以用来收集目标系统的敏感信息。
2.远程控制:使攻击者远程控制受感染的系统,从而执行各种恶意操作,如文件删除、植入后门等(后门:绕过软件的安全性控制,从比较隐秘的通道获取对程序或系统访问权的黑客方法)。
3.数据篡改:可以修改或删除目标系统上的数据,导致数据的损坏或篡改。
4.DOS,DENIAL OF SERVICE拒绝服务攻击:通过发送大量无效请求或占用资源等方式,使目标系统无法正常工作。
(补充:后门WEBSHELL
1.帮助黑客控制网站,当WEBSHELL被黑客利用的时候,相当于黑客植入的木马,可以帮助黑客对网站代码进行修改、上传、下载等。
2.黑客入侵网站后,会把WEBSHELL木马后门文件上传到网站的根目录下以及服务器上,或者通过在本地相关工具中插入代码,通过访问特定的网址访问网站木马,从而控制网站,篡改数据。
3.WEBSHELL的隐藏工作目的是黑客不被管理员发现并删除;由于WEBSHELL可以渗透服务器防火墙:与被控制的服务器或远程主机交换的数据都是通过80端口传递,因此不会被防火墙拦截;WEBSHELL只会在WEB日志中留下一些数据提交记录,因此隐蔽性很强。

(补充:DOS攻击和DDOS攻击:
1.DOS:DENIAL OF SERVICE,拒绝服务攻击;DDOS:Distributed DENIAL SERVICE,分布式拒绝服务攻击;DOS只是单机和单机之间的攻击模式,而DDOS是利用一批受控制的僵尸主机向一台服务器发起的攻击,其攻击强度和造成的威胁要比DOS严重很多,更具破坏性。
2.首先DDOS攻击者要寻找僵尸主机,在互联网上寻找一些有后门漏洞的主机,然后入侵系统安全控制程序,入侵的越多,僵尸主机就越多,攻击源就更多,然后把入侵的主机分配,一部分充当攻击的主要控制端,一部分充当攻击源,各负其责,在攻击者统一指挥下,对被攻击的服务器发起攻击,攻击者由于在幕后工作,很难背监控系统跟踪。

常见的恶意代码:
1.病毒VIRUS:能够自我复制,并感染其他程序的恶意软件,它会将自身代码插入到合法程序中,并在被感染程序运行时进行复制和传播,病毒通常需要用户执行感染文件或程序才能传播。
2.蠕虫WORM:能够自我复制,与病毒不同,蠕虫不需要依赖用户的操作来传播,它可以利用网络漏洞或弱密码自动传播到其他计算机上。
3.木马TROJAN HORSE:伪装成合法程序的恶意软件,通过欺骗用户来获取权限或控制目标计算机,木马一旦安装成功,攻击者就可以在受害者的计算机上执行各种操作,如监控、窃取数据或远程控制。
4.间谍软件SPYWARE:用于监视用户活动并搜集敏感信息的恶意软件,可以记录键盘输入、截取屏幕、收集个人信息等,间谍软件通常通过欺骗用户或伪装成合法程序的方式进行传播。
5.勒索软件RANSOMWARE:勒索软件加密用户文件,并要求用户支付赎金以解密文件。

恶意命令和恶意程序的传播方式:
1.钓鱼邮件:通过伪造合法的电子邮件,欺骗用户点击恶意链接或下载恶意附件。
2.漏洞利用:攻击者利用软件或系统的已知漏洞,执行恶意代码并获取系统权限。
3.社交工程:通过欺骗、诱骗或欺诈等手段,引诱用户执行恶意代码或提供敏感信息。

云服务:
1.云服务是通过互联网提供的计算资源和服务,它基于虚拟化技术,将计算、存储和网络资源提供给用户,使用户能够按需获取所需的计算能力,而无需购买和维护自己的硬件和基础设施。
2.使用云服务的步骤:
(1)注册账户:选择云服务提供商,注册一个账户。
(2)选择服务:根据需求选择需要的云服务,如虚拟机、存储空间、数据库、人工智能服务等。
(3)配置资源:根据选择的服务,配置所需的计算、存储、网络资源,如选择虚拟机类型、存储容量、网络配置等。
(4)使用服务:根据需要,将应用程序或数据部署到云服务上,通过云服务进行管理和操作。
3.云服务提供商通过虚拟化技术将物理资源划分为虚拟资源,并通过自动化和编程接口(API)提供给用户。用户可以通过API或控制台管理操作虚拟资源,如创建、启动、停止、监控虚拟机,存储和访问数据,配置网络等。
4.云部署是将应用程序、服务、数据部署到云环境中的过程,通过云部署,用户可以将应用程序迁移到云端,并利用云服务提供的弹性、可扩展性和高可用性。
5.底层逻辑还包括云服务提供商的资源调度和管理机制,以确保资源的高效利用和服务的可靠性,可能涉及负载均衡、自动扩展、容错机制、备份和恢复的等技术手段,以满足用户的需求并保证服务的可用性和性能。

十五、Day-15

云计算的底层架构:
(1)数据中心:包含大量的服务器、存储设备、网络设备,用于提供计算和存储资源。
(2)虚拟化技术:通过虚拟化技术,物理资源可以被抽象成虚拟资源,并能够被多个用户共享使用,常见的虚拟化技术包括虚拟机VM和容器化技术。
(3)分布式系统:云计算基础设施是一个分布式系统,它可以通过集群、负载均衡等技术实现高可用和高扩展性。
(4)网络架构:常见的网络架构包括云内部网络和云外部网络。

云计算的服务方式:
(1)软件即服务SaaS:用户通过互联网访问云平台提供的应用程序,无需关心底层的硬件和软件配置。
(2)平台即服务PaaS:用户可以在云平台上开发、测试和部署自己的应用程序,云平台提供运行环境和基础设施。
(3)基础设施即服务IaaS:用户可以租用云平台提供的虚拟化资源,如虚拟机、存储和网络等,自行管理和配置。
(4)混合云和多云架构:用户可以根据需求选择将应用程序部署在私有云、公有云或多个平台上,实现资源的灵活分配和扩展。
(补充:公有云的云服务并非用户拥有,而是面向大众提供计算资源的服务,优势是成本低、扩展性好,缺点是缺乏资源控制、保密数据的安全性、网络性能和匹配问题;私有云能够提供针对各种功能的存储容量和处理能力,是为了一个客户单独使用而构建的,所以数据和安全都有很好的保障。)

云服务的优势服务:
(1)负载均衡:将客户端的网络请求分发到多个服务器上的技术,以达到提高系统性能和可靠性的目的,通过均衡地分配请求负载,避免单个服务器过载,提高系统的可扩展性和可用性。
(2)自动扩展:根据实际负载情况自动调整计算资源,通过设置自动扩展规则,系统可以根据负载情况自动增加或减少服务器数量,以满足用户需求并降低成本。
(3)容错机制:系统遇到故障或错误时,仍能保持正常运行,云服务提供商会在不同物理位置部署多个服务器,并使用冗余备份、故障转移和错误检测等技术来保证系统的容错性,当一个服务器发生故障时,请求会自动切换到其他正常运行的服务器上,保证系统的可用性。
(4)备份和恢复:备份是将数据复制到另一个存储位置上防止数据丢失的措施,以保证数据的安全性和可恢复性;恢复是指在系统发生故障或数据丢失后,通过备份数据或其他手段将系统恢复到正常运行状态的过程。
(补充:冗余备份、故障转移、错误检测
1.冗余备份:计算系统中使用多个备份来存储数据或实现功能,即使一个备份发生故障或损坏,系统仍然可以使用其他备份来保持数据的完整性和可用性。
2.故障转移:计算系统中的某个组件或系统发生故障时,将其功能自动转移到备用组件或系统上,通过故障转移,系统能够继续提供服务,而不会因为单个组件或系统的故障而停止运行。
3.错误检测:计算系统中检测和识别错误的过程,可能包括硬件故障、软件错误、数据损坏等,系统通过故障检测可以及时发现并报告错误,以便采取相应的纠正措施,确保系统的可靠性和稳定性,常见的错误检测技术包括校验和、冗余校验、差错编码等。)
(补充:校验和、冗余校验、差错编码
1.校验和:用于验证数据在传输过程中是否出现错误,通过对数据进行求和运算,将结果与预先设定的校验和进行比较来监测错误,如果二者相等,则说明数据传输没有出现错误。
2.冗余校验:通过在数据中心添加冗余信息来实现错误检测和纠正,常见的冗余校验方法有奇偶校验、循环冗余校验、海明码等,这些方法会在数据中添加额外的校验位,通过对校验位进行计算和比较来检测错误,并有能力纠正一部分错误。
3.差错编码:更高级的错误检测和纠正方法,不仅可以检测错误,还可以纠正部分错误,它使用更复杂的编码方式对数据进行转换,使得接收端能够检测和纠正一定数量的错误,常见的差错编码有海明码、卷积码等。)
(补充:奇偶校验、循环冗余校验、海明码、卷积码
1.奇偶校验:在传输的数据中添加一个奇偶位来保证数据的正确性,发送方根据数据中的1的个数来确定奇偶位的值,并将其发送给接收方,接收方根据接收到的数据重新计算1的个数,并与接收到的奇偶位进行比较,如果不一致则说明数据出现错误。
2.循环冗余校验:更复杂的冗余校验方法,基于多项式除法的原理,发送发利用生成多项式对数据进行除法运算,得到一个余数,并将该余数添加到数据中一起传输给接收方,接收方再进行除法运算,如果余数为0,则说明数据正确。
3.海明码:可以检测错误并纠正,它通过在原始数据中心添加冗余位来实现,发送方根据一定的规则对原始数据进行编码,并将编码后的数据传输给接收方,接收方根据海明码的规则对接收到的数据进行验证和纠正,并通过添加冗余位以及一系列的校验位实现对错误的验证和纠正。
4.卷积码:可以检测错误但是不能纠正错误,通过将数据序列与特定的卷积核进行卷积运算来生成编码序列,即将数据序列与聚卷积核进行逐位的乘法运算,并将乘积相加得到编码序列的对应位,生成编码序列后,重复之前的步骤,直到所有数据位都被处理完毕,最终得到的编码序列就是卷积码。)

云计算如何将物理资源抽象成虚拟资源:
(1)虚拟化层的创建:在物理服务器上安装虚拟化软件。
(2)资源抽象:通过虚拟化软件将物理服务器的处理器、内存、存储资源等资源划分为多个虚拟机(VMs)。
(3)资源调度:虚拟化软件根据需求动态分配和管理虚拟机的资源,使得各个虚拟机能够共享物理资源,并根据需求进行资源调度和负载均衡。

云计算的基础设施:
(1)服务器:用于创建和托管虚拟机的物理设备。
(2)存储:用于存储虚拟机的镜像、数据、文件。
(3)网络:提供虚拟机之间以及虚拟机与外部网络之间的连接。

云内部网络包含:
(1)虚拟网络:云平台内部创建的逻辑网络,用于连接不同的虚拟机和服务。
(2)虚拟交换机:用于在虚拟网络中进行数据包转发和路由。
(3)虚拟路由器:用于在虚拟网络中实现不同子网之间的通信。

云外部网络包含:
(1)公共互联网:用于连接云平台和外部用户、服务、网络、
(2)防火墙:用于保护云平台免受网络攻击和非法访问。
(3)负载均衡器:将外部流量分发到云平台中的不同服务器和服务。

容器化技术:
(1)容器化技术是一种轻量级的虚拟化技术,它将应用程序及其所有依赖项打包到一个独立的容器中,容器化技术通过使用操作系统级的虚拟化来提供隔离性,使得应用程序可以在不同的环境中运行,而无需关注底层的硬件和操作系统。
(2)容器化技术通过将应用程序及其依赖项打包到一个独立的运行环境中,实现应用程序在不同的计算机系统上的可移植性,容器化技术的核心是容器引擎,如DOCKER,它可以在操作系统级别隔离应用程序及其依赖项,并提供一致的运行环境。
(3)容器化技术中,应用程序与底层操作系统之间的依赖关系被打包到一个称为容器镜像的文件中,容器镜像包含了应用程序的代码、运行时环境、库文件、配置等,可以在不同的计算机系统上进行部署和运行,通过容器化技术,应用程序可以在不同的环境中保持一致的运行状态,降低了部署和运维的复杂性。

分布式系统:
(1)由多个独立计算机或节点组成的系统,这些计算机通过网络进行通信和协调,以实现共同的目标,分布式系统中的节点可以同时执行任务。
(2)分布式系统通过将任务划分为多个子任务,并将其分配给不同的节点进行并行处理,实现了更高效的计算和数据处理能力。
(3)容器化技术可以与分布式系统结合使用,容器作为分布式系统中的计算单元进行部署和管理,通过容器化技术,可以快速创建、部署、扩展分布式系统的各个组件,提高系统的可伸缩性和弹性,容器化技术可以提供资源隔离和环境一致性,使分布式系统更加稳定和可靠。

DOCKER:
(1)开源的容器化平台,可以将应用程序及其依赖项打包到一个独立的容器中,容器化技术通过使用Linux内核的命名空间和控制组特性,实现了对进程、文件系统、网络等资源的隔离,每个容器都拥有自己的文件系统,进程空间和网络接口,相互之间互不影响。
(2)DOCKER和容器化技术为应用程序的部署、管理和扩展提供了一种高效、可靠和可移植的解决方案。
(3)容器化技术的实现和应用有以下几个方面:
①隔离性:容器化技术通过隔离应用程序和底层操作系统,使得应用程序在一个容器中运行时不会对其他容器或宿主机产生影响,提供了更高的安全性和稳定性。
②轻量级:相比传统的虚拟化技术,容器化技术更加轻量级,因为它共享宿主机的操作系统内核,避免了虚拟机启动时的资源开销。
③可移植性:容器化技术允许应用程序及其依赖项被打包到一个独立的容器中,可以在不同的环境中部署和运行而不需要担心环境差异性导致的问题。
④弹性伸缩:通过快速创建、启动、销毁容器来实现应用程序的弹性伸缩,根据实际需求自动调整容器数量,提供更好的资源利用率和响应能力。

云内部知识补充:
(1)云内部虚拟网络:在云计算环境中创建的逻辑网络,它基于物理设备设施并使用虚拟化技术来提供网络功能,虚拟网络在云内部进行通信和数据传输,可以创建子网、路由、防火墙等网络组件,使不同的虚拟机实例之间能够相互通信。
(2)云内部的虚拟机是没有实体的,虚拟机是通过虚拟化技术在物理设备上创建的逻辑实例,它们共享物理服务器的资源,如处理器、内存和存储等,虚拟机可以被独立管理和配置,具有自己的操作系统和应用程序。
(3)云内部的路由器也是没有实体的,虚拟路由器是一种基于软件定义网络SDN技术实现的逻辑设备,用于管理内部虚拟网络的路由和转发功能,虚拟路由器可以根据预设的路由策略将数据包从一个虚拟网络转发到另一个虚拟网络。
(4)云内部指的是云计算环境中的资源和服务;云外部指的是云计算环境之外的资源,如用户本地的设备、互联网、其他数据中心等。

DOCKER和VM workstation:
1.相同点:
(1)虚拟化技术:两者都是虚拟化技术的应用,可以在一台物理计算机上运行多个操作系统实例。
(2)隔离性:无论是DOCKER还是VMWARE虚拟机,都提供了隔离的运行环境,使应用程序之间相互隔离,避免互相干扰;从架构图上看,VM虚拟机是在硬件级别进行虚拟化,模拟搭建操作系统,而DOCKER是在操作系统的层面虚拟化,复用操作系统,运行DOCKER容器。
(3)跨平台:两者都可以在不同的操作系统上运行,并且具有良好的跨平台性。
2.不同点:
(1)轻量性:DOCKER更加轻量级,因为DOCKER共享主机操作系统的内核,可以更快的启动和停止,而VM虚拟机需要模拟完整的硬件环境,因此相对较重。
(2)资源隔离:DOCKER在资源隔离方面较弱,容器之间共享主机操作系统的资源,而VM虚拟机通过虚拟化技术提供了更强大的资源隔离性。
(3)易用性:DOCKER更容易使用和管理,可以使用DOCKER镜像来构建和分发应用程序,而VM虚拟机需要安装和设置完整的操作系统。
3.联系:两者的共同目标都是为了提供更高效、更灵活的程序部署和管理方式,提供更好的开发和测试环境。

防火墙的基础知识:
(1)防火墙是由一组软件和硬件组成的,底层逻辑是根据预先定义的规则来过滤网络流量,以阻止未经授权的访问和潜在的网络攻击。
(2)防火墙可以是软件也可以是硬件,软件防火墙运行在操作系统上,通过软件实现网络流量过滤,硬件防火墙是一种独立设备,专门用于网络流量的过滤和安全管理。
(3)防火墙的主要作用方式:包过滤、状态检测、代理服务;包过滤根据规则,对传入和传出的数据包进行过滤;状态检测是根据网络连接的状态,以便检测和阻止恶意活动;代理服务是充当客户端和服务器之间的中间人,负责监控和控制数据流。

编程接口API:
(1)API,APPLICATION PROGRAMMING INTERFACE,是一组定义了软件组件之间如何相互通信的规则和协议,它定义了函数、方法、数据结构和协议,允许不同的软件组件之间进行交互和集成,API可以用于不同平台、编程语言和应用程序之间的通信。
(2)API提供了一种标准化的方式,使得开发人员能够利用已经构建好的功能来开发自己的应用程序,而无需了解底层实现细节,通过API,开发人员可以调用其他软件组件的功能,如操纵系统、库、框架、服务等。
(3)API的类型:操作系统API提供了操作系统功能的访问接口;库PAI是一组函数和数据结构,提供特定功能的封装,开发人员可以通过调用这些函数来实现特定的操作;WEBAPI是通过HTTP协议进行通信的API,允许不同应用的程序在网络上进行交互。
(4)API的使用:通常以文档或代码库的形式提供给开发人员使用,文档描述了API的功能、参数、返回值等信息,帮助开发人员理解如何正确使用API;代码库则提供了实际的API实现代码,开发人员可以直接调用这些代码来使用API。
(5)库是API提供的一组函数和数据结构,用于与库进行交互,它定义了库的使用方法和操作方法,使得开发者可以使用库中提供的功能来实现自己的应用程序。
(6)通过函数和数据结构进行封装意味着将库的功能和实现细节隐藏起来,只暴露必要的接口给开发者使用,开发者无需关注底层实现细节,只需调用适当的函数和操作数据结构,就能完成预期的功能,封装提供了很好的抽象层,使库的使用更加简便和易于维护。
(7)WEB API:在WEB应用程序之间进行通信的接口,它通过HTTP协议提供了一组规定的请求和响应方法,使得不同的应用程序能够互相交换数据和调用对方提供的功能。
(8)WEBAPI工作方式基于客户端-服务器架构,客户端通过发送HTTP请求到服务器上的特定端点,服务器根据请求执行相应的操作,并将结果以HTTP响应的形式返回给客户端,客户端可以使用返回的数据进行进一步处理或显示给用户。

软件定义网络:
(1)SOFTWARE-DEFINED NETWORKING软件定义网络SDN是一种网络架构,通过将网络控制平面与数据转发平面分离来工作。
(2)网络层的数据平面:网络层每台路由器的功能,数据平面功能决定了:到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一。网络层的控制平面:控制数据报沿着从源主机到目的主机的端到端路径中路由器的路由方式,它涉及到路由选择算法,例如OSPF和BGP等路由选择协议。
(3)软件定义网络通过将这些控制平面功能作为一种单独的服务,明确地分离数据平面和控制平面,控制平面功能通常置于一台远程控制器中。
(4)数据平面和控制平面作用:
①数据平面:从其输入链路向其输出链路转发数据报。
②控制平面:协调这些本地的路由器转发动作,使得数据报沿着源和目的主机之间的路由器路径最终进行端到端传送。
(5)路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或者路径,计算这些路径的算法被称为路由选择算法,路由选择在网络层的控制平面中实现。
(6)传统网络中,网络设备如交换机和路由器负责同时处理控制平面与数据平面的功能,而在SDN中,控制平面的功能被集中在一个中心控制器中,该控制器通过与数据平面的交互来管理和控制整个网络。
(7)SDN的工作流程:
①控制器与网络设备通信:控制器与网络设备之间通过协议OPEN FLOW进行通信,以交换网络拓扑信息和状态更新。
②控制器下发指令:基于收集到的网络信息,控制计算出最佳的转发路径,并下发指令给响应的网络设备。
③数据平面转发:网络设备根据控制器下发的指令给相应的网络设备。
(8)SDN的核心要义:采用OPENFLOW技术,将网络设备的控制面和数据面分离,从而实现网络流量的灵活控制,使网络作为管道变得更加智能,为核心网络及应用的创新提供支撑;SDN因此可以有效降低网络设备负载,降低网络运营成本。
(9)OPENFLOW协议:基于流(FLOW)的概念来匹配转发规则,每一个交换机都维护一个流表(FLOW TABLE),依据流表中的转发规则进行转发,而流表的建立、维护、下发,都是由控制器完成的。

十六、Day-16

代码注入和SQL注入:
(1)代码注入:将恶意代码注入到应用程序的代码中,从而执行未经授权的操作,即将代码注入到应用程序执行路径中,可以利用为正确验证或过滤用户输入的漏洞,代码注入可能导致远程命令执行、文件系统访问等。
(2)SQL注入:是特定类型的代码注入,将恶意的SQL语句注入到数据库查询中,可以通过构造恶意输入来绕过应用程序的输入验证,SQL注入可能导致数据泄露、数据篡改。

爆绝对路径的方式:
(1)单引号爆路径
(2)错误参数爆路径
(3)通过搜索引擎爆路径
(4)测试文件获取路径
(5)配置文件获取路径
(6)NGINX文件错误类型解析爆路径
(7)PHPMYDOMAIN爆路径
(8)配合远程代码执行漏洞

鱼叉式攻击:利用木马程序作为电子邮件的附件,发送到目标电脑上,诱导受害者去打开附件来感染木马。
水坑攻击:分析攻击目标的上网活动规律,寻找攻击目标经常访问的网站的弱点,将网站攻破并植入恶意程序,等待目标访问。

虚拟机逃逸:利用虚拟机软件或者虚拟机中运行的软件的漏洞进行攻击,以达到攻击或控制虚拟机宿主操作系统的目的。

SDN:
(1)SDN将控制和数据面分离,并将控制逻辑集中在一个控制器中。
(2)控制与数据分离:控制器负责管理整个网络,根据网络策略和需求,向数据平面下发指令以实现数据转发和处理。
(3)集中式控制:SDN控制器作为网络的大脑,负责决策网络中数据的流向和处理方式,网络拓扑信息、监控流量和应用策略,并将信息发送到数据平面设备。
(4)开放式接口:如OPENFLOW协议的开放接口,使得网络设备厂商和应用开发者可以与控制器交互,实现网络的可编程性。

HTTP请求与响应:
(1)请求过程是客户端向服务器端发送请求,而HTTP响应是服务器向客户端返回响应。
(2)HTTP请求和响应的过程:
1)客户端与服务器建立TCP连接:客户端通过向服务器发送一个SYN包来建立初始化连接,服务器返回SYN+ACK包作为确认。
2)客户端发送HTTP请求行:其中包括请求方法,如GET何POST等,请求URL和HTTP协议版本。
3)客户端发送请求头部:其中包含附加信息的请求头部,如ACCEPT、CONTENT-TYPE等。
4)客户端发送请求体:对于某些请求,例如POST请求,其中包含要传输给服务器的数据。
5)服务器处理请求:接收到请求后,服务器根据请求的URL和方法执行响应的操作,可能包括读取文件、执行脚本等。
6)服务器发送响应头部:服务器返回一个带有响应状态码、响应头部信息的HTTP响应。
7)服务器发送响应体:对于某些响应,例如返回HTML页面或文件,服务器会发送响应体。
8)客户端接收响应:客户端接收到服务器发返回的相应数据。
9)客户端处理响应:客户端根据响应状态码和头部信息进行相应的处理,可能包括解析HTML页面、渲染页面。
(3)参与到HTTP请求和响应整个过程的:
1)客户端:发送请求并接收响应。
2)服务器:接收请求并发送相应。
3)TCP协议:提供可靠的数据传输,确保请求和相应的可靠性。
4)HTTP协议:定义了请求和响应的格式和语义。
5)请求行:包含请求方法、URL和HTTP协议版本。
6)请求头部:包含附加的请求信息、例如用户代理、ACCEPT等。
7)请求体:包含要传输给服务器的数据,如表单数据。
8)响应状态码:表示请求的处理结果,例如200表示成功,404表示未找到资源。
9)响应头部:包含附加的响应信息,例如CONTENT-TYPE、SET-COOKIE等。
10)响应体:包含服务器的相应内容。

WEB服务器:
(1)常见的WEB服务器有:APACHE HTTP SERVER、NGINX等,TOMCAT是一个开源的JAVA SERVLET容器,也是一个WEB服务器。
(2)TOMCAT功能:
1)SERVLET容器:TOMCAT支持运行JAVA SERVLET和JAVASERVER PAGES,可以处理HTTP请求和生成动态内容。
2)WEB服务器:能够处理静态资源的请求,并提供基本的HTTP服务。
3)连接池管理:TOMCAT提供连接池管理功能,可以复用数据库连接、线程等资源,提高性能和并发处理能力。
4)安全管理:TOMCAT支持基于角色的访问控制、SSL加密等安全功能。
5)集群和负载均衡:TOMCAT可以通过集群配置实现负载均衡和高可用性。
(3)TOMCAT特点:
1)轻量级:TOMCAT的核心组件较小,占用资源较少。
2)易于部署和配置:TOMCAT提供了简单易用的管理界面和配置文件,方便开发人员进行部署和管理。
3)跨平台:TOMCAT支持在多种操作系统上运行。
4)可扩展性:TOMCAT提供了丰富的插件和扩展机制,可以通过添加额外组件来扩展功能。

网络协议:
(1)网络协议由一系列规则和标准组成,用于在计算机网络中实现数据传输和通信,这些协议定义了数据的格式、传输方式、错误检测、纠正的等。
(2)网络协议的底层:TCP负责将数据分割为小块并对其进行编号,然后通过IP将这些数据包从一个网络节点传输到另一个网络节点。
(3)网络协议确保了数据的可靠传输、数据的分组和组装、错误的检测和纠正,以及网络节点之间的路由选择和地址分配等功能。

HTTP请求和响应:
(1)ACCEPT:HTTP请求头部中的一个字段,用于告知服务器客户端能够接受的响应内容类型。
(2)CONTENT-TYPE:HTTP请求头部中的一个字段,用于告知服务器发送的请求体的内容类型。
(3)GET是HTTP请求方法之一,用于从服务器获取资源,它通过URL将请求参数附加在URL的查询字符串中,不会修改服务器上的资源。
(4)POST是HTTP请求方法之一,用于向服务器提交数据并请求处理,它将请求参数包含在请求体中发送给服务器,并且可以修改服务器上的资源。
(5)响应状态码:服务器对客户端请求的处理结果进行标识的三位数字代码。
(6)响应头部:服务器在响应中返回给客户端的元信息,包含了一些关于响应的信息,比如响应的内容类型、编码方式、缓存控制等。
(7)响应体:服务器返回给客户端的实际响应内容,可以是HTML页面、JSON数据、图片等不同类型的数据。
(8)客户端会根据响应状态码;来判断请求是否成功,并根据响应头部中的信息来处理响应内容,例如客户端根据CONTENT-TYPE字段来解析响应体的数据格式,进行相应的处理操作。
(9)客户端的请求头部包含了一些关于请求的元信息,请求体用于发送一些需要提交的数据,比如表单数据。
(10)SET-COOKIE:响应头部的一个字段,用于在客户端设置一个或多个COOKIE,用于跟踪和识别用户。

JNDI:
(1)JNDI,JAVA NAMING AND DIRECTORY INTERFACE JAVA命名和目录接口:作用是为JAVA应用程序提供命名和目录访问服务的API。
(2)JNDI注入是JNDI功能,将恶意代码注入到应用程序汇总,从而实现远程代码执行。
(3)JNDI过程:
1)攻击者找到目标程序中使用了JNDI的部分,并且存在未经充分验证的用户输入。
2)攻击者构造恶意的JNDI URL,并将其作为用户输入提交给目标程序。
3)目标应用程序在处理JNDI URL时,会通过JDNI服务解析URL,并加载相关对象。
4)最后则使JNDI服务加载并执行了恶意代码。

ICMP:
(1)INMP,INTERNET CONTROL MESSAGE PROTOCOL互联网控制消息协议:是互联网协议簇的核心协议之一,用于TCP/IP网络中发送控制消息,提供可能发生在其通信环境中的各种问题反馈,通过这些信息,网络管理者可以对所发生的问题作出诊断并解决。
(2)ICMP隧道:利用ICMP进行数据传输过程的攻击技术,其过程如下;
1)攻击者在目标网络中的两个节点之间建立一个ICMP隧道通道。
2)攻击者将要传输的输分割成小块,并封装在ICMP数据包中。
3)攻击者发送经过封装的ICMP数据包到目标网络的一个节点。
4)目标节点收到ICMP数据包后,将其中的数据还原出来。
5)攻击者和目标节点通过一系列回应和请求,完成数据传输。

NTML:
(1)NTML,NEW TECHNOLOGY LAN MANAGER:NTML身份验证协议是根据一种证明是服务器或域控制器的挑战CHALLAGE/响应RESPONSE 机制对用户和计算机进行身份验证,用户要知道该服务器和域控制器与账户关联的密码。
(2)使用NTLM协议时,每当需要新的访问令牌时,资源服务器必须执行以下操作之一来验证计算机或用户的身份:
1)如果计算机或用户是域用户,请联系域控制器的部门域认证服务来获取该账户的域。
2)如果该计算机或用户的账户是本地用户,请在本地账户数据库中查找该账户。
(3)NTLM V1和NTLM V2协议:
1)他们都是基于NTLM HaSH加密的。
2)他们的加密算法不同:V1的CHALLAGE值是8位,V2是16位;V1的主要加密算法是DES,V2主要加密算法是MD5。
(3)NTML协议(也叫挑战认证机制)的认证过程:
1)协商:用于确认双方的协议版本。
2)质询:即采用挑战CHALLAGE和响应RESPONSE模式。
3)验证:认证完成。
(4)V1协议的过程:
1)客户端向服务器发送身份验证请求。
2)服务器端向客户端发送一个随机数(称为挑战CHALLAGE)。
3)客户端使用用户密码和挑战生成一个HASH值,并将其发送给服务器。
4)服务器使用存储在本地的用户密码和挑战生成一个HASH值,并将其与客户端发送的HASH值进行比较和身份验证。
(5)V2协议的过程:在V1的基础上进行了改进,使用了更安全的HASH算法,并引入了更严格的安全要求。

域内用户枚举:攻击者利用某些漏洞或弱点,尝试获取目标网络内已存在的有效用户账号信息,这些信息可以用于后续的攻击,如密码破解、网络侵入等。

密码喷洒是一种攻击技术:攻击者尝试使用少量的常见密码或已知密码列表来尝试登录多个账号,这种攻击方法通常针对目标网络的多个用户账号进行尝试,以找到使用弱密码的账号,从而获取未经授权的访问权限。

ACCEPT和CONTENT-TYPE:
(1)他们是HTTP请求头部中的两个字段。
(2)ACCEPT字段用于告知服务器客户端可接受的响应类型,它可以指定多种类型,通常使用MIME类型表示,例如:"application/json"表示接收JSON格式的响应(MIME类型:浏览器要显示或处理资源的时候,并不知道其响应的数据是什么类型的,为了区分资源类型,就需要用到MIME;浏览器通常使用MIME类型,来确定如何处理URL,从而让浏览器知道数据类型、浏览器能够知道应该使用哪种插件或者应用程序去读取相关数据;MIME通用结构:TYPE-SUBTYPE,由类型与子类型两个字符串中间用/分割组成)。
(3)CONTENT-TYPE字段用于告知其服务器请求体的数据格式,它指定了请求体中包含的数据的媒体类型,通常也使用MIME表示。
(4)JSON是一种轻量级的数据交换格式,常用于前后端数据的传输,它基于JAVASCRIPT的一个子集,使用键值对的方式表示数据。

互联网协议簇:
(1)TCP/IP协议簇包含以下协议:
1)IP,INTERNET PROTOCOL互联网协议:负责在网络中传输数据包,并提供源和目标地址的定义。
2)TCP,TRANSMISSION CONTROL PROTOCOL传输控制协议:提供可靠的数据传输,保证数据的完整性。
3)UDP,USER DATAGRAM PROTOCOL用户数据报协议:提供无连接的数据传输,不保证数据的可靠性和顺序。
4)ICMP,INTERNET CONTROL MANAGER PROTOCOL我网络控制管理协议:用于网络设备之间的通信,提供错误报告和网络状况信息。
5)ARP,ADDRESS RESOLUTION PROTOCOL地址解析协议:将IP地址解析为物理MAC地址。
6)DNS,DOMAIN NAME SYSTEM域名解析协议:将域名解析为IP地址。
7)DHCP,DYNAMIC HOST CONFIGURATION PROTOCOL动态主机配置协议:动态分配IP地址和其他网络配置信息。
8)FTP,FILE TRANSFER PROTOCOL文件传输协议:用于文件传输。
9)HTTP,HYPERTEXT TRANSFER PROTOCOL超文本传输协议:用于在WEB浏览器和WEB服务器之间传输超文本文档。
10)SMTP,SIMPLE MAIL TRANSFER PROTOCOL简单邮件传输协议:用于电子邮件的发送。

ICMP隧道攻击:是一种利用ICMP协议进行攻击的方式,攻击者通过在ICMP报文中嵌入其他非ICMP协议的数据,将非ICMP流量伪装成ICMP流量。从而绕过网络防火墙和IDS/IPS设备的检测和过滤(IDS:INSTRUCTION DETECTION SYSTEM,入侵检测系统;IPS:INSTRUCTION PREVENTION SYSTEM,入侵防御系统),攻击者可以利用ICMP隧道来进行数据泄漏、远程控制等恶意活动。

域控制器:是服务器角色,用于管理和控制域内的所有计算机和用户,域控制器存储了域中所有用户账户信息,验证用户的身份和访问权限,并提供统一的身份认证和访问控制机制。在NTLM协议中,域控制器扮演者验证用户凭据的角色,负责生成和验证NTLM的HASH以进行身份认证。

访问令牌:操作系统中的一种数据结构,用于标识当前登录用户或进程的身份和权限,访问令牌包含用户或进程的安全标识符SID、权限信息、组成员关系等,通过访问令牌,操作系统可以对资源的访问进行权限验证和控制。

资源服务器:是指提供网络服务或存储数据的服务器,在客户端-服务器模型中,资源服务器是接收客户端请求并提供相应资源的服务器,例如WEB服务器提供网页资源,文件服务器提供文件存储和共享。

域用户是指域DOMIAN中的用户账户,其身份验证和访问控制由域控制器负责;本地用户是指属于某个计算机或服务器的用户账户,其身份验证和访问控制由本地计算机负责;域用户可以在多个计算机间共享,而本地用户只能在特定计算机上使用。

NTLM协议(NEW TECHNOLOGY LAN MANAGER)在网络通信中用于验证用户的身份和提供身份认证服务。

KERBEROS认证协议:
(1)一种网络身份验证协议,旨在提供强大的身份验证和安全通信。
(2)该协议中存在三个主要角色:客户端、验证服务器AS(AUTHENTICATION SERVER,简称AS:用于验证客户端的身份,验证通过就会给一张票证授予票证TICKET GRANTING TICKET,简称TGT,给客户端)和票据授予服务器TGS(TICKET GRANTING SERVER,简称TGS:通过TGT获取访问服务器端的SERVER TICKET,简称ST,进而访问服务器)。
(3)当客户端请求访问某个服务时,它首先向AS发送认证请求,AS验证客户端的身份,并发送一个加密的票据给客户端,该票据包含了客户端的身份信息和一个会话密钥。
(4)客户端将该票据发送给TGS请求访问特定服务,TGS会验证该票据的有效性,并向客户端返回一个用于与服务通信的票据ST。
(5)客户端使用该票据向服务发送请求,并且服务器也会验证该票据的有效性。

内网渗透:
(1)攻击者试图从外部网络进入目标网络,通过攻击内部网络的安全漏洞或利用弱密码等方式,进入并获取内部网络的未授权访问权限,以获取敏感信息、控制目标系统或执行其他恶意活动。
(2)通常分为以下几个阶段:侦查、入口点获取、扩展权限和持久化、侧向移动、信息收集和横向渗透、横向移动、权限提升、目标达成。
(3)侦查阶段:攻击者收集目标网络信息,包括IP地址范围、子网结构、域名信息等;然后攻击者试图找到一个入口点,通过利用漏洞或弱密码来获取第一个系统的访问权限,一旦获得初始访问权限,攻击者将寻找其他系统和用户凭据,以扩展其访问权限和持久化存在。
(4)侧向移动阶段:攻击者使用已获得的凭据和漏洞来横向移动到其他系统,并继续收集敏感信息,最终目标可能是获取管理员权限、访问敏感数据或控制整个网络。
(5)对于企业来说,加强内部网络的安全措施、及时修补漏洞和强化密码策略是预防内网渗透的重要措施。

KERBEROS:
(1)KEBEROS协议是一种基于第三方可信主机的计算机网络协议,它允许两个实体至今在非安全网络环境下以一种安全的方式证明自己的身份。
(2)KERBEROS由客户端、服务器、KDC(KEY DISTRIBUTION CENTER密钥分发中心,简称KDC,KDC默认安装在域控制器中)组成。
(3)其他相关概念:
1)SESSION KEY:会话临时密钥,用来加密网络上传输的数据,只在一段时间内有效。
2)DOMAIN CONTROLLER:域控制器,简称DC,即一台计算机实现用户、计算机的统一管理。
3)AUTHENTICATION SERVICE:身份验证服务,简称AS,用于KDC对客户端认证。
4)ACTIVE DIRECTORY:活动目录,简称AD,用于存储用户、用户组、域相关的信息。
(4)认证过程:
1)AUTHENTICATION 1:客户端向AS证明自己身份的过程,认证成功AS返回一个票据许可TGT(TICKET GRANTING TICKET)。
2)ANTHENTICATION 2:TGS(TICKET GRANTING SERVICE)通过客户端的TGT来判断是否有服务器的访问权限,若有,则TGS返回票据ST(SERVICE TICKET)。
3)ANTHENTICATION 3:客户端拿着票据ST与服务端进行同行。
(5)AUTHENTICATION 1 详解:
1)此验证过程是客户端向AS证明自己身份的过程,目的是为了获取票据许可TGT。
2)客户端向AS发送请求,内容包括客户端用自己的NTLM HASH对数据进行加密,然后发送给AS。
3)AS(AUTHENTICATION SERVICE)接收请求后,向AD(ACTIVE DIRECTORY)请求是否存在此用户;若存在,则取出该请求用户的NTLM HASH,并用此HASH对客户端的请求进行解密,解密成功,说明提供的密码正确,然后生成一个随机密钥,SESSION-KEY AS,接着AS会:
①用请求客户端的NTLM HASH对SESSION-KEY AS进行加密。
②返回TGT。
然后AS将这两部分返回给客户端,KERBEROS第一步请求完成。

十七、Day-17

AUTNENTICATION 2 过程:
1.客户端接收到AS的请求后,会做如下操作:
(1)使用自己的NTLM-HASH解密得到SESSION-KYE AS。
(2)使用SESSION-KEY AS加密数据,并作为第一部分。
(3)TGT作为第二部分,因为TGT是AS方的NTLM加密的,客户端无法解密。
2.客户端将第一、第二部分发送给TGS,TGS会做如下操作:
(1)用NTLM-HASH解密TGT。
(2)用SESSION-KEY AS解密第一部分内容。
(3)将两部分获取到时间戳进行比较,如果时间戳跟当前时间相差太久,就需要重新认证。
(4)TGS还会将客户端的信息与TGT中的客户端信息进行比较,如果相等,还会继续判断客户端有没有权限访问SERVER,如果都没有问题,认证成功。
3.认证成功后,TGS生成一个随机密钥,向客户端回复内容;然后客户端就可以和服务器进行通信。

AUTHENTICATION 3 过程:
1.客户端收到TGS的认证后,先解密出SESSION-KEY TGS,然后做如下操作:
(1)使用SESSION-KEY TGS加密客户端信息和时间戳,作为第一部分内容。
(2)将ST作为第二部分内容,ST因为使用的是SERVER NTLM-HASH进行加密的,所以无法解密。
2.客户端将这两部分共同发给服务器,服务器会做如下操作:
(1)用自身的SERVER NTLM解密ST,得到SESSION TGS、时间戳和客户端信息,作为第一部分。
(2)用SESSION TGS解密的内容作为第二部分。
(3)将第一部分的客户端信息、时间戳,与第二部分的客户端信息、时间戳进行对比,时间戳一般为8个小时,验证通过后,建立通信。

KEBEROS哪些认证步骤产生漏洞:
1.ANTHENTICATION 1中的KBR_AS_REQ请求阶段:当域内客户端某个用户试图访问域中的某个服务时,该阶段客户端会用自己的NTLM-HASH对数据(TIMESTAMP时间戳、CLIENT-INFO客户端信息、SERVER-INFO服务器信息)进行加密,然后发送给AS,此过程存在如下漏洞:
(1)HASH传递:此阶段用NTLM-HASH加密的认证,也就造成了HASH传递。
(2)域内用户枚举:此阶段客户端向AS证明自己的身份的过程,当用户不存在,返回包提示错误。
(3)密码喷洒:当用户名存在,密码正确和错误时,返回包也不一样,所以可以对用户名的密码进行爆破。
2.ANTHENTICATION 1中的KBR_AS_REP请求阶段:在此阶段,由于返回的TGT是由KBRTGT用户的HASH加密的,因此如果拥有KBRTGT的HASH就可以自己制作一个TGT,这就造成了黄金票据攻击;黄金票据:黄金票据是用来做后门的;伪造黄金票据的前提:要伪造的域用户·域名·域的SID值·KBRTGT账号的HASH值或AES-256值。
3.AUTHENTICATION 2中的KRB_TGS_REP请求阶段:TGS使用服务器的NTLM-HASH加密数据(SESSION-KEY TGS、TIMESTAMP、CLIENT-INFO),然后发送给客户端;白银票据:如果服务器HASH泄露,那么就可以解密甚至伪造TICKET,伪造的TICKET叫做白银票据。
4.PAC:PRIVILEGE ATTRIBUTE CERTIFICATE特权属性证书,简称PAC,为了增加了认证过程中的权限认证,PAC会被放在TGT里发送给客户端,然后客户端发送给TGS,MS14-068漏洞就是基于PAC认证的错误,从而导致域内普通用户可以伪造凭据,提权到管理员权限。

域内用户枚举:
1.正常域用户登录主机,可以通过 NET USER /DOMIAN 来列举出域内的用户,但是当我们用非域用户进行登录时,是不能使用 NET USER /DOMIAN 这条命令的,或者当主机不在域内但是能与域控通信时,以上两种情况可以通过以下方法对域内用户进行枚举。
2.KEBEROS本身是一种基于身份认证的协议,在KEBEROS协议认证的第一阶段AS-REQ时,当用户不存在时,返回包提示错误;当用户名存在时,密码正确和密码错误时的AS-REP返回包不一样,所以可以利用这点,对域内进行域用户枚举和密码喷洒攻击。
3.在AS-REQ阶段,客户端向AS发送用户名,AS对用户名进行验证,用户存在和不存在的返回的数据包不同,三种状态的错误代码分别为:
(1)KRB5DC_ERR_PREAUTH_REQUIRED:需要额外的预授权(用户存在)。
(2)KRB5DC_ERR_CLIENT_REVOKED:客户端凭证已被吊销(禁用)。
(3)KRB5DC_ERR_C_PRINCIPAL_UNKNOWN:在KEBEROS数据库中找不到客户端(不存在)。
(4)所以可根据AS的返回包来对域用户进行枚举。
(5)枚举工具:KERBRUTE、ENUMADUSER.PY等

十八、Day-18

密码喷洒攻击:常规爆破中,都是用很多密码碰撞一个账号,这样很容易导致账号被锁定;密码喷洒是先用一个密码去碰撞很多账号,可以有效避免账号被锁定问题;密码喷洒原理:
(1)确认用户存在后,客户端会发送一个AS-REQ请求,如果密码正确,则返回AS-REP,否则返回KRB5KDC_ERP_PREAUTH_FAILED。
(2)密码喷洒工具:KERBUTE、ADPWDSPRAY.PY等。

SSRF漏洞:SERVER-SIDE REQUEST FORGERY服务端请求漏洞,允许攻击者从受攻击服务器发送伪造的网络请求,攻击者能够通过修改请求参数来指定目标服务器的地址和端口,还可以利用SSRF漏洞来绕过防火墙、访问内部系统。
1.SSRF的原因:由于未正确验证或过滤用户提供的输入,攻击者利用这个漏洞可以发送网络请求,获取内部网络中的敏感信息,为了防止SSRF漏洞,开发人员应该始终验证和过滤用户提供的输入。
2.SSRF可以配合多种协议使用,包括但不限于HTTP FTP SMTP LDAP DNS等。
3.当SSRF攻击无法直接获取响应或回显时,攻击者可以采取以下方式来尝试获取信息或利用漏洞:
(1)利用DNS解析:攻击者可以通过将恶意请求发送到一个外部域名并解析该域名的响应来间接获取信息(即利用DNS重绑)。
(2)利用时间延迟攻击者可以通过观察请求的响应时间来判断操作是否成功,从而获取一些有用的信息。
(3)利用错误信息:攻击者可以观察应用程序返回的错误消息来获取一些有关系统敏感信息。
4.XSS和SSRF可结合起来使用:当存在XSS漏洞时,攻击者可以注入带有SSRF的恶意脚本,从而在受害者浏览器中执行SSRF攻击,这样攻击者可以通过受害者的浏览器向内部服务器发起请求,并在受害者的身份下获取敏感敏感信息或进一步攻击系统,这种组合可以绕过一些安全防护措施,增加攻击的成功率。

利用窗口特性绕过图片木马:
1.图片木马:一个可执行的exe文件,把图标换成图片的图标,诱导使用者点击运行,从而进行攻击。
2.WEB安全领域的图片木马:把木马的恶意脚本代码通过二进制的方式追加到图片文件末尾,将木马文件和图片合并为另一个图片文件,合并后的图片包含木马的脚本代码,而且不影响图片的显示,但用记事本等文本编辑器打开,能看到图片末尾的恶意代码;如果将图片上传到网站中,利用网站的漏洞,让网站把上传的图片当成脚本代码解析,从而达到运行恶意代码控制网站服务器的目的。
3.方法如下:
(1) 文件隐藏:将恶意代码隐藏在图片文件的文件头或文件尾部,利用文件解析器忽略文件头部或尾部的内容,识别为正常的图片格式,从而绕过检测。
(2)图片编码:将恶意代码以特殊编码的形式,嵌入到图片文件中,是的恶意代码在解码之后执行。
(3)渗透利用:通过一些特定图片处理库或程序漏洞,利用渗透技术将恶意代码注入到图片解析过程中。
4.图片木马的解析过程:
(1)解析器识别:系统的图片解析器会根据文件头或其他元数据识别文件的格式,并使用响应的解析器进行解析。
(2)图片解码:解析器会对图片文件进行解码,将二进制数据转换成像素点、颜色等图像信息。
(3)图片渲染:解码后的图像数据会被渲染到图片上,供用户观看。
(4)恶意代码执行:如果图片中携带了恶意代码,在解析过程中,可能会出发该恶意代码的执行。
5.为了防止图片密码的解析,可以采取以下措施:
(1)使用可信的图片解析库或程序,及时更新并修复可能存在的漏洞。
(2)对上传的图片进行严格的文件格式验证,确保只解析安全的图片格式。
(3)针对图片文件进行特征分析,检测是否携带可疑的代码或嵌入物。
(4)使用沙盒环境或虚拟机来解析图片,隔离恶意代码执行的环境,减少对系统的影响。

存在SHELL如何利用XSS实现长久控制:常见的方法:通过在受感染的网页中嵌入一个恶意JS代码,该代码会与一个远程服务器建立持久连接,以便攻击者可以远程控制受感染的浏览器,即使用户关闭了网页或重新启动了计算机,攻击者仍然可以保持对受感染的浏览器的控制。

渗透过程中遇到NOSUCHBUCKET错误时:意味着访问了一个不存在的存储BUCKET,可能是由于目标系统没有公开的存BUCKET,或者访问权限设置错误导致的,可以通过以下步骤来解决问题:
1.检车URL是否正确:确保URL中指定的存储BUCKET名称正确,并且没有拼写错误。
2.检查访问权限:确定本地是否有足够的权限来访问存储BUCKET,如果没有权限,则需要获取合适的权限才能继续。
3.确认存储BUCKET是否存在:通过其他方式确认存储BUCKET是否真的存在,可以通过使用其他工具或方法进行验证,例如BUCKETSCAN等。

找回密码中可能存在的逻辑漏洞:
1.弱密码重置验证:一些应用程序在密码重置过程中,可能没有足够强的验证机制,如果只要求用户的电子邮件地址就能够重置密码,攻击者可以通过访问目标用户的电子邮件账户来获取密码重置链接并进行密码重置。
2.密码提示问题不安全:应用程序要求用户设置密码提示问题,并且问题选择有限或者问题本身的答案容易猜测,攻击者可能通过猜测或者使用社会工程学手段来获取正确的答案并找回密码。
3.安全策略缺陷:应用程序可能存在安全策略上的缺陷,比如重置密码链接没有设置有效期限,或者发送重置密码链接时没有对用户进行身份验证。

订单信息可能存在的逻辑漏洞:
1.缺少输入验证:订单信息在用户提交前应进行输入验证,以确保数据的准确性和完整性,如果订单信息没有经过验证,可能导致错误的数据录入或者无效的订单。
2.缺少订单状态更新:订单流程中,每个状态的更新应该有相应的触发机制,如果订单状态没有正确地更新,可能导致无法准确追踪订单的状态。
3.重复订单: 没有合适的机制来防止用户提交重复订单,如果系统不检测重复订单,可能导致重复发货或者重复付款等问题。
4.价格计算错误:在生成订单是,价格计算应该准确无误,如果计算错误,可能导致价格显示不准确或者付款金额错误。
5.数据安全问题:订单信息设计用户的个人敏感信息,如果没有采取必要的安全措施保护订单信息,可能或面临数据泄漏和隐私问题。
6.用户权限验证:未对用户进行适当的权限验证,可能导致未授权的用户进行非法操作,如修改他人订单、取消他人订单等。

HTTP传输过程中可能存在的安全隐患:
1.窃听攻击:截取网络传输的数据包,以获取敏感信息。
2.中间人攻击:在通信两端中插入自己的服务器,篡改数据或拦截敏感信息。
3.数据篡改:修改HTTP请求或响应中的数据,导致信息被篡改或者误导。
4.跨站脚本攻击XSS:通过注入恶意脚本,使得用户在浏览器中执行恶意代码,从而盗取敏感信息。
5.跨站请求伪造CSRF:利用用户已登录的身份,通过伪造请求进行未授权的操作。

会员系统可能存在一下漏洞:
1.注册漏洞:未对用户输入进行合法性验证,导致恶意用户可以使用恶意脚本或特殊字符注册。
2.身份验证漏洞:未正确实现身份验证机制,导致未经授权的用户可以访问受限资源。
3.会话管理漏洞:会话标识符不安全地传输、存储或管理,导致会话被劫持或伪造。
4.权限控制漏洞:未正确实现权限控制机制,导致未经授权的用户可以执行敏感操作。

JS在漏洞挖掘中的作用:
前端安全控制:通过JS,可以进行前端的输入验证、数据加密、阻止跨站脚本攻击等操作,提升系统安全。

内联注释:特定编程语言中用于注释代码的方式,其原理是编译器或解释器在执行代码时会忽略注释部分,不对其进行解析和执行。内联注释通常使用特定的语法来标识注释内容,以便在代码执行时将其忽略,这样可以在代码中添加注释,对代码进行解释说明而不影响程序的执行逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值