HTTP概况
HTTP定义了Web客户向Web服务器请求页面的方式,以及服务器想客户端送Web页面的方式。HTTP是基于TCP/IP的应用层协议,是超文本传输协议。HTTP由两个程序实现:一个客户程序和一个服务器程序,客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话,默认使用80端口。
HTTP版本
HTTP发展到现在已经有很多版本,主要分为以下三个:
- 1.0版本: HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,而每次新建TCP连接,因为是三次握手,所以效率很低,并且服务器不跟踪每个客户也不记录过去的请求。正式因为这种特性造成了一些性能上的缺陷。
这是1.0版本的请求,必须要在请求后加上版本号
GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*
另外,回应时关于字符的编码,1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式,例如:text/plain。
- 1.1版本 1.1 版的最大变化,就是引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明,这也是至今用的最多的版本。而且1.1版本新出了PUT、DELET等方法。不过虽然1.1版允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完前一个回应,才会进行下一个回应。
- 2版本 HTTP/2 是一个彻底的二进制协议,二进制协议的一个优点是,可以定义额外的帧,为用二进制解析打下基础。相比于1.1版本,2.0版本在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,避免堵塞。
另外这里贴出HTTP发送请求和接收的格式,
消息请求
消息接收