解析HTTP

一、 HTTP简介

WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。 HTTP是HyperTextTransferProtocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。

二.http工作流程

http是基于传输层的tcp协议的,而tcp协议是面向链接的端到端协议。因此,使用http协议传输前,首先应该建立tcp连接,首先就是tcp的三次握手可参考:TCP三次握手
在web上,http协议使用tcp协议而不是udp协议的原因在于,一个网页必须传送很多的数据,而且必须保证其数据的可靠考和安全性。tcp协议提供船速控制,按照顺序组织数据和错误纠错的一系列功能。
一个http操作可以将其分为四个步骤:

    1.客户端与服务端需要建立连接,比如某个超级链接,这时http就开始了
    2.建立连接成功后,发送http请求
    3.服务器连接请求后,响应其响应的信息
    4.客户端接受到服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

三、HTTP请求消息

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。

一个完整的HTTP请求包括如下内容:一个请求头、若干消息头、以及请求正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。

四、HTTP响应消息

一个HTTP响应代表服务器向客户端回送的数据。

一个完整的HTTP响应包括如下内容:一个状态行、若干消息头、以及响应正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。

五、HTTP消息头(请求和响应共性)

使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令。 每个消息头包含一个头字段名称,然后一次是冒号、空格、值、回车和换行符。如:Accept-Encoding:gzip,deflate 消息头字段名是不区分大小写的,但习惯上讲每个单词的第一个字母大写。 整个消息头部分中的各行消息头可按任何顺序排列。 消息头又可分为通用消息头、请求头、响应头、实体头等四类。 许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个选项之间以逗号分隔。 有些头字段可以出现多次,例如,响应消息中可以包含有多个"Warning"头字段。

六、HTTP请求的细节——请求行

1. 请求行

格式:请求方式 资源路径 HTTP版本号 举例:GET /temp3o116.shtml HTTP/1.1 请求方式:GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT 用户如果没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。 不管POST或GET,都用于向服务器请求某个web资源,这两种方式的区别主要表现在数据传递上。

2. GET方式

如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交个服务器的数据,多个数据之间以&进行分隔,例如: GET /mail/1.html?name=abc&password=xyz HTTP/1.1 GET 方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1k。

3. POST方式

如请求方式为POST方式,则可以在请求的正文内容中向服务器发送数据,post方式的特点:传送的数据量无限制。

七、HTTP响应的细节——状态行

1. 状态行

格式:HTTP版本号 状态码 原因叙述

举例:HTTP/1.1 200 OK

2. 状态码用于表示服务器对请求的各种不同处理结果和状态,它是一个三位的十进制数。响应状态码分为5类,使用最高位为1到5来进行分类如下所示:

状态码

含义

100~199

表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程

200~299

表示成功接收请求并已完成整个处理过程

300~399

为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址

400~499

客户端的请求有错误

500~599

服务器端出现错误

八、HTTP响应的细节——常用状态码

200(正常):表示一切正常,返回的是正常请求结果 302/307(临时重定向):指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。 304(未修改):表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。 404(找不到):服务器上不存在客户机所请求的资源。 500(服务器内部错误):服务器端的程序发生错误。

九、HTTP请求的细节——请求头

请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型(MIME类型)、压缩方法、语言以及发出请求的超链接所属页面的URL地址等信息。

 

posted @ 2019-02-26 20:35  匪我  阅读(577)  评论(0编辑  收藏  举报