HTTP 协议原理(一):简介

目录

  • 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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容