欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HTTP协议

程序员文章站 2022-06-28 15:50:39
...

Http简介

  • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

  • HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。其实我们要学习的就是这个两个格式!客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。

  • 特点:

    • HTTP叫超文本传输协议,基于请求/响应模式的!

    • HTTP是无状态协议。(无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态)

    • URL:统一资源定位符,就是一个网址:协议名://域名:端口/路径,例如:http://www.xxx.cn:80/index.html

Http状态码

100~199:指示信息,表示请求已接收,继续处理

200~299:请求成功,表示请求已被成功接收、理解、接受

300~399:重定向,要完成请求必须进行更进一步的操作

400~499:客户端错误,请求有语法错误或请求无法实现

500~599:服务器端错误,服务器未能实现合法的请求

---

常见的状态码如下:

200 OK:客户端请求成功

400 Bad Request:客户端请求有语法错误,不能被服务器所理解

401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden:服务器收到请求,但是拒绝提供服务

500 Internal Server Error:服务器发生不可预期的错误

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

URI和URL区别

  • URI:uniform resource identifier,统一资源标识符,用来唯一的标识一个资源
    • URI一般由三部组成:
      1. 访问资源的命名机制
      2. 存放资源的主机名
      3. 资源自身的名称,由路径表示,着重强调于资源。
  • URL:uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源
    • URL一般由三部组成:
      1. 协议(或称为服务方式)
      2. 存有该资源的主机IP地址(有时也包括端口号)
      3. 主机资源的具体地址。如目录和文件名等

HTTP三次握手四次挥手

HTTP协议

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭

简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:

1. 服务器读通道关闭

2. 客户机写通道关闭

3. 客户机读通道关闭

4. 服务器写通道关闭

  • 三次握手(建立连接):

    1. 第一次客户端向服务器发出连接请求
    2. 第二次服务器响应客户端请求,并告知客户端已经接收请求
    3. 第三次客户端告知服务器收到响应,可以进行数据可靠传输
  • 完成三次握手,主机A与主机B开始传送数据

  • 四次挥手(关闭连接):
    1. 第一次客户端向服务发送关闭请求,关闭服务器读通道
    2. 第二次服务器响应客户端请求,客户端关闭写通道
    3. 第三次服务器向客户端请求确认,关闭客户端读通道
    4. 第四次客户端向服务器请求,关闭服务器写通道

请求协议

请求协议
请求首行;  // 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1
请求头信息;// 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost
空行;     // 用来与请求体分隔开
请求体。   // GET没有请求体,只有POST有请求体。

浏览器发送给服务器的内容就这个格式的,如果不是这个格式服务器将无法解读!在HTTP协议中,请求有很多请求方法,其中最为常用的就是GET和POST。

GET请求

HTTP默认的请求方法就是GET

  • 没有请求体
  • 数据必须在1K之内!
  • GET请求数据会暴露在浏览器的地址栏中
POST请求
  • 数据在请求体中

  • 数据的大小没有上限

  • 请求体中如果存在中文,会使用URL编码!

    username=%E5%BC%A0%E4%B8%89&password=123
GET和POST区别
  • get请求侧重于从服务器获取数据,所以请求参数在url中,并有大小限制,对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据),并被cookie保存,方便下次请求;
  • post请求侧重传递参数,请求参数在请求体中,数据量大 POST支持多种编码方式(可进行加密),而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

响应协议

响应协议
响应首行;
响应头信息;
空行;
响应体。

响应内容是由服务器发送给浏览器的内容,浏览器会根据响应内容来显示。遇到HTTP协议会开一个新的线程加载,所以有时图片多的话,内容会先显示出来,然后图片才一张张加载出来。

HTTP协议

相关标签: HTTP协议