网络知识之HTTP
网络知识之HTTP
一、基本概念
HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从服务器传输超文本到本地浏览器的传送协议,是基于TCP/IP来传送数据的。
二、Http工作原理
在浏览器地址键入URL,工作流程:
1、 浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址。
2、解析出IP地址后,根据该IP地址和默认端口号80,与服务器建立TCP连接。
3、浏览器发出HTTP请求给服务器。
4、服务器对浏览器请求做出响应,并把对应的html文本发送给浏览器
5、 释放TCP连接。
6、浏览器将该html文本显示出来。
三、HTTP请求与响应消息
HTTP消息包括客户端向服务器的请求消息和服务器向客户端的响应消息。
1、客户端向服务器的请求消息:
客户端向服务器的请求消息包括一下格式:请求行、请求头部、空行和请求数据四个部分组成,请求报文的格式如下:
示例:
(1)请求行
字段名 | 解释 |
---|---|
请求方法 | 包括GET、POST、HEAD、PUT、DELETE、OPTIONS等请求方法 |
URL | 请求对象的标识 |
HTTP版本 | 说明HTTP的 版本 |
(2)请求头
字段名 | 解释 |
---|---|
Host | 客户端指定自己想访问的WEB服务器的域名(或者是IP地址和端口号) |
User-Agent | 浏览器表名自己的身份(是哪种浏览器) |
Accept | 表示客户端期望服务器返回的媒体格式,一般取决于浏览器的偏好。q是相对品质因数,向服务器表明了媒体格式的优先级,如果不写默认就是1。在这个例子中浏览器希望先返回text/html,如果没有的话application/xhtml+xml也很希望(因为两个q都默认为1),实在不行也可以返回application/xml(但是不如前两种好,因为q=0.9),以此类推,* / *代表任意类型,意思就是之前的实在都没有那就返回任意类型吧,但是这个选择的优先级是最低的 。 |
Accept-Language | 浏览器声明自己接受的语言 |
Accept-Encoding | 浏览器声明自己接受的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate) |
Accept-Charset | 告诉服务器自己能接受的字符集 |
Referer | 浏览器向Web服务器表名自己是从哪个网页过来的(就是当你向一个服务器发起请求的时候,服务器会很好奇,你是从哪里知道它的,因此你需要通过http请求头中的referer字段告诉该服务器,我是从哪个页面过来访问你的。) |
Content-Length | 请求内容的长度 |
Content-Type | 请求内容的MIME类型 |
X-Forwarded-For | 记录一个请求从客户端出发到目标服务器过程中经历的代理,或者负载平衡设备的IP。 |
2、服务器向客户端的响应消息
响应消息报文格式:
四、HTTP状态码说明
1XX:信息,服务器收到请求,需要请求者继续执行操作
2XX:成功,操作被成功接收并处理
3XX:重定向,需要进一步的操作以完成请求
4XX:客户端错误,请求包含语法错误或无法完成请求
5XX:服务器错误,服务器在处理请求的过程中发生了错误
五、常见HTTP状态码
200:请求成功
201:已创建,成功请求并创建了新的资源
202:已接受,已接受请求,但未处理完成
301:永久重定向,请求的资源被永久移到新URL,今后任何新的请求都应使用新的URL代替
302:暂时重定向,资源只是临时被移动,客户端仍使用原有的URL
400:客户端请求的语法错误,服务器无法理解
401:请求要求用户的身份认证
403:服务器理解客户端的请求,但是拒绝执行的请求
404:服务器无法根据客户端的请求找到资源
500:服务器内部错误,无法完成请求
501:服务器不支持请求的功能,无法完成请求
503:由于超载或系统维护,服务器暂时无法处理客户端的请求