一、HTTP的概念
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。
它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,是用于从WWW服务器传输超文本到本地浏览器的传送协议。
它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
二、HTTP的工作流程
1、一次HTTP操作称为一个事务,其工作过程可分为四步:
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
2、客户端浏览器与服务器的交互过程
1)浏览器向服务器发出连接请求。此为TCP三次握手第一步,此时为SYN,seq:X (x=0)
2)服务器回应了浏览器的请求,并要求确认,此时为:SYN,ACK,此时seq:y(y为0),ACK:x+1(为1)。此为三次握手的第二步;
3)浏览器回应了服务器的确认,连接成功。为:ACK,此时seq:x+1(为1),ACK:y+1(为1)。此为三次握手的第三步;
4)浏览器(192.168.2.33)发出一个页面HTTP请求;
5)服务器(220.181.50.118)确认;
6)服务器(220.181.50.118)发送数据;
7)客户端浏览器(192.168.2.33)确认;
8)客户端(192.168.2.33)发出一个图片HTTP请求;
9)服务器(220.181.50.118)发送状态响应码200 OK
三、HTTP请求与响应报文
1、HTTP请求:HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。
HTTP请求由状态行、请求头、请求正文三部分组成:
状态行:包括请求方式Method、资源路径URL、协议版本Version;
请求头:包括一些访问的域名、用户代理、Cookie等信息;
请求正文:就是HTTP请求的数据。
备注:请求方式Method一般有GET、POST、PUT、DELETE,含义分别是获取、修改、上传、删除,其中GET方式仅仅为获取服务器资源,方式较为简单,因此在请求方式为GET的HTTP请求数据中,请求正文部分可以省略,直接将想要获取的资源添加到URL中。下图所示就是GET的请求,没有请求正文。
2、HTTP响应:服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。
HTTP响应由三部分组成:状态行、响应头、响应正文;
状态行:包括协议版本Version、状态码Status Code、回应短语;
响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;
响应正文:就是响应的具体数据。
备注:我们主要关心并且能够在客户端浏览器看得到的是三位数的状态码,不同的状态码代表不同的含义,其中
1xx | 表示HTTP请求已经接受,继续处理请求 |
2xx | 表示HTTP请求已经处理完成 |
3xx | 表示把请求访问的URL重定向到其他目录 |
4xx | 表示客户端出现错误 |
5xx | 表示服务端出现错误 |
四、HTTP状态码
a) 201-206 都表示服务器成功处理了请求的状态代码,说明网页可以正常访问。
i. 200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
ii. 201(已创建)请求成功且服务器已创建了新的资源。
iii. 202(已接受)服务器已接受了请求,但尚未对其进行处理。
iv. 203(非授权信息)服务器已成功处理了请求,但返回了可能来自另一来源的信息。
v. 204(无内容)服务器成功处理了请求,但未返回任何内容。
vi. 205(重置内容)服务器成功处理了请求,但未返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。
vii. 206(部分内容)服务器成功处理了部分 GET 请求。
b) 300-307 表示的意思是:要完成请求,您需要进一步操作。通常,这些状态代码是永远重定向的。
i. 300(多种选择)服务器根据请求可执行多种操作。服务器可根据请求者来选择一项操作,或提供操作列表供其选择。
ii. 301(永久移动)请求的网页已被永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。
iii. 302(临时移动)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
iv. 303(查看其他位置)当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。
v. 304(未修改)自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。
vi. 305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。
vii. 307(临时重定向)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
c) 4XX 表示请求可能出错,会妨碍服务器的处理。
i. 400(错误请求)服务器不理解请求的语法。
ii. 401(身份验证错误)此页要求授权。
iii. 403(禁止)服务器拒绝请求
iv. 404(未找到)服务器找不到请求的网页。
v. 405(方法禁用)禁用指定的方法。
vi. 406(不接受)无法使用请求的内容特性响应请求的网页。
vii. 407(需要代理授权)此状态码与 401类似,但指定请求者必须授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。
viii. 408(请求超时)服务器等候请求时发生超时。
ix. 409(冲突)服务器在完成请求时发生冲突。
x. 410(已删除)请求的资源永久删除后,服务器返回此响应。
xi. 411(需要有效长度)服务器不接受不含有有效内容长度标头字段的请求
xii. 412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件
xiii. 413(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
xiv. 414(请求的 URL过长)请求的 URL( 通常为网址)过长,服务器无法处理。
xv. 415(不支持的媒体类型)
xvi. 416(请求范围不符合要求)
xvii. 417(未满足期望值)
d) 500-505 表示服务器在尝试处理请求时发生内容错误。这些错误可能是服务器本身的错误,而不是请求出错。
i. 500(服务器内部错误)
ii. 501(尚未实施)服务器不具备完成请求的功能。
iii. 502(错误网关)服务器作为网关或代理,从上游服务器收到了无效的响应。
iv. 503(服务不可用)
v. 504(网关超时)服务器作为网关或代理,未及时从上游服务器接收请求。
vi. 505(HTTP 版本不受支持)
原文:https://www.cnblogs.com/liufuyuan/p/11452148.html