网络与协议--HTTP协议

HTTP协议

概念

特点

工作流程

请求方式

HTTP详细格式

HTTP协议版本

B/S网络架构的核心是HTTP协议,HTTP协议,即超文本传输协议(Hypertext Transfer Protocol),是一种详细规定了浏览器和万维网(WWW)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

概念

HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更高效,使网络传输减少。HTTP协议永远都是客户端发起请求,服务器回送响应。

特点

支持客户/服务器模式:HTTP协议采用客户端-服务器模式进行通信。
简单快速:酷虎向服务器请求服务时,只需传送请求方法和路径。请求方法常用的由GET、HEAD、POST。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Contrnt-Type加以标记。
无连接:HTTP/1.0使用非连续连接,限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP/1.1使用持续连接,不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。从HTTP/1.0起,默认都开启了Keep-Alive,保持连接特性。
无状态:HTTP协议是无状态协议,即协议对于事物处理没有记忆能力。缺少状态以为着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

工作流程

一次HTTP操作称为一个事务。
建立连接:客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
发送请求:建立连接后,客户机发送一个请求服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
给予响应:服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后面是MIME信息包括服务器信息、实体信息和可能的额内容。
返回信息:客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

请求方式

HTTP/1.1协议中共定义了八种方法(也叫“动作”)来表明对Request-URI指定的资源的不同操作方式,最常用的是GET和POST方法。

GET:请求获取Request-URI所标识的资源。
POST:在Request-URI所标识的资源后附加新的数据。
HEAD:请求获取由Request-URI所标识的资源的响应消息报头。
PUT:向指定资源位置上传其最新内容。
DELETE:请求服务器删除Request-URI所标识的资源。
TRACE:回显服务器收到的请求,主要用于测试或诊断。
CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS:允许客户端查看服务器的通信选项。

HTTP详细格式

请求方式:

常见请求方式 Request Method
请求响应报文格式:
请求报文(以POST为例)
响应报文
响应状态码:
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。所有HTTP响应的状态代码主要分为五类,具体如下:

1xx(信息性状态码):表示接收的请求正在处理。
100(Continue):客户端应继续其请求。
101(Switching Protocols):服务器根据客户端的请求切换协议。
2xx(成功状态码):表示请求已成功被服务器接收、理解、接受。
200(OK):请求成功。
201(Created):请求已经被实现,而且有一个新的资源已经创建。
202(Accepted):服务器已接受请求,但尚未处理。
203(Non-Authoritative Information):服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合上。
204(No Content):服务器成功处理了请求,但没有返回任何内容。
205(Reset Content):服务器成功处理了请求,且没有返回任何内容,但要求清除之前的视图(例如清除表单内容以便用户重新输入)。
206(Partial Content):服务器已经成功处理了部分GET请求。
3xx(重定向状态码):表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。
300(Multiple Choices):被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的表单用于访问那个回馈信息。
301(Moved Permanently):请求的资源已永久移动到新位置,且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。
302(Found):请求的资源现在临时从不同的URI响应请求。
303(See Other):服务器返回此响应(对GET或HEAD请求的响应)时,会返回一个头部信息Location,用以指示请求的资源现今临时从不同的URI响应请求。
304(Not Modified):如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。
305(Use Proxy):被请求的资源必须通过指定的代理才能被访问。
307(Temporary Redirect):请求的资源临时从不同的URI响应请求。
4xx(客户端错误状态码):表示请求包含语法错误或无法完成请求。
400(Bad Request):服务器无法理解请求的格式,客户端不应该重复发送这个请求。
401(Unauthorized):请求未授权。
402(Payment Required):此响应码保留以便将来使用。
403(Forbidden):服务器理解请求客户端的请求,但是拒绝执行此请求。
404(Not Found):服务器无法根据客户端的请求找到资源(网页)。
405(Method Not Allowed):客户端请求中的方法被禁止。
406(Not Acceptable):服务器无法根据客户端请求的内容特性完成请求。
407(Proxy Authentication Required):请求要求代理的身份验证,且代理服务器不支持该请求所携带的身份验证方法。
408(Request Timeout):客户端没有在服务器预备等待的时间内完成一个请求的发送。
409(Conflict):由于和被请求的资源的当前状态相冲突,请求无法完成。
410(Gone):被请求的资源已不在服务器上,且没有任何已知的转发地址。
411(Length Required):服务器无法处理请求,除非客户端发送一个Content-Length头。
412(Precondition Failed):请求头中的条件被服务器评估为失败。
413(Request Entity Too Large):服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414(Request-URI Too Long):请求的URI(通常是URL)过长,服务器无法处理。
415(Unsupported Media Type):请求的格式不被请求方法所支持。
416(Requested Range Not Satisfiable):如果服务器无法满足请求中的范围请求,则使用此状态码。
417(Expectation Failed):在请求头Expect中指定的预期内容无法被服务器满足。
5xx(服务器错误状态码):表示服务器在处理请求的过程中发生了错误。
500(Internal Server Error):服务器内部错误,无法完成请求。
501(Not Implemented):服务器不支持请求的功能,无法完成请求。
502(Bad Gateway):作为网关或代理工作的服务器从上游服务器收到无效响应。
503(Service Unavailable):服务器目前无法使用(由于超载或停机维护)。
504(Gateway Timeout):作为网关或代理工作的服务器未及时从上游服务器收到请求。
505(HTTP Version Not Supported):服务器不支持请求中所用的HTTP协议版本。
响应状态码
头字段:HTTP Header控制着互联网上成千上万的用户数据的传输,最关键的是控制着用户浏览器的渲染行为和服务器的执行逻辑。
例如,当服务器没有用户请求的数据时就会返回一个404的状态码,告诉浏览器没有请求的数据,通常浏览器就会展示一个非常不愿意看到的该页面不存在的错误信息。
常见请求头和响应头:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

请求头和响应头,一般的浏览器进入开发者工具,监听网络都能看到。
在这里插入图片描述

在这里插入图片描述

HTTP协议版本

HTTP协议从最初的HTTP/0.9版本,经历了多次的改进和升级,发展到了现在的HTTP/3版本。每个版本都带来了性能和功能的提升。

HTTP/0.9:这是HTTP协议的最初版本,它只支持GET方法,不支持头信息,并且每个连接只能处理一个请求。
HTTP/1.0:这个版本在HTTP/0.9的基础上增加了头信息,使得请求和响应可以包含更多的元数据。同时,它也支持了更多的请求方法,如POST和HEAD。但是,每个连接仍然只能处理一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值