【网络安全面经】技术性问题3

server/2024/11/19 7:57:13/

11. 一次完整的 HTTP 请求过程

  • 域名解析:通过 DNS 将域名转换为 IP 地址,如上述 DNS 的工作原理。
  • 建立 TCP 连接:客户端向服务器发送 SYN 报文段,经过三次握手建立 TCP 连接。
  • 发送 HTTP 请求:客户端向服务器发送 HTTP 请求报文,请求报文包括请求行(包含请求方法,如 GET、POST 等,请求的 URL 和 HTTP 协议版本)、请求头(包含客户端的一些信息,如浏览器类型、语言等)和请求体(对于 POST 请求,请求体中包含要提交的数据)。
  • 服务器处理请求:服务器收到 HTTP 请求后,根据请求的内容进行处理。如果请求的是一个网页,服务器会查找相应的网页文件,并可能执行服务器端脚本(如 PHP、ASP 等)。
  • 发送 HTTP 响应:服务器处理完请求后,向客户端发送 HTTP 响应报文。响应报文包括响应行(包含 HTTP 协议版本、状态码和状态消息,如 200 OK 表示请求成功)、响应头(包含服务器的一些信息,如服务器类型、内容类型等)和响应体(包含实际的响应内容,如网页的 HTML 代码)。
  • 关闭 TCP 连接:客户端收到 HTTP 响应后,根据响应内容进行处理(如在浏览器中显示网页)。然后,客户端和服务器通过四次挥手关闭 TCP 连接。

12. Cookies 和 session 区别

  • Cookies
    • 定义:是由服务器发送给客户端浏览器,并保存在客户端本地的一小段文本信息。
    • 工作机制
      • 当用户第一次访问网站时,服务器可以在响应头中设置一个或多个 Cookies,浏览器收到响应后,会将 Cookies 保存起来。
      • 下次用户再次访问该网站时,浏览器会在请求头中自动带上这些 Cookies,服务器根据收到的 Cookies 来识别用户的身份或获取用户的相关信息。
    • 特点
      • 存储在客户端,容易被篡改。
      • 可以设置过期时间,在过期时间之前,每次访问网站都会带上 Cookies。
  • Session
    • 定义:是服务器端为了维护用户状态而创建的一种机制。
    • 工作机制
      • 当用户第一次访问网站时,服务器会为用户创建一个唯一的会话 ID,并将该会话 ID 通过 Cookies 或 URL 重写等方式传递给客户端。
      • 客户端在后续的请求中带上会话 ID,服务器根据会话 ID 在服务器端找到对应的会话对象,会话对象中存储了用户的相关信息。
    • 特点
      • 会话信息存储在服务器端,相对安全
      • 通常需要依赖 Cookies 或其他机制来传递会话 ID,如果客户端禁用了 Cookies,可能需要采用其他方式(如 URL 重写)来传递会话 ID。

13. GET 和 POST 的区别(续)

  • 安全性(续)
    • POST:数据在请求体中,相对 GET 更安全一些,但如果没有采用加密传输(如 HTTPS),数据仍然可能被截获。
  • 缓存
    • GET:通常会被浏览器缓存,当用户再次访问相同的 URL 时,浏览器可能直接从缓存中获取数据,而不向服务器发送请求。
    • POST:一般不会被浏览器缓存,每次提交 POST 请求都会向服务器发送数据。
  • 幂等性
    • GET:具有幂等性,多次执行相同的 GET 请求,对服务器资源的影响是相同的,即不会改变服务器资源状态。例如多次查询数据库中的数据,结果是相同的。
    • POST:一般不具有幂等性,多次执行相同的 POST 请求可能会对服务器资源产生不同的影响,如多次提交订单会创建多个订单。

14. HTTPS 和 HTTP 的区别

  • 数据传输安全
    • HTTP(Hypertext Transfer Protocol):数据以明文形式传输,在传输过程中容易被窃取、篡改。例如,用户在 HTTP 网站上输入的登录密码可能会被网络中的攻击者截获。
    • HTTPS(Hypertext Transfer Protocol Secure):在 HTTP 的基础上加入了 SSL/TLS 协议进行加密传输。它使用公钥 - 私钥对数据进行加密和解密,确保数据在传输过程中的安全性。
  • 端口号
    • HTTP:默认端口号是 80。
    • HTTPS:默认端口号是 443。
  • 证书
    • HTTP:不需要证书。
    • HTTPS:需要 SSL 证书,证书由证书颁发机构(CA)颁发,用于验证网站的身份。当用户访问 HTTPS 网站时,浏览器会检查证书的有效性,如果证书无效或过期,浏览器会提示用户存在安全风险。
  • 搜索引擎优化(SEO)
    • HTTP:随着网络安全的重视,搜索引擎对 HTTP 网站的排名可能会逐渐降低。
    • HTTPS:搜索引擎更倾向于对 HTTPS 网站进行更好的排名,因为它能提供更安全的用户体验。

