HTTP 协议入门
2016-08-25 23:30
429 查看
更多内容: http://blog.yuhai.win
1、 HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包的传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
2、 HTTP/1.0 请求的例子
第一行是请求命令,必须在尾部添加协议版本(HTTP/1.0)。后面是多行头信息,描述客户端情况。
3、HTTP/1.0 回应格式
a、回应的格式是 头信息 + 一个空行(\r\n) + 数据
b、第一行是 协议版本 + 状态码 + 状态描述
4、 HTTP/1.0 的缺点
a、HTTP/1.0 版主要的缺点是,每个TCP连接只能发送一次请求,连接就关闭了,如果需要请求其他资源,就必须新键一个连接。
b、 TCP 需要与服务器进行三次握手,并且开始时发送速率较慢。所以性能较差。
c、HTTP/1.0 解决办法: 有些浏览器,用了一个非标准的Connection字段。请求时发送 Connection: keep-alive 要求服务器不关闭TCP 连接,以便其他请求复用。服务器响应的时候 也发送Connection: keep-alive,这样就建立了可复用的TCP连接,知道客户端后服务器端主动关闭连接。
5、HTTP/1.1 持久连接
a、HTTP/1.1 中引用持久连接,默认不关闭TCP连接,可以被多个请求复用,不需要申明 Connection: keep-alive
b、当客户端或服务器端发现对方一段时间没有活动,就主动关闭连接。(不规范)
c、客户端在最后一个请求时发送 Connection: close 明确要求服务器关闭TCP 连接。
d、同一个域名,大多浏览器允许同时建立6个持久连接
6、 HTTP/1.1 管道机制
在同一个TCP连接里面,客户端可以同时发送多个请求
7、 Content-Length 字段,申明背刺回应数据长度
a、 在 HTTP/1.0 中 Content-Length 不是必须的,因为浏览器发现服务器关闭TCP 连接,就表明收到的数据包已经全了
b、在HTTP/1.1 中可以不使用 Content-Length ,而使用分块传输编码。只要请求或者回应的头信息有 Transfer-Encoding 字段,就表明回应将有数量未定的数据块组成。
8、HTTP/1.1 的缺点
HTTP/1.1 允许复用TCP连接,但是同一个TCP连接里面,所有的通信都是按次序进行的,服务器只有处理玩一个回应,才会进行下个回应,如果前面的回应特别慢,后面就会有很多请求排队等着,这就叫做“队头赌塞”;
9、HTTP/2
a、 2015年 HTTP/2发布,因为不在继续发布子版本,所以不叫 HTTP/2.0
b、 二进制协议。
HTTP/1.1 版本的头信息肯定是文本(ASCII编码),数据可以是文本,也可以是二进制。 HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为帧(frame):头信息帧和数据帧
c、HTTP/2 复用TCP 连接,在一个连接里,客户端和浏览器都可以同时发送多个请求和回应,而且不用按照顺序一一对应,这就可以避免“对头堵塞”。这样双向的、实时的通信,就叫做多工。
d、 HTTP/2 数据流
HTTP/2 将每个请求或回应的所有数据包,称为一个数据流。每个数据流都有独一无二的编码。数据包发送的时候都必须标记数据流ID,用来区分他属于那个数据流。另外还规定,客户端发出的数据流,ID 一律为奇数,服务器发出的,ID 为偶数。
参考地址: 1、http://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651551170&idx=1&sn=03cf3211a4f0f1cede3e482f48f934d0&scene=0#rd 2、http://www.ruanyifeng.com/blog/2016/08/http.html
1、 HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包的传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
2、 HTTP/1.0 请求的例子
GET / HTTP/1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) Accept: */*
第一行是请求命令,必须在尾部添加协议版本(HTTP/1.0)。后面是多行头信息,描述客户端情况。
3、HTTP/1.0 回应格式
HTTP/1.0 200 OK Content-Type: text/plain Content-Length: 137582 Expires: Thu, 05 Dec 1997 16:00:00 GMT Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: Apache 0.84 <html> <body>Hello World</body> </html>
a、回应的格式是 头信息 + 一个空行(\r\n) + 数据
b、第一行是 协议版本 + 状态码 + 状态描述
4、 HTTP/1.0 的缺点
a、HTTP/1.0 版主要的缺点是,每个TCP连接只能发送一次请求,连接就关闭了,如果需要请求其他资源,就必须新键一个连接。
b、 TCP 需要与服务器进行三次握手,并且开始时发送速率较慢。所以性能较差。
c、HTTP/1.0 解决办法: 有些浏览器,用了一个非标准的Connection字段。请求时发送 Connection: keep-alive 要求服务器不关闭TCP 连接,以便其他请求复用。服务器响应的时候 也发送Connection: keep-alive,这样就建立了可复用的TCP连接,知道客户端后服务器端主动关闭连接。
5、HTTP/1.1 持久连接
a、HTTP/1.1 中引用持久连接,默认不关闭TCP连接,可以被多个请求复用,不需要申明 Connection: keep-alive
b、当客户端或服务器端发现对方一段时间没有活动,就主动关闭连接。(不规范)
c、客户端在最后一个请求时发送 Connection: close 明确要求服务器关闭TCP 连接。
d、同一个域名,大多浏览器允许同时建立6个持久连接
6、 HTTP/1.1 管道机制
在同一个TCP连接里面,客户端可以同时发送多个请求
7、 Content-Length 字段,申明背刺回应数据长度
a、 在 HTTP/1.0 中 Content-Length 不是必须的,因为浏览器发现服务器关闭TCP 连接,就表明收到的数据包已经全了
b、在HTTP/1.1 中可以不使用 Content-Length ,而使用分块传输编码。只要请求或者回应的头信息有 Transfer-Encoding 字段,就表明回应将有数量未定的数据块组成。
8、HTTP/1.1 的缺点
HTTP/1.1 允许复用TCP连接,但是同一个TCP连接里面,所有的通信都是按次序进行的,服务器只有处理玩一个回应,才会进行下个回应,如果前面的回应特别慢,后面就会有很多请求排队等着,这就叫做“队头赌塞”;
9、HTTP/2
a、 2015年 HTTP/2发布,因为不在继续发布子版本,所以不叫 HTTP/2.0
b、 二进制协议。
HTTP/1.1 版本的头信息肯定是文本(ASCII编码),数据可以是文本,也可以是二进制。 HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为帧(frame):头信息帧和数据帧
c、HTTP/2 复用TCP 连接,在一个连接里,客户端和浏览器都可以同时发送多个请求和回应,而且不用按照顺序一一对应,这就可以避免“对头堵塞”。这样双向的、实时的通信,就叫做多工。
d、 HTTP/2 数据流
HTTP/2 将每个请求或回应的所有数据包,称为一个数据流。每个数据流都有独一无二的编码。数据包发送的时候都必须标记数据流ID,用来区分他属于那个数据流。另外还规定,客户端发出的数据流,ID 一律为奇数,服务器发出的,ID 为偶数。
相关文章推荐
- Ajax快速入门之http协议基础
- 新手入门:了解WWW服务与HTTP协议6
- HTTP协议入门
- HTTP协议入门——1.1版本
- Servlet之Http协议【入门版,初学者必看】
- 了解WWW服务与HTTP协议 【入门与应用】
- HTTP 协议入门
- 黑马第六天之web开发入门和HTTP协议
- HTTP协议 Servlet入门 Servlet工作原理和生命周期 Servlet细节 ServletConfig对象
- HTTP协议从入门到大牛,初识HTTP协议(学习笔记)
- 新手入门:了解WWW服务与HTTP协议5
- 网络基础与协议入门——(1)HTTP协议重点
- Ajax快速入门之http协议基础
- 再温http协议,入门手册。
- javaweb入门(4)-- 详细了解http协议2
- AJAX快速入门之HTTP协议基础
- 新手入门:了解WWW服务与HTTP协议
- 网络基础与协议入门——(1)HTTP协议重点
- javaweb-day04-6&7(javaWeb开发入门 - HTTP协议2)
- HTTP 协议入门