一、概述1、什么是HTTPHTTP是一种可以获取HTML等网络资源的通信协议协议。它是WEB上进行数据交换的基础,是一种客户-服务器协议。HTTP是一种可扩展的应用层协议,通过TCP或TLS加密的TCP连接发送。2、基于HTTP的组件系统HTTP是一种客户端-服务器协议:请求是通过一个实体发送的,这个实体就是用户代理(多指浏览器,或者是爬取网页生成和维护机器索引的机器爬虫)作为如图:client--->proxy---->protoxy--->server client<---proxy<---protoxy<---server当用户发起服务器请求时,它将被服务器处理并返回一条消息---实际上是响应。在浏览器和处理请求的服务器之间,存在路由器和调制解调器。因为web开发是基于web的分层设计的。隐藏了网络层和传输层的那些细节。HTTP位于最上面的应用层。虽然底层很重要,但是对于前端来说,底层大部分和HTTP无关。3.Client:user-agent是一个可以为用户发起动作的工具。浏览器始终是发出请求的实体,而不是服务器。浏览器显示一个网页,首先会发送请求获取该页面的HTML文档,然后解析文档中的资源信息发送其他请求获取可执行的脚本或者用于页面布局渲染的CSS样式,以及一些其他页面资源(如图片)和视频等)。然后,浏览器将这些资源整合在一起,呈现出一个完整的文档,即网页。浏览器执行的脚本可以在稍后阶段获取更多资源并相应地更新网页。 浏览器负责发送HTTP请求,并进一步解析HTTP返回的信息,为用户提供明确的响应。4.Web服务器 在客户端通信过程的另一端,有一个WebServer来服务并提供客户端请求的文件。5.代理(Proxies) 在浏览器和服务器之间,很多设备转发HTTP消息。由于Web栈的层次结构,它们大多出现在传输层、网络层和物理层。对于HTTP应用来说,在层上是透明的,有一部分表现在应用层上,称为Proxies。代理可以是透明的或不透明的(“更改请求”不会通过它们)。 代理的作用:缓存、过滤、家长控制、负载均衡、认证、日志记录II.HTTP HTTP的基本性质是简单的、可扩展的、无状态的和可会话的以及连接的。 注:在互联网中,最常用的传输层协议:TCP可靠,UDP不可靠。所以HTTP依赖于面向连接的TCP进行消息传递,但连接并不是必需的。 HTTP/1.0为每个请求/响应打开一个TCP连接,这导致了2个缺点:打开一个TCP连接需要多次往返消息传输,所以速度慢。如果定期发送多条消息,这会变得更有效率:热连接比冷连接更有效。 HTTP/1.1引入了流水线和持久连接:底层的TCP连接可以通过Connection头来控制。HTTP/2.0通过在连接中多路复用消息使此链接始终为热连接。3.HTTP特性缓存:服务器告诉代理和客户端需要缓存哪些文档以及缓存多长时间,客户端也可以命令中间缓存代理忽略存储的文档。 开放同源限制:为了防止网络窃听等隐私泄露,浏览器对网站进行分段限制。只有相同来源的网页才能获取本站的所有信息。 Authentication:Basicauthentication可以直接通过HTTPProvide,使用与Authenticate相同的header,或者使用HTTPCookies设置指定的对话 proxy和tunnel:通常server/client在内部网络,并且外网隐藏了自己的真实IP,所以HTTP请求是通过代理来穿越这个网络屏障的,但并不是所有的代理都是HTTP代理。 会话:使用HTTPCookies允许您发起具有服务器端状态的请求,创建会话。3.HTTP流---客户端与服务器交互过程中打开一个TCP连接--->发送HTTP报文--->读取服务器返回的报文信息--->关闭连接或提供后续RequestreuseconnectionHTTPpipeline已经被HTTP/2frame代替4.HTTPmessage 1.HTTP报文有两种:请求和响应请求: 响应:HTTP/1.0和HTTP/1.1的区别1、支持虚拟主机技术,多个域名网站共存于一台WEB服务器上;2.支持持久连接:三次握手,四次挥手。客户端和服务器之间的连接需要保持一段时间。Conection:Keep-alive3,支持代理连接4,HTTP1.1还提供了与认证、状态管理、Cache缓存等机制相关的请求头和响应头。用户在浏览器中输入www.baidu.com和看到该页面之间发生了什么?①操作系统访问DNS服务器,将域名转换为IP地址②浏览器发起HTTP请求③找到指定资源,可能会访问数据库,构建并返回HTTP响应报文④浏览器接收并解析报文⑤浏览器缓存接收到的响应内容,解析并渲染相应的内容
