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

什么是协议?javascript

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

​ 双方/多方都听从共同的一个规范,这个规范就能够称为协议html

​ 计算机之因此能全世界互通,协议功不可没。若是没有协议,计算机各说各话,谁都听不懂谁。java

什么是http协议?浏览器

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

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

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

答:不是,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 - 服务器内部错误

相关文章
相关标签/搜索