美文网首页
HTTP 协议原理(一):简介

HTTP 协议原理(一):简介

作者: 林ze宏 | 来源:发表于2021-05-30 15:00 被阅读0次

目录

  • 1 浏览器输入 URL 后 HTTP 请求返回的完整过程
  • 2 网络协议分层
  • 3 HTTP 协议历史
  • 4 HTTP 的三次握手
  • 5 URI、URL 和 URN
  • 6 HTTP 报文格式
  • 7 使用 node 创建一个 HTTP 服务

1 浏览器输入 URL 后 HTTP 请求返回的完整过程

浏览器输入 URL 后 HTTP 请求返回的完整过程

说明:

  • 1、Redirect:因为浏览器可能已经记录了你要访问的地址 URL,已经需要跳转到新的地址 URL,所以,浏览器首先需要判断是否应该 Redirect 跳转;

  • 2、App cache:是否有缓存,如果没有缓存,可需要去请求服务器;

  • 3、DNS:域名解析成对应的 IP 地址,才能访问到服务器

  • 4、TCP:有了 IP,就可以创建 TCP 连接,需要 3 次握手,才能把 TCP 创建起来;如果是 https,那还需要创建一个 https 连接,跟 TCP 3 次握手又不太一样,因为 https 中间要有保证传输安全的过程;HTTP 的发送,是在 TCP 连接的基础之上的。

  • 5、Request:连接创建成功后,才真正可以发送 HTTP 请求数据包;

  • 6、Response:服务器接受到数据包后,操作完成,返回请求需要的数据;

2 网络协议分层

经典五层模型

说明:

  • 1、应用层:
    为应用软件提供了很多服务;

    构建于 TCP 协议之上;

    屏蔽网络传输相关的细节;

  • 2、传输层:
    有两个协议,TCP 和 UDP 协议,一般会选择 TCP 协议,因为更可靠,帮我们去传输数据;

    向用户提供可靠的端到端(End-To-End)服务;

    传输层向高层屏蔽了下层数据通信的细节;

    简单理解:在传输层,传输的数据大或者小,大了如何分片、打包,数据传输的处理,都是在传输层做的;

  • 3、网络层:数据在结点之间传输创建逻辑链路;(例:如何去访问到百度的服务器所在的地址,这里一个逻辑关系,是在网络层实现的)

  • 4、数据链路层:在通信的实体间建立数据链路连接;(有了物理设备,数据也要通过这些物理设备建立起电路,进行数据传输,如:0101...)

  • 5、物理层:定义物理设备如何去传输数据;(电脑硬件、网卡端口、网线、光缆等等)

3 HTTP 协议历史

  • HTTP / 0.9

    只用一个命令 GET

    没有 HEADER 等描述数据的信息

    服务器发送完毕,就关闭 TCP 连接;

    注意:这里的 TCP 连接,跟 HTTP 连接不是同一个概念,同一个 TCP 连接,对应的是多个 HTTP 请求,而一个 HTTP 请求,它是在某一个 TCP 连接里面进行发送;

  • HTTP / 1.0

    增加了很多命令

    增加 status code 和 header

    多字符集支持、多部分发送、权限、缓存等

  • HTTP / 1.1

    持久连接

    pipeline

    增加 host 和其他的一些命令

  • HTTP2

    所有的数据以二进制传输

    同一个连接里面发送多个请求不再需要按照顺序来(并行,解决串行请求问题)

    头信息压缩以及推送等提高效率的功能

4 HTTP 的三次握手

客户端与服务端进行 HTTP 请求与响应,是需要在 TCP 连接的基础之上的,因为 HTTP 是不存在连接的概念,它只有请求和响应的概念,请求和响应都是数据包,他们之间的传输是需要进行一个传输的通道,而这个通道是通过 TCP 建立起来的连接。

HTTP 连接的三次握手

为什么要进行三次握手尼?

为了防止服务端开启一些无用的连接,因为网络传输是有延时的,如果客户端发送一个请求给服务器端,服务端直接发送数据给客户端, 这个数据包有可能因为网络的原因丢失了,所以,客户端就无法接受到服务器返回的数据,则,客户端可能会关闭这个连接,重新发起一个新的请求,而服务端是不知道客户端有没有接受到数据的这个过程。

如果没有第三次握手的话,服务端也不知道客户端有没有接受到这个信息,并且也无法确定到底是要关闭或者保持这个连接,服务端就会一直开着这个端口,等待客户端来发送请求,它是无法确定这个连接是否失败,所以,需要三次握手,来让客户端和服务端及时的知道该连接是否由于网络问题,而出现错误,避免资源浪费;

5 URI、URL 和 URN

  • URI

    Uniform Resource Identifier / 统一资源标识符

    用来唯一标识互联网上的信息资源

    包括 URL 和 URN

  • URL

    Uniform Resource Locator / 统一资源定位器

    http://user:pass@host.com:80/path?query=string#hash

    此类格式都是叫 URL,如 ftp 协议

  • URN (了解)

    永久统一资源定位符

    在资源移动之后还能被找到

    目前还没有非常成熟的使用方案

6 HTTP 报文格式

请求报文首行信息包括,方法、URL、 HTTP 协议和版本

相应报文首行信息包括,HTTP 协议、状态码、状态码语义

  • HTTP 方法
    常用:GET、POST、PUT、DELETE

  • HTTP Code

7 使用 node 创建一个 HTTP 服务

service.js:

const http = require('http');

http.createServer(function (request, response) {
  console.log('request', request.url);
  response.end('1111')
}).listen(8888)

console.log('server listing 8888');

运行:node service.js

相关文章

  • HTTP协议:工作原理

    HTTP协议:工作原理 1. HTTP简介 HTTP协议(HyperText Transfer Protocol,...

  • HTTP 协议原理(一):简介

    目录 1 浏览器输入 URL 后 HTTP 请求返回的完整过程 2 网络协议分层 3 HTTP 协议历史 4 HT...

  • fiddler

    目录 一、HTTP协议简介 二、Fiddler简介 三、Fiddler工作原理 四、Fiddler界面介绍 五、F...

  • PHP中会话控制

    PHP中会话控制 一、HTTP协议简介以及原理 i. HTTP:超文本传输协议(无连接 无状态) 无连接:客户端向...

  • Http协议和Https协议

    Http网络协议 一、简介 超文本传输协议,基于TCP/IP协议来传输数据; 原理:客户端-服务端架构,客户通过U...

  • 第六个模块 HTTP协议、Restful

    HTTP协议 · HTTP协议 · 工作原理 HTTP协议请求 HTTP协议响应 HTTP协议消息报头 1、普通报...

  • 一、http协议简介

    引言 HTTP是一个属于应用层的面向对象的协议,适用于分布式信息系统,HTTP协议的主要特点可概括如下: 1.支持...

  • HTTP 协议简介 (一)

    HTTP 协议 HyperText Transport Protocal 超文本传输协议 浏览器和Web 服务器通...

  • 8.php与web页面交互

    web工作原理 HTTP协议 HTTP协议(HyperText Transfer Protocol,超文本传输协议...

  • HTTP协议详解

    HTTP协议详解 一.HTTP简介 1.HTTP协议,即超文本传输协议(Hypertex...

网友评论

      本文标题:HTTP 协议原理(一):简介

      本文链接:https://www.haomeiwen.com/subject/cdfklctx.html