http概念及请求信息和响应信息详解

1,545 阅读5分钟

什么是协议?

​ 计算机中的协议和现实中的协议是一样的,一式双份、多份

​ 双方/多方都遵从共同的一个规范,这个规范就可以称为协议

​ 计算机之所以能全世界互通,协议功不可没。如果没有协议,计算机各说各话,谁都听不懂谁。

什么是http协议?

​ http协议即按一定规则,向服务器请求数据,或发送数据,而服务器按一定规则,响应数据。

​ http是一种无状态协议。无状态是指客户端和服务器端之间不需要建立持久的连接,客户端发起一个请求,服务器端返回响应,这个连接就会被关闭,在服务器端不会保留该请求的有关信息。

问:浏览器能发送HTTP协议,http协议一定要浏览器来发送吗?

答:不是,HTTP既然是一种协议,那么只要满足这种协议,什么工具都可以发。

http的工作流程

  1. 地址解析:HTTP协议是通过标准URL来请求指定的服务器中的指定服务的。

    标准URL :baidu.com:80/index.html?......

(1)http:协议类型。
(2)baidu.com : 主机名。通过主机名我们可以准确定位到要访问的服务器
(3) 80 : 端口号。通过端口号我们可以准确找到用户需要访问的那个服务器和应用
(4)index.html : 请求的文件名。通过文件名来访问指定的文件
(5)?name=tom&age=18 : 请求参数。携带的参数不同来响应不同的用户或者同一个用户的不同请求的
  1. 封装HTTP请求

    将URL以及本级的一些信息封装成一个HTTP请求数据包

  2. 建立TCP连接:也就是我们常说的“三次握手”

    ”三次握手“:首先由客户端发送建立连接的请求,客户端发送一个syn包,等待服务器端的响应;服务器端收到SYN包之后,返回给客户端一个表示确认的SYN包;最后客户端收到确认SYN包之后向服务器端发送ACK包,发送完之后开始建立连接。

  1. 发送HTTP请求

    客户端发送HTTP请求到服务器端,与请求相关的信息都会包含在请求头和请求体中发送给服务器。

  2. 服务器处理请求并返回需要的数据

    服务器在收到请求之后,根据客户端的请求发送给客户端相应的信息。相关的响应信息都会放在响应头和响应体中。

  3. 连接结束:关闭连接

    服务器端在发送完响应之后,就会关闭连接。如果客户端的请求的头信息中有Connection-alive,那么服务器端在响应完这个请求之后不会关闭连接,直到该客户端的所有请求都响应完毕,才会关闭连接,这样大大节省了带宽和I/O资源。

​ http请求信息和响应信息

1.请求:

HTTP中的请求头由三部分组成:请求行、请求头和请求正文

(1)请求行

​ ①请求方法

​ GET POST PUT DELETE TRACE OPTIONS

//注意:这些请求方法虽然HTTP协议里规定的,但WEB SERVER未必欲奴或支持这些方法

//HEAD和GET基本一致,只是HEAD不返回内容
//比如我们只是确定一个内容(比如照片)还正常存在,不需要返回照片的内容,这时用HEAD比较合适

//TRACE:是你用了代理上网,比如用代理访问new.163.com,你想看看代理有没有修改你的HTTP请求,可以用TRACE来测试一下,163.com的服务器就会把最后收到的请求返回给你

​ ②请求路径URL

​ 就是url的一部分

​ ③协议及版本

目前一般是HTTP/1.1,0.9,1.0 已经基本不用

(2)请求头信息(key:value)

常见的请求头域:

(1)Connetion:表示是否需要持久连接。如果服务器看到它的值为keep-alive,或者请求协议使用的是HTTP/1.1(默认使用持久连接),同一个页面如果包含多个资源,则只会使用一个连接,如Connection:keep-alive。如果设置了Connetion:close,则每一个请求结束都会关闭连接,新的请求又会重新建立连接。一个网页至少有几十个资源请求,这样很浪费带宽和时间。

(2)Host:这个是必需的,表示请求的服务器地址是什么,是从URL中提取出来的。比如www.baidu.com/的Host就是www.baidu.com。这里是80端口,默认省略;如果是其他端口,比如www.baidu.com:8080,则Host是www.baidu.com:8080

(3)Accept:浏览器可以接受的媒体类型(MIME类型),如Accept:text/html代表浏览器可以接受HTML文档。“”代表接受任何类型,如Accept:/*。

(4)Accept-Encoding:浏览器申明自己接受的编码方法,通常指定压缩方法、是否支持压缩、支持什么格式的压缩。

注:头信息结束后和主体信息之间要空一行

(3)请求主体信息 (可以没有)

​ 也叫请求数据,在使用POST请求提交表单数据的时候,这些表单数据就会被放在HTTP请求的请求正文中,以加密的形式向服务器传输。

例:
POST/0606/02.php HTTP/1.1
HOST:localhost
Content-type:
application/x-www-form-urlencode
Content-length:5

Age = 3

2.响应:

(1)响应行

​ ①协议

​ ②状态码

​ ③状态文字

(2)响应头信息(key:value)

​ 注:头信息结束后和主体信息之间要空一行

(3)响应主体信息

​ (接收的内容,可以没有)

例:
HTTP/1.1 200 OK
Content-type:text/html
Content-length:5

hello

​ http响应中的状态码

状态码 定义 说明
1XX 信息 接收到请求,继续处理
2XX 成功 操作成功收到,理解和接收
3XX 重定向 为了完成请求,必须采取进一步措施
4XX 客户端错误 请求的语法有错误或不能完全被满足
5XX 服务器错误 服务器无法完成明显有效的请求

常见:200 - 服务器成功返回网页

​ 301/2 - 永久/临时重定向

​ 304 Not Modified - 未修改

​ 500 - 服务器内部错误

失败的状态码:

​ 404 - 请求的网页不存在

​ 503 - 服务器暂时不可用

​ 500 - 服务器内部错误