HTTP框架修炼之道|青训营

84 阅读4分钟

HTTP协议基础

什么是HTTP协议?

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等

HTTP是建立在TCP协议之上的一种应用层网络协议,由请求和响应构成,虽然HTTP通常依赖tcp作为传输层协议,但是事实上,HTTP可以在任何其他互联网协议上,或者其他网络上实现,只要其下层协议提供可靠的传输,任何能够提供这种保证的协议都可以被其使用

HTTP默认的端口号为80,HTTPS的端口号为443。

HTTP的作用

HTTP是浏览器和Web Server之间通信的协议,目的是处理客户端和服务端之间的通信

协议特点

1.方向单一性 HTTP协议永远都是客户端发起请求,服务器回送响应。无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端,即"推送服务"

2.无状态协议 协议的状态是指下一次传输可以“记住”这次传输信息的能力,http是不会为了下一次连接而维护这次连接所传输的信息,这是为了更快地处理大量事务,确保协议的可伸缩性,而特意设计的如此简单 (虽然HTTP本身是无状态协议,但可以通过COOKIE技术来保存状态信息)

3.持久链接(Connection: keep-alive) 从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,只要任意一端没有明确提出断开,则保持TCP连接状态。 简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache,Nginx)中设定这个时间。

4.管线化 持久链接使得多数请求以管线化方式发送成为可能,使得不必等待收到上个请求的响应结果再发送下一个请求,即可以做到同时并行发送多个请求,而管线化技术比持久链接还要快 参考HTTP管线化说明

5.其他特点 支持客户/服务器模式。支持基本认证和安全认证。

HTTP的请求方法:

(1)OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送"*"的请求来测试服务器的功能性。

(2)HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

(3)GET:向特定的资源发出请求。注意:get方法不应当被用于产生“副作用”的操作中。例如在Web APP中,其中一个原因是GET可能会被网站蜘蛛等随意访问。

(4)POST:向指定资源提交数据进行处理请求(比如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。

(5)PUT:向指定资源位置上传其最新内容。

(6)DELETE:请求服务器删除Request-URI所标识的资源。

(7)TRACE:回显服务器收到的请求,主要用于测试或者诊断。

(8)CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

HTTP的框架与实现

QQ图片20230814212839.png

框架的主体主要是通过分层设计来构成的,可以去查找各个分层的代码,知道应该要如何去写。

总结

API设计:可理解性、简单性.. 

中间件设计:洋葱模型 

路由设计:前缀匹配树 

协议层设计:抽象出合适的接口 

网络层设计:网络模型

将各个分层的设计思路都总结出来