HTTP协议简介
http:超文本传输协议,是一种网络协议,基于tcp
浏览请向服务器发送的请求格式如下(可以用网络调试工具做tcp服务器,并用浏览器进行访问查看):
GET / HTTP/1.1 #第一个/后面的东西表示浏览器请求的页面,如果仅有一个斜杠,则表明浏览器请求访问的是一个主页。除GET外,还有PUSH,POST等
Host: 127.0.0.1:8080 #服务器的ip:port
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0 #客户端浏览器的版本,被服务器端用于反爬虫
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 #浏览器可以接收什么样的格式
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 #浏览器能够接收的语言
Accept-Encoding: gzip, deflate #浏览器可以接收的压缩格式
Connection: keep-alive #表示长链接
Upgrade-Insecure-Requests: 1
服务器给浏览器回送的数据格式示例(头)如下:
HTTP/2.0 200 OK #还可以返回 404 NOT FOUND
server: openresty
date: Wed, 10 Jul 2019 14:52:44 GMT
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
set-cookie: TINGYUN_DATA=%7B%22id%22%3A%22-sf2Cni530g%23HL5wvli0FZI%22%2C%22n%22%3A%22WebAction%2FCI%2Fmdeditor%252Findex%22%2C%22tid%22%3A%22baa1f8eaceb0e8%22%2C%22q%22%3A0%2C%22a%22%3A61%7D #如果访问网站,网站的服务器就会检测浏览器请求的时候是否有这个值,如果没有,服务器就会在回应的里面有这句话。然后浏览器就会在本地将TINGYUN作为变量名,等号后面的作为数据值进行存储。然后后面只要是访问相同域名时的任何网站时,就会将该值进行提交
content-encoding: gzip
allow: GET, POST, PUT, DELETE, HEAD
X-Firefox-Spdy: h2
头是连续的,头之后为body,之间有一个空的行进行分隔
注意:在服务器返回给浏览器的状态码中,2xx的一般是成功,3xx表示重定向(比如:访问神马搜索:如果输入www.yisou.com,会重定向到www.m.sm.cn),4xx表示浏览器请求的资源没有,5xx表示服务器挂了
可以用网络调试助手进行调试,调试助手当tcp服务器,浏览器对其进行访问。然后在调试助手上回复如下内容:
HTTP /1.1 200 OK
<h1>This is body</h1>
长短连接
短连接的操作步骤
建立连接(三次握手)——数据传输——关闭连接……建立连接——传输数据——关闭连接(四次挥手)
长连接的操作步骤
建立连接(三次握手)——数据传输……(保持连接)……数据传输——关闭连接(四次挥手)
个人理解:所谓长短,即连接时间的长短,如果只为了一次传输,连接的时间短,所以称为短连接;如果是为了多次数据传输,连接的时间长,所以称之为长连接
http1.0规定的是短连接,http1.1规定的是长连接