HTTP协议入门

序言

在学习Http的时候,走了很多弯路,开始觉得是简单的百度出来,看看别人的博客就好了,结果发现基本上都是第三手、第四手资源,里面讲的东西仍是停留于几年前,这让我这个小白无从下手,最终直接去了MDN官网翻翻东西。git

Http简介

Http又称超文本传输协议,是用于传输例如HTML的超媒体文档的应用层协议,主要用于浏览器与web服务器之间的通讯。HTTP是无状态协议,即服务器不会在两次请求之间保留任何数据,但使用Cookies能够建立有状态的会话。。 github

Http协议流程图
客户端和服务端经过交换各自的消息(与数据流正好相反)进行交互。由像浏览器这样的客户端发出的消息叫作 requests,被服务端回应的消息叫作 responses。web

TCP/IP 三次握手

HTTP 的传输协议是 TCP/IP 协议,该协议链接是须要进行三次握手的。
大白话
TCP/IP三次握手浏览器

那么为何须要三次握手?这里引用知乎上的一个回答: 缓存

这个问题的本质是, 信道不可靠, 可是通讯双发须要就某个问题达成一致. 而要解决这个问题, 不管你在消息中包含什么信息, 三次通讯 是理论上的最小值. 因此三次握手不是TCP自己的要求, 而是为了知足"在不可靠信道上可靠地传输信息"这一需求所致使的. 请注意这里的本质需求,信道不可靠, 数据传输要可靠. 三次达到了, 那后面你想接着握手也好, 发数据也好, 跟进行可靠信息传输的需求就不要紧了. 所以,若是信道是可靠的, 即不管何时发出消息, 对方必定能收到, 或者你不关心是否要保证对方收到你的消息, 那就能像UDP那样直接发送消息就能够了.服务器

官方语言上的三次握手步骤:网络

  • 客户端发送 SYN 报文给服务器端,进入 SYN_SEND 状态。 —— 客户端向服务器端发送消息,请求它的回应。
  • 服务器收到 SYN 报文,回应一个 SYN ACK 报文,进入 SYN_RECV 状态。 —— 服务器端收到消息,采起回应行为,回复消息告诉客户端收到了。
  • 客户端收到服务器 SYN 报文,回应一个 ACK 报文,进入链接状态。 —— 客户端收到消息,这时客户端收到响应,代表发送的数据有回信了。可是服务器端发送了回应却还不知道客户端有没有收到。这时客户端须要再次发送消息告诉服务器我收到了。服务器收到消息后,客户端和服务器都知道对方已准备好通信,而后就开始链接通信了。

Http的request和response

  1. request
    请求为客户端发送给服务器的数据。具体有以下数据:学习

    • 请求方法:如 GET、 POST 这类请求方法。
    • 要获取的资源路径。
    • HTTP协议版本号。
    • Headers:传递附加信息。
    • body:若是想 POST 请求,就会传递 body 资源数据给服务器。

Http请求

  1. response
    响应为服务器收到客户端发送数据返回的数据,具体有以下数据:加密

    • HTTP协议版本号。
    • 状态码(status code)。
    • 状态消息(status message)。
    • Headers:传递附加信息。
    • body: 响应返回的资源存在body中。通常返回图片、HTML等资源。
      Http请求
  2. Headers 头文件
    头文件容许客户端和服务器经过请求和响应传递附加信息。
    下面列出一些经常使用的消息头及其用法:spa

    • Date 信息来源的日期时间
    • Content-Type 指定服务器文档的MIME类型,帮助用户代理去处理接收到的数据。
    • Content-Length 表示 body 的字节长度。
    • Host 服务器的域名。
    • User-Agent 能够用来识别发送请求的浏览器,是产品标记符和注释的清单。
    • Accept 用户代理指望的MIME类型列表
    • Accept-Encoding 列出用户代理支持的压缩方法
    • Accept-Ranges 指望范围。参数:byte、none。
    • Assess-Control-Allow-Origin 容许组织链接控制 。
    • Age 对象在代理缓存中的时间
    • Cache-Control 指定缓存机制
    • Connection 是否保持网络链接打开状态。参数:keep-alive、close。
    • ETag 特定版本资源标识符
    • Expires 过时时间日期
    • Server 服务器信息,如JSP、Apache等。
    • Referer 可用于识别用户访问位置

Https

  1. Http与Https的区别
    Https在传输的信息上是通过了加密的,而Http是明文传输。
  2. Https运行机制

    • 客户端发起 HTTPS 请求
    • 服务端获取数字证书CA —— 服务器向数字证书认证机构申请获取数字证书 CA 代表服务器是合法的、无害的。
    • 传送数字证书 —— 将数字证书传给客户端
    • 客户端解析证书 —— 客户端向数字证书认证机构查询,验证服务器合法性。
    • 客户端传输加密后的信息给服务端
    • 服务端解密信息
    • 服务端传输加密后的信息给客户端
    • 客户端解密信息

参考连接:

  1. Http|MDN https://developer.mozilla.org...
  2. 通俗大白话来理解TCP协议的三次握手和四次分手 https://github.com/jawil/blog...
  3. HTTP 协议学习笔记(扫盲文)https://www.jianshu.com/p/e0a...
相关文章
相关标签/搜索