真正“搞”懂HTTP协议02之空间穿梭

时隔四年,这个系列鸽了四年 , 我终于觉得我可以按照自己的思路和想法把这个系列完整的表达出来了 。
想起四年前,那时候还是2018年的六月份,那时候我还工作不到两年,那时候我翻译了RFC2616的部分内容 , 发布在了博客园上,并在翻译不久后想要开始整理并学习HTTP相关的知识内容,那时候我以为我可以了 。
但是在第一篇《真正“搞”懂http协议01之背景故事发布》之后 , 我发现我对整个系列的内容分布完全无从下手 。这期间我也发布了很多系列内容(其实就是抄抄书),但是一方面没有花时间去刻意的学习,另外一方面觉得对于HTTP的了解还不足以去写一个系列的博客 。
刚好 , 最近想要有一些变化了,所以开始学习HTTP,并且再加上这些年的工作经验大致对于HTTP有了一定的认识和了解,可以按照自己想要的思路来完成这一系列 。
那么本系列的设想大致是这样的 。
先聊聊HTTP在互联网络模型中的位置以及有哪些互联网络模型,并且不同的互联网络模型是如何分层的,以及整个互联网络模型的数据流转是什么样的 。嗯~也就是本篇的内容 。
下一篇会再讲讲HTTP的历史,各阶段的HTTP发展及其核心内容,比如各个版本的HTTP都涵盖了哪些头字段,有哪些变化,随着时间的变迁增加了哪些方法,以及更安全的HTTPS、还有性能更优良的QUIC也就是HTTP3 。
以上两篇内容,核心就是HTTP在空间和时间上是怎样流转和发展的,其目的是为了让大家对于HTTP在空间和时间上处于怎样的位置,学习HTTP又不能局限于HTTP 。
然后,我会根据HTTP在历史上的发展,按照时间线,以一个前端开发的角度(主要是因为我也没别的角度了)带大家深入的去学习HTTP的各项内容并加以分析 。
好啦 , 叙旧就到此为止,我们正式开始吧 。
一、互联网络模型在第一篇背景故事里 , 我简单的介绍了互联网络模型 , 特别简单的那种 。让人苦恼的是,互联网络模型并不只是单单一种,历史上的大佬根据不同的场景和阶段所产生的不同的需求都对互联网络模型加以不同的分层 。
那么这一小节,我们先来简单的了解下什么是互联网络模型 。但是在开始聊模型之前 , 我们得先了解下什么是网络 。
【真正“搞”懂HTTP协议02之空间穿梭】网络,可以说是计算机网络的简称,当然,计算机网络是一个很基础的学科,如果大学是计算机专业的一定学过这些 。而我们在工作和生活中最常见的网络就是万维网,也即WWW(World Wide Web),是一个透过互联网访问的,由许多互相链接的超文本组成的信息系统 。
除了万维网,还有互联网 , 局域网 , 等等等等 , 而万维网其实是互联网的一个子集 。我们在工作和生活中最常用的就是万维网 , 我们通常所说的上网,也即是上万维网,它是基于HTTP协议的,传输 HTML 等超文本资源的,能力也就被限制在 HTTP 协议之内 。
OK,我们基本了解了什么是网络 。
但是要了解HTTP处于网络中怎样的位置,我们还得看看互联网络模型是什么样的 。诶?你叫做互联网络模型,不是叫做万维网络模型?说明了什么?
四层网络模型(TCP/IP网络分层模型 || DoD模型)额~~~你聊网络模型,怎么聊到TCP/IP了?TCP不是协议?IP不也是协议?嗯~~毛病倒是没有,但是TCP/IP协议族是……额……不太好形容,它是互联网中最为**经典的**、**事实的**通信协议标准 。
整个TCP/IP协议栈并不单纯的代表TCP和IP,而是代表完整的网络通信家族 , 由于它创造性的分层设计,所以也叫做**TCP/IP协议栈** 。而TCP和IP则是整个家族中最早通过的标准 。这些协议最早发源于美国国防部(缩写为DoD)的ARPA网项目 , 因此也称作DoD模型(DoD Model) 。
我们来看张图,整个DoD模型(下面我都这么叫,因为字少~)是这样的:

真正“搞”懂HTTP协议02之空间穿梭

文章插图
嗯~就这么简单,层数是由下往上计算的,分别是链接层、网络层、传输层以及应用层 。所以,HTTP在哪一层呢?我相信大家都知道HTTP在应用层 。
我们从下到上,依次来简单说下各层负责的内容以及各层都大概涵盖了哪些协议 , 为啥是大概涵盖呢?额~因为整个TCP/IP协议族太大了,有几十个甚至上百个协议,是不是有点夸张 。
先来说说DoD模型的第一层,也就是链接层 。负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标记网络上的设备,所以有时候也叫 MAC 层 。注意,这里你尤其要注意下MAC这个词 。稍后我们捋线的时候会用到 。

推荐阅读