15. session 的工作原理?

  • 创建
    • 当用户第一次访问网站时,服务器会创建一个新的会话(Session),并为该会话生成一个唯一的会话 ID(Session ID)。
  • 存储
    • 服务器会将会话相关的数据(如用户登录信息、购物车数据等)存储在服务器端的内存或其他存储介质(如数据库)中,以会话 ID 作为索引。
  • 传递
    • 服务器将会话 ID 传递给客户端,通常通过以下方式:
      • Cookies:最常见的方式是将会话 ID 放在 Cookies 中发送给客户端,客户端在后续的每次请求中都会自动带上 Cookies 中的会话 ID。
      • URL 重写:如果客户端禁用了 Cookies,服务器可以将会话 ID 附加在 URL 后面,如http://example.com/page.jsp;jsessionid=123456,这种方式需要对网站中的链接进行处理,确保会话 ID 能够正确传递。
  • 检索和使用
    • 当客户端再次发送请求时,服务器根据收到的会话 ID 检索对应的会话数据,根据会话数据来处理用户的请求。例如,如果用户已经登录,服务器可以根据会话中的用户登录信息提供个性化的服务。
  • 销毁
    • 当用户退出登录、会话超时或服务器决定结束会话时,服务器会销毁对应的会话数据,并停止跟踪该用户的会话状态。

16. http 长连接和短连接的区别

  • 短连接(HTTP Short - Connection)
    • 定义:每次 HTTP 请求 / 响应完成后,客户端和服务器之间的 TCP 连接就会立即关闭。
    • 工作过程
      • 客户端向服务器发起 HTTP 请求,先建立 TCP 连接(通过三次握手)。
      • 服务器处理请求并返回 HTTP 响应。
      • 客户端收到响应后,通过四次挥手关闭 TCP 连接。
      • 下次客户端有新的 HTTP 请求时,需要重新建立 TCP 连接。
    • 应用场景:适用于对实时性要求不高、请求频率较低的场景,如简单的网页浏览,用户在不同页面之间切换时,每次重新建立连接对用户体验影响不大。
  • 长连接(HTTP Long - Connection)
    • 定义:在一次 TCP 连接中可以进行多次 HTTP 请求 / 响应,连接在一段时间内保持打开状态,直到达到预定的条件(如空闲时间过长、连接数量达到上限等)才会关闭。
    • 工作过程
      • 客户端向服务器发起 HTTP 请求,建立 TCP 连接。
      • 服务器处理请求并返回 HTTP 响应,但 TCP 连接不关闭。
      • 客户端可以在该连接上继续发起新的 HTTP 请求,服务器继续处理和响应,多次重复此过程。
      • 当满足关闭条件时,通过四次挥手关闭 TCP 连接。
    • 应用场景:适用于对实时性要求高、请求频繁的场景,如在线聊天、网页游戏等,避免了频繁建立和断开 TCP 连接带来的开销,提高了数据传输效率。

http://www.ppmy.cn/server/143123.html

相关文章

高级java面试---spring.factories文件的解析源码API机制

引言 Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码…

PyTorch数据集方法

使用 PyTorch 处理数据:深入了解 torch.utils.data.Dataset 和 torch.utils.data.DataLoader 在深度学习中,数据的管理和加载是模型训练的关键环节。PyTorch 提供了强大的工具来简化这一过程,其中 torch.utils.data.Dataset 和 torch.utils.…

系统级编程语言Rust概述

文章目录 语言背景和历史基本语法和结构语言特性标准库和生态系统工具链和开发环境rustccargo 性能及应用场景语言的优缺点对比其他编程语言总结学习资料 语言背景和历史 Rust是由Mozilla的工程师Graydon Hoare于2006年开始设计的一门编程语言,目的是创建一种内存安…

Node.js 中如何实现延迟和超时 ?

在快节奏的 web 开发世界中,管理操作的时间对于创建高效、用户友好的应用程序至关重要。Node.js 是一个功能强大的 JavaScript 运行时,它提供了几种通过延迟和超时来控制执行流的方法。本指南将引导你完成在 Node.js 中实现延迟和超时的要点,…

安全见闻-泷羽sec课程笔记

编程语言 C语言:一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入式开发。 C:在C语言基础上发展而来,支持面向对象编程,常用于尊戏开发、高性能计算等领域。 Java:一种广泛使用的面问对象编程语言,具有跨平台…

Jmeter中的断言(二)

5--XPath2 Assertion 功能特点 数据验证:验证 XML 响应数据是否包含或不包含特定的字段或值。支持 XPath2.0:使用 XPath2.0 表达式定位和验证 XML 数据中的字段。灵活配置:可以设置多个断言条件,满足复杂的测试需求。 配置步骤…

PyTorch 与 TensorFlow 模型搭建的区别

PyTorch 与 TensorFlow 模型搭建的区别 在深度学习领域,PyTorch 和 TensorFlow 是两个最流行的框架。本文将通过手写数字识别(MNIST 数据集)作为例子,探讨这两个框架在模型搭建中的主要区别,包括 PyTorch 的动态性、卷…

MySQL Online DDL

文章目录 1. 在线DDL的优势2. 支持的DDL操作3. 在线DDL的原理4. Online DDL的操作流程1. 准备阶段(Prepare phase)2. 拷贝阶段(Copy phase)3. 应用阶段(Apply phase)4. 替换阶段(Swap phase&…