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的框架与实现
框架的主体主要是通过分层设计来构成的,可以去查找各个分层的代码,知道应该要如何去写。
总结
API设计:可理解性、简单性..
中间件设计:洋葱模型
路由设计:前缀匹配树
协议层设计:抽象出合适的接口
网络层设计:网络模型
将各个分层的设计思路都总结出来