每日一篇——23秋招计算机网络面经(2)
⭐请简要介绍一下RESTful API的概念和特点
RESTful API(Representational State Transfer)是一种基于HTTP协议的架构风格,用于设计和描述网络应用程序接口。
RESTful API的主要特点包括:
- 基于标准的HTTP协议:RESTful API使用HTTP协议作为通信协议,利用HTTP的请求方法(如GET、POST、PUT、DELETE等)进行资源的操作和状态的转移。
- 资源导向:RESTful API将数据和功能封装成资源,并通过URL来标识和访问这些资源。每个资源都可以通过唯一的URL进行定位,通过HTTP方法对资源进行操作。
- 状态无关性:RESTful API是无状态的,即服务端不会保存客户端的状态信息。每个请求应该包含所需的所有信息,服务器不会保留客户端的会话状态。
- 统一接口:RESTful API具有统一的接口风格,采用一致的方法命名和URL结构,使得不同的资源和操作具有相似的表达方式。
- 可缓存性:RESTful API通过使用HTTP的缓存机制,提高了性能和可伸缩性。客户端可以缓存响应,避免频繁的网络请求。
通过符合RESTful API的设计原则,可以使接口具有更好的可读性、可扩展性和易于维护性。但需要注意的是,RESTful API并不是万能的,对于复杂的业务场景可能需要定制化的接口设计。
⭐HTTPS的工作流程
HTTPS(Hypertext Transfer Protocol Secure)是一种通过加密和认证的安全传输协议,它基于HTTP协议,在数据传输过程中使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)协议进行加密和身份验证。下面是HTTPS的工作流程:
- 客户端发起HTTPS请求:客户端(通常是浏览器)向服务器发送一个HTTPS请求。
- 服务器配置:服务器需要配置支持HTTPS,并且需要有有效的数字证书。数字证书通常由可信的第三方机构(如CA机构)签发,用于对服务器进行身份验证。
- 服务器证书返回:服务器将自己的数字证书和相关信息返回给客户端。该证书包含了服务器的公钥、证书的有效期等信息。
- 客户端验证证书:客户端收到服务器返回的证书后,会验证证书的合法性和可信任性。客户端会检查证书的签发机构是否受信任、证书是否在有效期内等。
- 客户端生成密钥:如果证书验证通过,客户端生成一个用于加密通信的随机对称密钥(Session Key),并使用服务器的公钥进行加密。
- 密钥交换:客户端将通过服务器的公钥加密的随机密钥发送给服务器。
- 服务器解密密钥:服务器使用自己的私钥对收到的加密密钥进行解密,得到客户端生成的对称密钥。
- 加密通信:客户端和服务器使用对称密钥进行加密和解密数据,确保数据在传输过程中的机密性和完整性。
- 数据传输:客户端和服务器之间通过加密通道进行数据传输。所有的HTTP请求和响应都会被加密,防止中间人窃听或篡改数据。
⭐CDN的请求和响应流程
- 用户输入网站如 www.aa.com,在本地没有 DNS 缓存,则需要向dns服务器发起请求
- 由于配置了CNAME,因此dns解析出来是一个别名,如 www.aa.xxcdn.com
- 请求指向了CDN网络中的智能 DNS 负载均衡系统
- 智能 DNS 负载均衡系统解析域名,返回给用户就近的缓存服务器(CDN)的 ip 节点给用户
- 用户请求该 ip 节点(CDN)
- 由于未经缓存,该ip节点会探测就近的节点上是否存在该内容。如果不存在则继续向上级节点回源(如中心节点等)
- 如果边缘节点、中心节点都不存在,则继续向源站回源(即内容厂商的服务器处)
- 中心节点获取到内容后返回边缘节点,边缘节点再返回给用户。至此即在 CDN 上缓存了响应的内容。
⭐说一下状态码
HTTP状态码是指在HTTP协议中,用于表示服务器对请求的处理结果的三位数代码。常见的状态码有以下几类:
- 1XX:信息性状态码
- 100 Continue:表示服务器已经接收到请求的初始部分,客户端可以继续发送剩余的请求。
- 101 Switching Protocols:表示服务器已经理解了客户端的请求,并将切换到不同的协议进行通信。
- 2XX:成功状态码
- 200 OK:表示请求已成功,服务器正常处理并返回响应。
- 201 Created:表示请求已成功,并在服务器上创建了新的资源。
- 204 No Content:表示服务器成功处理了请求,但没有返回任何内容。
- 3XX:重定向状态码
- 301 Moved Permanently:永久性重定向,请求的资源已被分配了新的URI。
- 302 Found:临时性重定向,请求的资源暂时被分配了新的URI。
- 304 Not Modified:表示客户端发送的请求资源在服务器上未被修改,可以直接使用客户端缓存的版本。
- 4XX:客户端错误状态码
- 400 Bad Request:表示服务器无法理解客户端发送的请求,语法存在问题。
- 403 Forbidden:表示服务器拒绝访问客户端请求的资源。
- 404 Not Found:表示服务器找不到请求的资源。
- 5XX:服务器错误状态码
- 500 Internal Server Error:表示服务器在执行请求时遇到了错误。
- 502 Bad Gateway:表示作为网关或代理的服务器从上游服务器接收到无效的响应。