05_透视HTTP协议_常说的“四层”和“七层”到底是什么?

内容

TCP/IP协议,是一个有层次的协议栈,一直都有听说过,四层负载均衡,七层负载均衡,二层转发,三层路由...那这些层次的含义是什么?

TCP/IP网络分层模型

TCP/IP当初的设计者,创造性地提出了分层的概念,把复杂的网络通信划分出多个层次,再给每一个层次分配不同的职责,层次内只专心做自己的事情就好,用“分而治之”的思想,把一个大麻烦拆分成了数个小麻烦,从而解决了网络通信的难题。

协议栈架构

层次顺序,从下往上,所以从最下面一层开始慢慢解释。

链接层(Link Layer)

负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来标记网络上的设备,所以有时候也叫MAC层。

网际层 / 网络互联层(Internet Layer)

IP协议就处在这一层。因为IP协议定义了“IP地址”的概念,所以就可以在链接层的基础上,用IP地址取代MAC地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时,只要把IP地址,再翻译成MAC地址就可以了。

传输层(Transport Layer)

这个层次协议的职责是保证数据在IP地址标记的两点之间 “可靠”地传输,是TCP协议工作的层次,另外还有一个是UDP。

TCP是一个有状态的协议,需要先与对方建立连接,然后才能发送数据,而且保证数据不丢失不重复。而UDP比较简单,他是无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方。两个协议的另一个重要区别在于数据的形式。TCP数据是连续的“字节流”,有先后顺序。而UDP,则是分散的小数据包,是顺序发,乱序收。

应用层

由于下面的三层把基础打得非常好,所以在这一层,想干嘛就干嘛了,有各种面向具体应用的协议。例如,Telnet、SSH、FTP、SMTP,还有HTTP

小结

MAC层传输单位是帧(frame),IP层的传输单位是包(packet),TCP层的传输单位是段(Segment),HTTP的传输单位是消息或报文(message)。这些名词,都可以统称为数据包。

OSI网络分层模型

OSI,开放式系统互联通信参考模型(Open System Interconnection Reference Model)。70年代,网络协议频出,ISO感觉野路子太多了,就想来个大一统。于是,设计出了一个新的网络分层模型,想用这个框架来统一既存的各种网络协议。就是这个OSI

主要分成了七层,部分层次与TCP/IP很像:


OSI架构
  1. 第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等
  2. 第二层:数据链路层,相当于TCP/IP的链接层;
  3. 第三层:网络层,相当于TCP/IP的网际层;
  4. 第四层:传输层,相当于TCP/IP的传输层;
  5. 第五层:会话层,维护网络中的连接状态,即保持会话和同步;
  6. 第六层:表示层,把数据转换为合适、可理解的语法和语义;
  7. 第七层:应用层,面向具体的应用传输数据

不过ISO很清楚,TCP/IP协议才是主导,OSI分层模型在发布的时候,就明确地表明是一个参考,不是强制标准。但是OSI模型也是有优点的,对比一下就可以看出,TCP/IP是一个纯软件的栈,没有网络应用的最根基的电缆、网卡等物理设备的位置。而OSI补足了这个缺失,在理论层面上描述网络更加完整。

还有一个重要的形式上的有点:OSI为每一层标记了明确了编号,最底层是一层,最上层是七层。而TCP/IP的层次只有名字,没有编号。所以,比较好叫。这些只是理论上的,没有与现实完全对应。

两个分层模型的映射关系

现在我们有了两个网络分层模型:TCP/IP和OSI,那这两个模型是怎么去做互相映射或者说,互相解释的?(OSI在设计之初,就有参考了TCP/IP等多个协议)


两层结构相互映射
  1. 第一层:物理层,TCP/IP里无对应;
  2. 第二层:数据链路层,对应TCP/IP的链接层;
  3. 第三层:网络层,对应TCP/IP的网际层;
  4. 第四层:传输层,对应TCP/IP的传输层;
  5. 第五、六、七层:统一对应到TCP/IP的应用层。

这就是“理想与现实”之间的矛盾,理想很美好,有七层,但现实很残酷,只有四层,多余的五六层就此消失。

实际原因:
OSI的分层模型,在四层以上分得太细,而TCP/IP实际应用时的会话管理、编码转换、压缩等具体应用经常联系得很紧密,很难分开。例如,HTTP协议就同时包含了连接管理和数据格式定义。

