HTTP学习记录:一、协议基础
学习资源主要为:@小坦克HTTP相关博客
1、HTTP简介:
HTTP协议是Hyper Text Transfer Portocol(超文本传输协议)的缩写,它是一种通信协议,允许将超文本(即:html文档)从Web服务器传输到本地浏览器的传输协议。
目前我们使用的是HTTP/1.1版本。
2、HTTP工作原理
HTTP协议工作于客户端-服务端架构。浏览器作为HTTP的客户端,通过URL向HTTP服务端发送请求,HTTP服务端在接到请求后,向客户端发送响应信息。
(在HTTP请求的客户端与服务器之间,有可能还存在“代理服务器”,客户端在请求时,先将请求发送到打理服务器,然后代理服务器请求服务器再进行返回。一般代理服务器都具有缓存的功能,这样可以提高访问速度。)
3、URL说明
因客户端请求是通过URL的,所以针对URL进行简单的说明:
URL是Uniform Resource Locator(统一资源定位符)的缩写,用于描述一个网络上的资源。
基本格式为:
schema://host[:port]/path/.../[?query-string][#anchor]
schema:指定使用的协议;
host:是指服务端的IP地址/域名;
port:端口,一般默认使用80端口,可以不写,如果使用的是其他接口,就需要带端口号。
path:是指请求的路径;
query-string:请求传递的参数;
anchor:锚;
4、消息结构
(1、请求消息
request消息分为3部分:请求行、请求头和请求体。在请求头和请求体之间会有一个空行。
请求行中,主要显示:请求方法、请求资源路径和协议版本号;
(2、响应消息
response消息和request消息结构基本一致,包括响应行、响应头和响应体。
5、http的无状态与connect:keep-alive
无状态是指协议对于处理事务没有记忆能力,服务器不知道客户端是什么状态。
从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间