1. 防范常见的 Web 攻击
- 常见的 Web 攻击类型
- SQL 注入:攻击者通过在用户输入框中输入恶意的 SQL 语句,试图获取数据库中的敏感信息。例如,在登录表单中输入
' or 1=1--
,如果网站没有进行适当的防范,可能会导致数据库信息泄露。 - XSS(跨站脚本攻击):攻击者在网页中注入恶意脚本(通常是 JavaScript),当其他用户访问该页面时,恶意脚本会在用户浏览器中执行。例如,在评论区输入
<script>alert('XSS')</script>
,如果网站没有对用户输入进行过滤,其他用户访问时就会弹出警告框,更恶意的脚本可能会窃取用户的登录信息等。 - CSRF(跨站请求伪造):攻击者利用用户在网站 A 已经登录的状态,诱使用户在不知情的情况下访问攻击者构造的恶意网站 B,网站 B 向网站 A 发起请求,由于用户在网站 A 是登录状态,可能会执行一些操作,如转账等。
- SQL 注入:攻击者通过在用户输入框中输入恶意的 SQL 语句,试图获取数据库中的敏感信息。例如,在登录表单中输入
- 防范措施
2. 重要协议分布层
- 物理层(Physical Layer)
- 负责处理物理介质上的比特流传输,例如光纤、双绞线等。常见的物理层标准有 IEEE 802.3(以太网),它规定了网络设备如何通过物理介质进行连接和传输数据。
- 数据链路层(Data Link Layer)
- 分为两个子层:逻辑链路控制(LLC)和介质访问控制(MAC)。主要功能是将物理层收到的比特流组成帧,进行差错检测和控制。例如以太网中的 MAC 地址就在此层起作用,它唯一标识网络中的一个节点。
- 网络层(Network Layer)
- 主要负责 IP 寻址和路由选择。例如,IP 协议(Internet Protocol)就在此层,它使得不同网络中的主机能够相互通信。路由器工作在此层,它根据 IP 地址进行数据包的转发。
- 传输层(Transport Layer)
- 主要有 TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)两种协议。TCP 提供可靠的、面向连接的通信服务,适用于对数据准确性要求高的应用,如 HTTP、FTP 等;UDP 提供不可靠的、无连接的通信服务,适用于对实时性要求高的应用,如在线游戏、视频直播等。
- 会话层(Session Layer)
- 负责建立、维护和管理会话。例如,在远程登录(Telnet)应用中,会话层负责建立和断开远程主机与本地主机之间的连接,并管理会话过程中的数据交换。
- 表示层(Presentation Layer)
- 负责处理数据的表示和转换,例如加密、解密、压缩、解压缩等操作。例如,在使用 SSL/TLS 协议进行安全通信时,表示层会对数据进行加密处理。
- 应用层(Application Layer)
- 直接为用户应用程序提供服务,包括 HTTP(Hypertext Transfer Protocol,超文本传输协议)、FTP(File Transfer Protocol,文件传输协议)、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)等协议。用户通过应用层协议来访问网络资源。
3. arp 协议的工作原理
- 地址解析协议(ARP)
- 目的:将 IP 地址转换为 MAC 地址。在局域网中,数据链路层通信是基于 MAC 地址的,而网络层使用 IP 地址。当一台主机要发送数据给另一台主机时,它需要知道对方的 MAC 地址。
- 工作过程
- 当主机 A 要发送数据给同一局域网中的主机 B(已知主机 B 的 IP 地址)时,主机 A 首先在本地的 ARP 缓存表中查找主机 B 的 MAC 地址。
- 如果在缓存表中找到了主机 B 的 MAC 地址,则直接使用该 MAC 地址封装数据帧并发送。
- 如果在缓存表中没有找到主机 B 的 MAC 地址,主机 A 会在局域网内广播一个 ARP 请求报文,该报文中包含主机 A 的 IP 地址和 MAC 地址以及主机 B 的 IP 地址。
- 局域网内的所有主机都会收到这个 ARP 请求报文,但只有主机 B 会识别出这是自己的 IP 地址被请求,于是主机 B 会向主机 A 发送一个 ARP 响应报文,报文中包含主机 B 的 MAC 地址。
- 主机 A 收到主机 B 的 ARP 响应报文后,将主机 B 的 MAC 地址添加到自己的 ARP 缓存表中,然后使用主机 B 的 MAC 地址封装数据帧并发送数据。
4. rip 协议是什么?rip 的工作原理
- RIP(Routing Information Protocol,路由信息协议)
- 定义:是一种内部网关协议(IGP),用于在自治系统(AS)内交换路由信息。
- 工作原理
- 距离向量算法:RIP 基于距离向量算法来计算路由。它使用跳数(hop count)来衡量到达目的网络的距离,每经过一个路由器,跳数就增加 1。
- 路由更新:RIP 路由器每隔 30 秒向相邻的路由器发送一次路由更新消息。更新消息中包含了路由器所知道的网络及其到这些网络的跳数。
- 路由选择:当路由器收到来自相邻路由器的路由更新消息时,它会根据收到的信息更新自己的路由表。如果收到的路由信息中的跳数比自己路由表中到相同目的网络的跳数少,则更新自己的路由表;如果收到的跳数比自己路由表中的跳数多,则忽略该更新信息。
- 最大跳数限制:RIP 规定最大跳数为 15,跳数为 16 时表示网络不可达。这是为了防止路由环路的产生。
5. 什么是 RARP?工作原理
- RARP(Reverse Address Resolution Protocol,逆地址解析协议)
- 定义:与 ARP 相反,RARP 用于将 MAC 地址转换为 IP 地址。
- 工作原理
- 当一台无盘工作站启动时,它只知道自己的 MAC 地址,但不知道自己的 IP 地址。它会在局域网内广播一个 RARP 请求报文,报文中包含自己的 MAC 地址。
- 网络中的 RARP 服务器收到这个请求报文后,会查找自己的 RARP 表(该表中记录了 MAC 地址和 IP 地址的对应关系),找到对应的 IP 地址后,向无盘工作站发送一个 RARP 响应报文,报文中包含无盘工作站的 IP 地址。
- 无盘工作站收到 RARP 响应报文后,就获得了自己的 IP 地址,可以正常地在网络中进行通信。
6. OSPF 协议?OSPF 的工作原理
- OSPF(Open Shortest Path First,开放式最短路径优先)
- 定义:是一种内部网关协议(IGP),用于在自治系统(AS)内进行路由选择。
- 工作原理
- 链路状态通告(LSA):OSPF 路由器会收集本地区域内的链路状态信息,包括接口的 IP 地址、子网掩码、连接的邻居路由器等,并将这些信息封装成链路状态通告(LSA)。
- 洪泛(Flooding):路由器将生成的 LSA 向本地区域内的所有相邻路由器发送,相邻路由器收到 LSA 后,再向它们的相邻路由器转发,如此反复,直到本地区域内的所有路由器都收到了该 LSA。这一过程称为洪泛。
- 构建链路状态数据库(LSDB):每个路由器根据收到的 LSA 构建自己的链路状态数据库(LSDB)。LSDB 包含了本地区域内所有链路的状态信息。
- 最短路径优先(SPF)算法:基于自己的 LSDB,路由器使用迪杰斯特拉(Dijkstra)的最短路径优先算法计算出到本地区域内各个目的网络的最短路径,形成路由表。
- 区域划分:OSPF 支持将自治系统划分为多个区域,这样可以减少路由更新的开销,提高网络的可扩展性。每个区域都有一个区域 ID,区域内的路由器只与本区域内的路由器交换 LSA,不同区域之间通过区域边界路由器(ABR)进行路由信息的交换。
7. TCP 与 UDP 区别总结
- TCP(Transmission Control Protocol)
- 连接导向:TCP 是一种面向连接的协议,在数据传输之前,需要先建立连接(三次握手),数据传输结束后,需要断开连接(四次挥手)。
- 可靠性:通过序列号、确认应答、重传机制等保证数据的可靠传输。如果发送的数据在一定时间内没有收到接收方的确认,发送方会重传数据。
- 流量控制:通过滑动窗口机制实现流量控制,确保发送方不会发送过多的数据导致接收方无法处理。
- 拥塞控制:采用慢启动、拥塞避免、快重传、快恢复等算法来避免和处理网络拥塞。
- 应用场景:适用于对数据准确性要求高的应用,如 HTTP(网页浏览)、FTP(文件传输)、SMTP(邮件传输)等。
- UDP(User Datagram Protocol)
- 无连接:UDP 是一种无连接的协议,不需要建立和断开连接,发送数据时直接将数据报发送给目标。
- 不可靠性:UDP 不保证数据的可靠传输,没有重传机制,数据报可能会丢失、重复或乱序。
- 无流量控制和拥塞控制:UDP 没有内置的流量控制和拥塞控制机制。
- 应用场景:适用于对实时性要求高的应用,如在线游戏、视频直播、DNS(域名系统)查询等。
8. 什么是三次握手四次挥手?
- 三次握手(TCP 连接建立过程)
- 第一次握手:客户端向服务器发送一个 SYN(Synchronize)报文段,请求建立连接,该报文段中包含客户端的初始序列号(ISN)。
- 第二次握手:服务器收到客户端的 SYN 报文段后,向客户端发送一个 SYN + ACK 报文段,其中 SYN 表示服务器同意建立连接,ACK 是对客户端 SYN 报文段的确认,报文中包含服务器的初始序列号和确认号(客户端的 ISN + 1)。
- 第三次握手:客户端收到服务器的 SYN + ACK 报文段后,向服务器发送一个 ACK 报文段,确认号为服务器的 ISN + 1,表示客户端确认与服务器建立连接。
- 四次挥手(TCP 连接断开过程)
- 第一次挥手:客户端向服务器发送一个 FIN(Finish)报文段,表示客户端想要关闭连接。
- 第二次挥手:服务器收到客户端的 FIN 报文段后,向客户端发送一个 ACK 报文段,表示服务器已经收到客户端的关闭请求。
- 第三次挥手:服务器处理完剩余的数据后,向客户端发送一个 FIN 报文段,表示服务器也准备关闭连接。
- 第四次挥手:客户端收到服务器的 FIN 报文段后,向服务器发送一个 ACK 报文段,表示客户端确认服务器关闭连接。
9. tcp 为什么要三次握手?
- 原因
- 防止旧的重复连接请求:如果没有三次握手,假设客户端发送了一个连接请求 SYN 报文段,由于网络延迟,该报文段在网络中滞留了一段时间。客户端以为连接请求丢失,重新发送了一个 SYN 报文段并成功建立了连接。当连接关闭后,之前滞留的 SYN 报文段到达服务器,如果服务器直接响应建立连接,就会建立一个无效的连接。而通过三次握手,服务器在收到客户端的 SYN 报文段后,会发送一个 SYN + ACK 报文段给客户端,客户端收到后会检查是否是自己发起的连接请求,如果是,则发送 ACK 报文段确认,这样就避免了旧的重复连接请求建立无效连接的问题。
- 确保双方都具有发送和接收能力:第一次握手客户端发送 SYN 报文段,证明客户端有发送能力;第二次握手服务器发送 SYN + ACK 报文段,证明服务器有发送和接收能力;第三次握手客户端发送 ACK 报文段,证明客户端有接收能力。通过三次握手,确保双方都具备了发送和接收数据的能力,能够正常地进行数据传输。
10. dns 是什么?dns 的工作原理
- DNS(Domain Name System,域名系统)
- 定义:是互联网的一项服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
- 工作原理
- 本地解析:当用户在浏览器中输入一个域名时,浏览器首先会检查本地缓存中是否有该域名对应的 IP 地址。如果有,则直接使用该 IP 地址访问网站;如果没有,则向本地 DNS 服务器发送查询请求。
- 本地 DNS 服务器查询:本地 DNS 服务器收到查询请求后,首先检查自己的缓存中是否有该域名对应的 IP 地址。如果有,则将 IP 地址返回给用户;如果没有,则本地 DNS 服务器开始递归查询。
- 递归查询:本地 DNS 服务器向根 DNS 服务器发送查询请求,根 DNS 服务器根据域名的顶级域名(如.com、.org 等),返回负责该顶级域名的权威 DNS 服务器的地址给本地 DNS 服务器。
- 权威 DNS 服务器查询:本地 DNS 服务器根据根 DNS 服务器提供的地址,向负责该域名的权威 DNS 服务器发送查询请求,权威 DNS 服务器查询自己的数据库,找到该域名对应的 IP 地址后,返回给本地 DNS 服务器。
- 本地 DNS 服务器返回结果:本地 DNS 服务器将从权威 DNS 服务器获得的 IP 地址缓存起来,然后将 IP 地址返回给用户。用户的浏览器根据得到的 IP 地址访问网站。