所以,当我们在说:
四层负载均衡,是指工作在传输层上,基于TCP/IP协议的特性,例如IP地址、端口号等实现对后端服务器的负载均衡。
七层负载均衡,是指工作在应用层上,看到的是HTTP协议,解析HTTP报文里的URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。

TCP/IP协议栈的工作方式

我们可以把HTTP利用TCP/IP协议栈传输数据,想象成一个发快递的过程。

假设内容:

  1. 假设你想把一个毛绒玩具送给朋友,但你要先拿个塑料袋套一下,这件玩具就相当于HTTP协议里要传输的内容,比如HTML,然后HTTP协议为他加一个HTTP专用附加数据。塑料袋相当于HTTP头。
  2. 你把玩具交给快递小哥,为了保护货物,他又加了层包装再贴了个标签,相当于TCP层给数据再次打包,加上了TCP头。
  3. 接着快递小哥下楼,把包裹放进了三轮车里,运到集散点,然后再装进更大的卡车里,相当于IP层、MAC层对TCP数据包加上了IP头、MAC头
  4. 之后经过漫长的运输,包裹到达目的地,要卸货再放进另一位快递员的三轮车,就是在IP层、MAC层传输后拆包。
  5. 快递员到了你朋友的家门口,撕掉标签,去除了TCP层的头,你朋友再拆掉塑料袋包装,也就是HTTP头,最后就拿到了玩具,也就是真正的HTML页面。

这个比喻里,省略了很多TCP/IP协议里的细节,比如建连、路由、数据切分与重组、错误检查等,但核心的数据传输过程是差不多的。HTTP协议的传输过程,就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。接收则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据。

但下层的传输过程对于上层完全是“透明”的,上层也不需要关系下层的具体实现细节,所以就HTTP层次来看,它不管下层是不是TCP/IP协议,看到的只是一个可靠的传输链路,只要把数据加上自己的头,对方就能原样收到。


传输流程

小结

  1. TCP/IP分为四层,核心是二层的IP和三层的TCP,HTTP在第四层;
  2. OSI分为七层,基本对应TCP/IP,TCP在第四层,HTTP在第七层;
  3. OSI可以映射到TCP/IP,但这期间一、五、六层消失了;
  4. 日常交流的时候,我们通常使用OSI模型,用四层、七层等术语;
  5. HTTP利用TCP/IP协议栈逐层打包再拆包,实现了数据传输,但下面的细节并不可见。

辨认四层+七层(不绝对,基于OSI):

  1. 凡是由操作系统负责处理的,就是四层或四层以下
  2. 否则,凡是需要由应用程序(也就是自己写的代码)负责处理的,就是七层

额外

  1. MAC地址(Media Access Control Address),也叫做局域网地址,可以唯一地标识一个网卡,也就同时标识了此网卡所属的设备

  2. 在TCP/IP之外,还有一些协议位于OSI五层和六层的,比如,UNIX域套接字,就可以认为是在五层

  3. 二层转发:设备工作在链路层,帧在经过交换机设备时,检查帧的头部信息,拿到目标mac地址,进行本地转发和广播

  4. 三层路由:设备工作在ip层,报文经过有路由功能的设备时,设备分析报文中的头部信息,拿到ip地址,根据网段范围,进行本地转发或选择下一个网关(转发包)
    总:
    首先这里的二层和三层指的都是 OSI 中的对应的层级;
    1)二层转发就意味着是在数据链路层(Data Link Layer)做的转发,基于 MAC 地址,通常指的是交换机;
    2)三层路由意味着是在网络层(Network Layer)做的转发,通常指的是路由器(当然也有路由功能的交换机);
    3)当数据传输到网络层,路由器会检查目的 IP 是否与自己处于同一网段,是则进行二层转发即请求目的主机的 MAC 地址,否则进行三层转发即进入路由的递归查找。

  5. DNS: 属于应用层,其本身并不负责传输、网际的实际操作,只是将域名解析为 IP,方便下一层的使用

  6. CDN: 也应当属于应用层,类似于 DNS 他们都是针对传输后的数据内容的操作,而非实际去处理传输等操作。

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

推荐阅读更多精彩内容