计算机网络 - 应用层

应用层

  1. uri和url的区别:uri是统一资源标识符 url是统一资源定位符,统指绝对路径 url是uri的子集

  2. dns的工作原理?主要解析过程?

    客户端查询域名的ip地址的过程:查询本地hosts文件是否有网址映射关系 -> 查询本地dns解析器缓存 -> 查询本地dns服务器 -> 本地dns服务器访问根服务器,从根服务器中查找对应的顶级域名服务器并继续向下查找域名服务器的ip。

    dns默认使用udp协议

  3. 用户输入网址到显示对应页面的全过程
    用户输入网址 -> DNS解析 -> TCP连接 -> 发起HTTP请求 -> 处理请求 -> 浏览器渲染 -> TCP连接断开

  4. http头部包含哪些信息

    • 通用首部字段:请求和响应都可以使用的首部,与报文相关的最基本的信息。
    • 请求首部字段:仅在请求中使用的首部。
    • 响应首部字段:仅在响应中使用的首部。
    • 实体首部字段:用于应对实体部分的首部,一般是对实体内容进行说明
  5. http方法了解哪些

    • get:请求指定的页面信息并返回内容,通常只用于读取数据
    • head:类似于get请求,但返回的响应中没有具体内容,只用于获取报头
    • post:向指定资源提交数据进行处理请求,数据被包含在请求体中。
    • put:替换指定资源,没有就新增
    • delete:请求服务器删除url标识的资源数据
    • options:向服务器发送该方法,会返回对指定资源所支持的http请求方法
  6. http状态码了解哪些

    • 1xx:提示信息,目前是协议处理的中间状态,还需要后续操作 正在处理
    • 2xx:成功,报文已经收到并被正确处理 常见:200(响应头有body数据) 204(响应头无body数据) 206(用于分块下载和断点续传,表示返回的body数据只是一部分)
    • 3xx:重定向,资源位置发生变动,需要客户端重新发送请求 常见:301(永久重定向,请求的资源已经不存在,需要用新的url访问) 302(临时重定向) 304(缓存重定向,可以继续使用缓存资源)
    • 4xx:客户端错误,请求报文有误,服务器无法处理 常见:400(客户端请求的报文有错误) 403(服务器禁止访问资源) 404(表示请求的资源在服务器上不存在或未找到)
    • 5xx:服务器错误,服务器在处理请求时内部发生了错误 常见:500(笼统通用的错误码,服务器发生错误) 501(客户端请求的功能还不支持) 502(客户端请求的功能还不支持) 503(服务器当前很忙,暂时无法响应客户端)
  7. get和post的区别

    • get携带的参数放在url上,post携带的参数放在body内
    • get请求参数以url形式完整保留在浏览器记录中,存在安全问题,post请求参数不会被浏览器记录
    • post可以进行复杂的加密,get不行
    • get只支持ASCII字符格式的参数,post无限制
    • get提交的数据大小有限制,post无限制
    • get方法具有幂等性,post不具有
    • post方法有时会发送两个tcp数据包,即先发送header再发送data
  8. http和https的区别
    http:

    • 使用明文通信,内容可能会被窃听
    • 不验证通信方的身份,通信方的身份有可能遭遇伪装
    • 无法证明报文的完整性,报文可能被篡改
      https:
    • https发送时,request通过ssl/tls进行处理,然后再通过tcp进行发送;数据接收时也统一需要处理。
  9. https的加密方式

    • 数据加密
    • 数字证书认证
    • 通过ssl/tls报文摘要功能检验报文完整性

    数据加密的方式:对称加密和非对称加密(对称加密指加密和解密使用同一密钥,非对称就iami指加密和解密使用不同的密钥)
    https的加密方式:
    1. 发送方获取接收方非对称加密的公开密钥
    2. 通过非对称加密的公开密钥对对称加密的密钥进行加密
    3. 将加密后的密钥发送给接收方
    4. 接收方使用非对称加密的私钥对对称加密的密钥进行解密
    5. 双方都具有对称加密的密钥,相互之间都可以通信

  10. http是不保存状态的协议,如何保存用户状态?

  • session的形式:
    1. 客户端第一次发送信息到服务器时,服务器为该客户端创建一个session对象,该session包含客户端身份信息,同时为该session生成一个sessionId
    2. 服务器端将sessionId分配给客户端,客户端发送请求时带有此sessionId,服务端就可以区分客户端。
  • coockie的形式
    1. 客户端第一次发送信息到服务器时,服务器根据该客户端信息编码加密生成一个cookie
    2. 服务器端将cookie发送到客户端,客户端发送请求时带有此cookie,服务器就可以区分客户端。
  1. http不同版本的区别
  • http 0.9
  • http 1.0 第一个正式版本
  • http 1.1 默认长连接,支持流水线,支持同时打开多个TCP连接 支持虚拟主机 新增状态码100 新增缓存处理指令max-age 不会压缩请求和响应首部 不支持有效的资源优先级
  • http 2.0 采用二进制传送 支持多路复用 头部压缩 支持服务器推送
  • http 3.0 使用udp作为传输层协议 quic协议保证安全性 建立连接快
  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值