高频面试题中的HTTP(四)

稀饭2024-03-18interviewHTTP

TCP的三次握手

  1. 客户端发送连接请求报文段
  2. 服务器收到客户端的连接请求后,如果同意建立连接,则会发送一个响应报文
  3. 客户端收到服务器的响应后,对其进行确认,服务器收到这个确认后,就完成了三次握手,双方可以开始进行数据传输了。

以boss投简历为例,第一步,向hr打招呼,第二步,hr收到消息并且有意向,就会回应,第三步,收到hr的消息之后去发送简历;

TCP四次挥手

  1. 客户端向服务器发送连接释放请求(FIN)报文段。客户端希望关闭连接,并停止发送数据。客户端进入FIN_WAIT_1状态。

  2. 服务器收到连接释放请求后,发送确认(ACK)报文段作为响应,确认收到了客户端的关闭请求。服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。

  3. 服务器完成自己未发送的数据的发送后,发送连接释放请求(FIN)报文段给客户端,表示服务器也希望关闭连接。服务器进入LAST_ACK状态。

  4. 客户端收到服务器的连接释放请求后,发送确认(ACK)报文段作为响应,确认收到了服务器的关闭请求。客户端进入TIME_WAIT状态。此时,服务器等待最后一个ACK的确认。

  5. 在经过一段时间(通常是两倍的报文段最大生存时间,即2MSL)后,客户端关闭连接,结束TIME_WAIT状态。最后一个ACK被发送到服务器。

在四次挥手完成后,TCP连接正式关闭,客户端和服务器都进入了CLOSED状态。

需要注意的是,这里的挥手过程中,每个报文段都需要对方进行确认。同时,客户端和服务器都需要维护一些状态来跟踪连接的关闭过程,以保证可靠的连接释放。

HTTP和HTTPS的区别

  1. 安全性: HTTP是明文传输协议,数据在传输过程中不经过加密处理,容易被窃听和篡改。HTTPS则通过使用SSL/TLS协议对数据进行加密,确保传输过程中的安全性。

  2. 默认端口: HTTP默认使用端口80进行通信。HTTPS默认使用端口443进行通信。

  3. 证书要求: HTTP不需要使用证书。HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)证书来验证服务器的身份,并建立安全连接。

HTTPS加密过程或执行过程

① 证书验证阶段 浏览器发起HTTPS请求 服务端返回HTTPS证书 客户端验证证书是否合法,如果不合法则提示告警

② 数据传输阶段 当证书验证合法后,在本地生成随机数 通过公钥加密随机数,并把加密后的随机数传输到服务端 服务端通过私钥对随机数进行解密 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输

HTTPS中的SSL证书做了什么

身份验证: SSL证书由可信任的数字证书颁发机构(CA)签发,用于验证服务器的身份。证书中包含了服务器的公钥以及与之相关的信息,确保客户端连接到的是预期的服务器而非恶意伪造的服务器。

数据加密: SSL证书中的公钥用于对数据进行加密,并且只有服务器拥有与该证书关联的私钥才能解密数据。这样,即使在传输过程中数据被截获,也无法被解密读取。

数据完整性:SSL握手过程中,服务器会生成一个消息摘要,并使用私钥对其进行签名。客户端收到数据后可以使用证书中的公钥来验证签名的有效性,确保数据在传输过程中没有被篡改。

安全连接建立: 通过SSL证书,客户端和服务器可以协商出一种加密算法和密钥,用于在之后的通信过程中进行加密和解密,确保传输的数据保持机密性和完整性。

总结起来,HTTPS使用SSL证书实现了数据加密、身份验证和数据完整性保护,从而提供了更高的安全性,适用于需要保护敏感信息(如个人信息、密码等)的网站和应用程序。

前端攻击

XSS攻击

说明:在网页中注入JavaScript代码,从而在受害者的浏览器上执行恶意操作 解决:过滤用户输入输出及浏览器参数,避免将用户输入内容直接作为html输出到页面

CSRF攻击

说明:攻击者可以通过伪造请求,发送恶意请求到受信任的网站,欺骗用户进行非预期的操作 解决:使用验证码来增加人为干预,并校验当前运行环境的域名信息

数据窃取

说明:攻击者通过窃取浏览器的Cookie信息或利用恶意广告注入恶意脚本来窃取网页中的敏感数据 解决:使用https协议,并对传输的敏感参数加密

中间人攻击

说明:攻击者会在通信过程中插入自己作为中间人的位置,使其能够拦截、篡改或窃取通信数据 解决:使用vpn,生物认证

上传文件攻击

说明:文件名攻击,上传的文件采用上传之前的文件名,可能造成:客户端和服务端字符码不兼容,导致文件名乱码问题;文件名包含脚本,从而造成攻击。 解决:对上传文件名转义或者生成新文件名,隐藏文件真实路径,限制文件大小

如果第二次握手失败会怎么样

可能发生以下几种情况:

  • 超时:客户端 A 在规定时间内没有收到服务器端 B 的 SYN/ACK 报文段,即超过了连接建立的超时时间。这可能是由于网络延迟、丢包或者服务器端未正常响应等问题导致的。
  • 拒绝:服务器端 B 可能选择拒绝连接请求,例如,基于某些安全策略、负载均衡机制或者连接数限制等原因。
  • 重传:客户端 A 可能会尝试重新发送第一次握手的连接请求,以期望能够重新建立连接。

七层网络模型

  • 物理层:负责传输比特流,对应物理介质和网络设备(如网线、集线器)。
  • 数据链路层:负责可靠地传输数据帧,对应网桥、交换机等设备。
  • 网络层:负责确定数据的路径和地址,对应路由器、防火墙等设备。
  • 传输层:负责提供端到端的可靠数据传输,对应传输控制协议(TCP)和用户数据报协议(UDP)等协议。
  • 会话层:负责建立、管理和终止会话连接。
  • 表示层:负责数据格式转换、数据加密等操作。
  • 应用层:提供各种应用服务,例如HTTP、FTP、DNS等。