1. HTTP协议简介
HTTP协议,俗称超文本传输协议,是一种用于分布式、协作式的超媒体信息系统的应用层协议,是万维网的数据通信的基础。目前存在着HTTP1.0、HTTP1.1和HTTP2.0。
HTTP1.0的特点:
1. 一次TCP连接只能处理一个请求,响应结束,连接立即关闭,长连接需要手动设置keep-alive参数来建立;
2. 不支持发送header信息,造成浪费带宽的现象,并且不支持断点续传功能;
3. 不存在host域,在1.0中认为每台服务器都绑定一个唯一的IP地址。
3. 判断缓存的标准只有if-Modified-Since和Expires,太单一。
HTTP1.1的特点:
1. 支持长连接,默认开启keep-alive,即连接不会立即断开,而是在指定的时间内没有请求或响应时才会断开,一个TCP连接可以传送多个HTTP请求和响应。
2. 支持发送header信息,如果服务器确认客户端有权限请求,则开始发送body体,否则不需要发送body,一定程度上节约了带宽。
3. 存在host域,即服务器上可以存在多个虚拟主机,他们共享一个IP地址,客户端请求的时候必须带上host域。
4. 缓存处理标准更多,1.1引入Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
5. 新增了24个错误状态响应码,更加利于错误通知的管理。
HTTP2.0的特点:
1. 多路复用,可以在同一个TCP连接并发处理多个请求,相比1.1创建多TCP来处理并发请求的方法,节约了创建TCP连接的成本开销;
2. 头部数据压缩,2.0使用HPACK算法对header的数据进行压缩,数据体积小,传输速度更快;
3. 服务器推送资源,在1.1中只有客户端发送请求,服务器才会进行响应,不存在服务器没有收到请求而去自动发送响应,这种机制有时候会造成很大的延迟,2.0引入server push,它允许服务器在浏览器请求之前推送资源给浏览器,这样客户端就可以直接从本地加载资源,更加快速。
2. HTTP协议概述
HTTP是客户端到服务端请求和响应的标准。客户端通过使用浏览器、网络爬虫或者其他工具,向服务器发起一个HTTP请求(请求报文中包括请求的方法、URL、版本协议、请求头部和请求数据),然后TCP进行三次握手来创建连接,服务器监听到客户端发送过来的请求,给客户端返回一个响应(响应中包括协议版本、响应状态、服务器信息、响应头部和响应数据)。
3. HTTP的工作原理
1. 浏览器通过URL域名向服务器发送一个请求,请求中包含请求行、请求头部、空行和请求数据四个部分;
2. 在应用层中首先通过DNS协议解析域名,获取对应的IP地址;
3. 解析出IP地址后,根据IP和服务器默认端口号80,由传输层的TCP协议向服务器发出三次握手,建立连接;
4. 服务器监听到浏览器的请求后,做出响应,并发请求的资源发送给浏览器;
5. 响应结束,释放TCP连接;
6. 浏览器接收数据并进行相应操作。
4. HTTP的特点:
1. 无状态保存
HTTP是一种不保存状态,即无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。即每一次连接都是新的,和上一次连接没有任何关联。因为请求—响应机制,没发生一次请求,就伴随着一次响应,为了更大效率的处理大量事务(一次HTTP请求过程称为事务),HTTP协议本身不保留之前一切的请求或响应报文的信息。但是随着互联网业务不断发展,很多场景需要保存浏览器的状态,HTTP1.1于是引入了Cookie技术,浏览器可以通过Cookie来管理状态,但是它还是属于无状态协议。
2. 无连接
无连接的含义是每次连接只能处理一个请求,服务收到请求并做出响应后,连接自动断开。这种方式的好处是每次完成请求后,服务器和客户端的连接就断开了,可以提高并发性能。无连接分为两种方式:一种是1.0版本时候的服务器响应请求之后,连接就直接断开了;另一种是1.1版本他们之间的连接并不是直接断开,而是等个几秒钟,在这时间内,如果客户端有后续的请求,则在原来的连接通道继续来收发消息,如果客户端没有发送新的请求,则连接断开,这样的好处是减少了短时间内建立连接的次数,提高了效率,因为TCP建立连接也是需要耗时的。
标签:协议,HTTP,请求,响应,详解,服务器,连接,客户端 From: https://www.cnblogs.com/chf333/p/16834471.html