道者编程

http协议

一:什么是HTTP协议:协议就是规范,约束一套规则标准,大家都按照这个规则执行。HTTP协议就是互联网请求、应答标准。默认端口:80,又叫超文本传输协议。HTTP协议属于最上层的应用层协议。


二:版本

1:HTTP1.0:第一个在通讯中指定版本号的HTTP 协议版本,至今仍在使用,1.0每次请求都要重新建立连接,请求后立即断开。

2:HTTP1.1:同一个tcp的连接中可以传送多个HTTP请求和响应. 多个请求和响应可以重叠,多个请求和响应可以同时进行. 更加多的请求头和响应头(比如HTTP1.0没有host的字段).

3:HTTP2:HTTP2对HTTP1.1进行了升级,主要改进了两个方面:多路复用和二进制传输。
多路复用是指在同一个连接上可以同时发送多个请求和响应,这样可以减少建立多个连接所带来的开销,提升Web页面加载的速度

这里好像有点语言模糊,1.1和2都可以多个请求,但是1.1同一时间只能传输一个请求和响应,HTTP2还引入了头部压缩(header compression)、服务器推送(server push)和流量控制(flow control)等特性,使得网络通信更加可靠和高效。

三:HTTP请求格式Request:

1:格式:请求行(request line)、请求头部(header)、空行和请求数据

(1)请求行:请求行包括三部分:请求方法,请求资源URI路径,HTTP版本号,其中以方法符合开头,空格分开。

GET /index.html HTTP/1.1

以上请求行:请求方法:GET;URI:/index.html; HTTP版本号:HTTP/1.1:

请求方法有:GET/POST/DELETE/PUT/HEAD

(2)请求头部:以下是谷歌浏览器抓取的http头

GET /data/month_1804/s_201804110913204054.jpg HTTP/1.1 (这是请求行)
Host: www.daozys.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Mobile Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Referer: http://www.daozys.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: UM_distinctid=1626aeda6a993d-0d19a82ae1c31d-454c062c-13c680-1626aeda6aa4df; PHPSESSID=i9qne93if789r83j1ri0b2fig4; CNZZDATA1259004491=2133941223-1522211535-%7C1524793814; jiathis_rdc=%7B%22http%3A//www.daozys.com/goods-1957-1.html%22%3A-81047332%2C%22http%3A//www.daozys.com/goods-2110.html%22%3A-76015654%2C%22http%3A//www.daozys.com/goods-2268.html%22%3A0%7C1524637434702%2C%22http%3A//www.daozys.com/goods-1990.html%22%3A%220%7C1524793871821%22%7D
 

3:请求头包括:

Host 请求的域名

Cache-Control 缓存信息

User-Agent 浏览器端浏览器型号和版本

Accept 可接受的内容类型,比如xml,html,json,图片等

Accept-Language 语言

Accept-Encoding 可接受的压缩类型 gzip,deflate

Accept-Charset 可接受的内容编码 UTF-8,* 

Connection: Keep-Alive 持久连接

等等信息,服务端从头信息能够判定客户端的一些信息,比如操作系统,浏览器版本,客户端IP等。


3:空行

4:请求数据(消息)略


四:HTTP响应格式Response::

1:格式:状态行、响应头、空行、消息体(响应正文)

(1):状态行:HTTP版本好,状态码,状态说明

HTTP/1.1 200 OK
 以上就是状态行,200:表示响应成功

(2):响应头,以下是谷歌抓取的响应头

HTTP/1.1 200 OK (这是状态行)
Date: Fri, 27 Apr 2018 02:18:06 GMT
Server: Apache
Last-Modified: Wed, 11 Apr 2018 01:13:25 GMT
Accept-Ranges: bytes
Content-Length: 9489
Connection: close
Content-Type: image/jpeg

(3):空行

(4):消息体(响应正文


以上响应的是<span style="font-family:Consolas, ";color:#222222;">text/css

 2:附HTTP响应状态码:

200 OK 表示从客户端发来的请求在服务器端被正常处理了。

400 Bad Request 该状态码表示请求报文中存在语法错误。当错误发生时,需要修改请求的内容后再次放松请求。

403 Forbidden 该状态码表明对请求资源的访问被服务器拒绝了。

404 Not Found 该状态码表明服务器上无法找到请求的资源,资源不存在。

503 Service Unavailable 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。


五:一次完整的web请求

1:域名解析

2:建立TCP连接(三次握手)

3:发起HTTP请求

4:响应HTTP请求

5:解析请求数据,并请求数据中的其他资源,比如同一个页面还有图片,js,css,等,HTTP1.1使用同一个通道请求,多个请求同时进行

6:渲染页面

7:释放TCP链接


最新评论:
1楼 广东省深圳市 电信 发表于 2018-05-23 17:53:13
66666666
共有 1 条记录  首页 上一页 下一页 尾页 1
我要评论:

看不清楚