一,概念
协议是指计算机通讯网络中两台计算机之间进行通信所必须共同遵守的规定或者规则,超文本传输协议(HTTP)是一种通讯协议,它允许超文本标记语言(HTML)文档从web服务器传送到客户端的浏览器
HTTP协议,即超文本传输协议。是一种详细规定了浏览器和万维网服务器之间相互通讯的规则,通过因特网传送万维网文档的数据传送协议。
HTTP协议是用于从www服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速的传输超文本文档,还确定传输文档中的那一部分,以及哪部分内容首先显示等。
HTTP是一个应用层的协议,有请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态协议。
HTTP的默认端口是80,HTTPS的端口号为443
二,特点
HTTP协议永远都是由客户端发起的,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议的主要特点可以概括如下:
1.支持客户/服务器模式。支持基本认和安全认证。
2.简单快速:客户向服务器发送请求的时候,只需传送请求方式和路径。请求方式常用的是GET,POST,HEAD。每种方法规定了客户与服务器联系的类型不同。由于HTTP的协议简单,使得HTTP服务器的程序规模小,因此通讯速度很快。
3.灵活:Http允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。
4.HTTP0.9和1.0都使用非持续连接:限制每次链接只能处理一个请求,服务器处理完客户的请求,并受到客户的应答后,即断开连接。HTTP1.1使用持续连接;不必为每一个web对象创建一个连接,一个连接可以传送多个对象,采用这种传输方法可以节约时间。
5.无状态:HTTP协议是无状态协议,是指对事物的处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次的连接传送的数据量增大.
无状态协议:
协议的状态是指下一次传输可以"记住"这次传输信息的能力.
HTTP是不会为下一次连接而维护这次连接所传输的信息,为了保证服务器的内存.
比如客户获得了一个网页后关闭浏览器,然后再一次启动浏览器,登陆该网站,但是服务器并不知道客户关闭了一次浏览器.
由于web服务器要面对很多浏览器的并发访问,为了提高web服务器对并发访问的处理能力,再在设计HTTP协议时规定Web服务器发送HTTP应答报文和文档时,不保存发出请求的Web浏览器进程的任何状态信息.这有可能出现一个浏览器在短时间内两次访问同一个对象,服务器进程不会因为已经给它发过一个应答报文而不接受第二次服务请求.因为Web服务器不保存发送请求的Web浏览器进程的任何信息,因此HTTP协议属于无状态协议.
HTTP协议是无状态和Connection:keep-alive区别:
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态.从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。
HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP连接(无连接)
从HTTP1.1起,默认都开启keep-Alive,保持连接特性,简单的说当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭.如果客户端再次访问这个服务器上的网页,会使用这一条已经建立的连接
三.工作流程
一次HTTP操作称为一个事务,其工作过程可以分为四步:
1)首先客户机与服务器建立连接,只要单机某个超级链接,HTTP的工作开始.
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL),协议版本号,后面是MIME信息包括请求修饰符,客户机信息等。
3)服务器接收到请求后,给予相应的响应信息,其格式一个状态行:包括协议的信息版本,一个成功或者错误的代码后边是MIME信息包括服务器信息,实体信息等。
4)客户端收到服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
四.HTTP的状态响应码
1**(信息类):表示接收到请求并且继续处理
100---客户必须继续发送请求
101---客户要求服务器根据请求转换HTTP协议版本
2**(响应成功):表示动作被成功接收,理解和接受
200---表明该请求被成功的完成,所有请求的资源发送回客户端
201---提示知道新文件的URL
202---接受和处理,但处理未完成。
3**(重定向):为了完成指定的动作,必须接受进一步的处理。
300---请求资源可以在多出获得。
301---本网页被永久性转移到另一个URL
4**(客户端错误信息):请求包含错误的语法或不正确的执行。
400---客户端请求有语法错误,不能被服务器所理解。
403---禁止访问,服务器收到请求,但是拒绝提供访问
404---表明可连接到服务器,但是服务器无法取得所请求的网页,请求资源不存在:eg:输入了错误的URL
5**(服务器错误类):服务器不能正确的执行一个正确的请求
500--- 服务器遇到错误,无法完成请求。
502---网关错误
503---由于超载或停机维护,服务器目前无法使用,一段时间后可能回复正常。
五.常用的请求方式:
GET:请求获得资源
POST:请求附加新的数据
PUT:请求服务器存储一个资源
六.HTTP和HTTPS协议的区别:
A: HTTPS协议需要申请ca证书,一般免费证书很少,需要缴费:
B:HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的 SSL加密传输协议。
C:HTTP和HTTPS使用完全不同的连接方式,用的端口号不同:(80,443);
D:HTTP协议的连接是很简单的,是无状态的;
参考博客连接:https://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html