一篇文章了解HTTP

1.HTTP简介

2.HTTP的工作方式

3.HTTP报文详解

4.额外知识

HTTP简介

只要能上网就能接触到Http,超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。Http是一个客户端和服务端请求和应答的标准(TCP),是一种客户端、服务器应答式的的应用层传输协议,注意:服务器是不可能主动向客户端发送数据的。Http协议传输信息的基础:TCP/IP协议模型,TCP/IP体系结构从下往上共分为4层:依次是:网络接口层,网际层(IP),运输层(TCP,UDP),应用层,HTTP协议属于最高层的应用层。通俗来讲,Http就是计算机通过网络进行通信的规则,是基于请求和响应,无状态,应用层的协议,常基于TCP/IP协议传输数据,任何客户端之间进行通信都必须按照Http协议进行,否则无法进行连接。这个协议的功能是什么呢?我们得知Web服务器存放的是超文本信息,而客户端需要通过本协议传输所要访问的超文本信息,也就是客户端通过http协议来获得所要访问的信息。

HTTP的工作方式

那知道什么是http后,那它的工作方式是什么呢?

Http协议采用请求/响应的工作方式

其实从上图可以知道Http请求/响应的步骤一共分为4步:

1.客户端连接到服务器端

客户端首先跟服务器端建立一个TCP套接字连接

2.客户端发送HTTP请求

通过TCP连接,客户端向服务器端发送请求报文,请求报文由请求行、请求头部、空行和请求数据4部分组成

3.服务器接受请求并返回HTTP响应

服务器响应请求,定位请求的资源,然后将资源复本写到TCP中,由客户端去读取,一个响应报文由状态行、响应头部、空行和响应数据4部分组成

4.释放TCP连接

若连接模式是close,则服务器会主动关闭TCP连接,客户端就被被动关闭连接;若连接模式为keep-alive则该连接会保持一段时间。

根据上面的步骤就可以知道当我们从浏览器输入一个人URL后面后,按回车所经历的流程:

1.浏览器会向DNS服务器解析出该域名所对应的IP地址。

2.地址解析后,浏览器根据该地址和服务器端建立TCP连接。

3.浏览器发出读取资源文件的HTTP请求,将请求报文数据发给服务器。

4.服务器根据浏览器发出的请求做出回应,并且把浏览器所要请求的资源文本发送给浏览器。

5.释放TCP连接,浏览器显示所要请求的内容。

HTTP报文详解

从上面我们知道了Http的基本工作方式,下面来分析Http的报文,Http报文分为请求报文和响应报文。

HTTP请求报文

Http请求报文由请求行、请求头部、空行和请求数据4个部分组成,如下图:

请求行的组成

请求行游请求方法,请求地址(主机域名,资源路径等)和协议版本组成。

请求方法最常用就是GET、POST这两种方法另外据我所知还有:PUT,PATCH,DELETE,HEAD等。

这里简单说一下Get和Post方法:

Get的请求方式的请求参数直接拼接在URL后,格式是url?param1=XXX&param2=XXX....参数是暴露在地址栏中,并且URL的长度是受限制的。

Post的请求方式参数是封装在请求体中,传递的参数是不受限制的。

另外Get方法一般是请求资源,而Post一般是向指定资源去提交数据。

请求地址:扣杀统一资源定位符,就是要访问资源的路径,组成是:<协议>://<主机>:<端口>/<路径>,例子:http://www.absh.com/home,协议版本:HTTP1.1,主机地址是www.absh.com,请求路径是/home,端口有时可以省略。

协议版本:就是HTTP的版本号,一般有HTTP/1.0和HTTP/1.1

那么上面例子的请求行是:GET /home HTTP/1.1

请求头部的组成

请求头部就是为请求报文添加了一些信息,以键值对(名/值)的方式,作用是声明客户端、服务器报文的相关信息。下面列出一些通用的Header:

下面通过访问百度来看看请求头是怎么样的(用谷歌浏览器为例):

随便访问一个页面,打开网页调试(F12) 点击NetWork 随便点击一个资源就可看出,上图Headers就是请求头部。General是通用头部,Request Headers是请求报文。

注意:头部的最后会有空行,表示请求头部结束。

请求数据

如果以Get形式是没有请求数据的,其作用就是存放需要发送给服务器的数据信息;如果以Post请求有三种方式:数据交换,以键值对的形式,分部分形式。详细例子可以自行查询。

HTTP响应报文

Http响应报文同样由状态行,响应头部,空行和响应数据组成,如下图:

状态行的组成

由协议版本,状态码,状态码描述,协议版本和请求报文的协议版本是一致的,状态码是指服务器返回的响应状态码,状态码描述是描述状态的信息。

下面简单列举一下状态码:

响应头部

同理,响应头部的作用也是声明了客户端,服务器端报文的部分信息,也是用名/值的方式。下面列一下常用的响应头部:

具体可以从上面访问百度的图片Response Headers找到。

响应数据

响应数据就是返回给客户端所需要的数据信息,使用方式也跟请求报文中的请求数据方式一致,一样分为:键值对形式,任意类型的数据交换,分部分形式。

总结

请求报文分为请求行,请求头,请求数据。

响应报文分为状态行,响应头,响应体。

额外知识

Https协议:是以安全为目标的Http通道,就是在Http加入了SSL层,就是Http的安全版,作用是建立一条信息安全的通道保证数据传输的安全,另外就是确定网站的真实性。

Http和Https区别如以下几点:

1.http信息是明文传输,https是具有安全性的ssl加密传输协议

2.https协议需要到ca申请证书,http则不用

3.http和https用的是完全不同的连接方式,端口不一样,http是80,https是443

4.http访问的URL开头格式是http://而https访问的URL开头格式是https://

HTTPS的优点

1.https协议可认证客户端和服务器,确保将数据传输对应的服务器端和服务器端。

2.https协议是由ssl协议+http协议构建的可加密传输,身份认证的协议,比http协议安全。

HTTPS的缺点

1.https协议握手阶段所花费的时间比较长。

2.https连接缓存不如http高效,会对数据增加开销。

3.SSL证书通常需要绑定IP,不能同在一IP绑定多个域名。

4.加密范围有限,在黑客面攻击、拒绝服务攻击并不能特别有效的防御。

扫一扫 关注我的公众号 

这里不仅有code,还有你想要的一切

猜你喜欢

转载自blog.csdn.net/qq_33453910/article/details/82932124