http协议详解

HTTP协议:超文本链接协议,是一种互联网中应用最广泛的网络协议。

一、http的协议特点可以分为一下几种:

1.支持c/s模式

2.传输内容灵活,可以支持所有传输内容类型。

3.无状态协议,服务器不保存客户端的连接状态,节省了服务器的工作负担。

HTTP是一种基于客户端/服务器模式的应用层协议,通常客户端使用的是浏览器,在浏览器上方输入一个url即可访问目标服务器的url,url的具体结构如下。

http://[host]:[port]/[abs]

一个url包含了使用的协议类型http/https、目标主机的域名或者ip地址、访问目标服务器应用运行的端口(在缺省情况下默认是80),以及访问目标服务器的相对路径,如果没有则必须用/的形式给出。

我们在浏览器输入一个www.baidu.com的时候,浏览器会自动帮我们将其填充为https://www.baidu.com/。

输入完url之后,浏览器会向目标服务器发送链接请求,这个链接一般是基于tcp/ip协议簇的,但是http并没有规定一定要使用tcp/ip协议,只是假定要运行在可靠的链接协议之上,所以使用其他协议或者网络调用http协议也是可行的。

二、HTTP请求:

http的请求头可以分为三个部分:请求行,请求报头,请求正文。

1.请求行以请求方法开头,之后接着请求的url,最后是使用的协议类型(HTTP1.0/HTTP1.1/HTTP2.0)

例:GET https://www.baidu.com/ HTTP2.0

2.请求报头

常见请求头:

referer:表示是从哪个url跳转过来的,通常可以使用防御csrf攻击,但可以被篡改。

accept:告诉服务器可以接受的相应数据类型,专业术语为MIME类型。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

text/html,html文件

text/css,css文件

text/javascript,js文件

image/*,所有图片文件

cookie:客户端携带的cookie信息。

User-Agent:浏览器通知服务器,客户端浏览器与操作系统相关信息

Connection:表示客户端与服务连接类型;Keep-Alive表示持久连接,close已关闭

host:请求的主机名

content-length:请求体的长度

Cache-Control:指定请求和响应遵循的缓存机制

三、HTTP响应

http的响应也是由三个部分组成的:状态行,消息报头,响应正文。

1.状态行形式由http协议类型(HTTP1.0/HTTP1.1/HTTP2.0),响应码,状态码的文本描述组成。

例:HTTP2.0 200 OK

状态码由三个数字组成,第一个数字代表了响应的类别,且有五种可能的取值:

1xx:指示信息,表示请求已经接受,继续处理

2xx:成功,表示请求已经被成功接收处理

3xx:重定向,要完成此请求必须完成重定向操作

4xx:客户端错误,请求有语法错误或者无法达到

5xx:服务器错误,服务器未能实现会话

状态码的文本描述分为:

200 OK

400 BAD REQUEST

401 Unauthorized

403 Forbidden

404 Not Found

500 Internet Server Error

503 Server Unavailable

2.消息报头

 

Location:指定相应的路径,需要配合302进行重定向。

Set-cookie:向客户端写入cookie信息。

Server:指定的是服务器的容器。apache nginx

 

四、HTTP请求详细过程

当我们在浏览器输入一个地址WWW.QQ.COM到网页回显到我们的浏览器上,一般经过一下几个步骤

1.dnslookup,根据我们在浏览器输入的域名,我们会根据dns协议去寻找对应的ip地址,来访问目标主机

2.客户端与服务器建立tcp链接,三次握手:syn,synack,ack

3.客户端封装请求报文

4.客户端发送请求报文

5.服务器接收请求报文并解析

6.WSGI数据解析,将『请求报文』封装城HtttpRequest对象:WSGI Web Server Gateway Interface 服务器网关接口

7.WSGI 进行协议解析,将HttpResponse对象封装成『响应报文』

8.HTTP Server将『响应报文』发送给客户端

9.关闭tcp链接,四次握手fin,ack,fin,ack(如果connection:keep-alive则不关闭tcp链接)

10.客户端接受『响应报文』

11.解析报文渲染成网页。

 

posted @ 2020-03-23 22:28  web黄金矿工  阅读(328)  评论(0编辑  收藏  举报
Live2D