透视 HTTP 协议
罗剑锋(Chrono)
前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者
63942 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
开篇词 (1讲)
透视 HTTP 协议
15
15
1.0x
00:00/00:00
登录|注册

05 | 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?

OSI到TCP/IP的映射
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
应用层
传输层
网际层
链接层
CDN的工作层次
DNS协议的层次
三层路由
二层转发
HTTP利用TCP/IP协议栈的数据传输
日常交流术语
OSI映射到TCP/IP
OSI分层
TCP/IP分层
数据传输过程的比喻
映射关系
OSI网络分层模型
TCP/IP网络分层模型
课下作业
小结
TCP/IP协议栈的工作方式
网络分层模型

该思维导图由 AI 生成,仅供参考

在上一讲中,我简单提到了 TCP/IP 协议,它是 HTTP 协议的下层协议,负责具体的数据传输工作。并且还特别说了,TCP/IP 协议是一个“有层次的协议栈”。
在工作中你一定经常听别人谈起什么“四层负载均衡”“七层负载均衡”,什么“二层转发”“三层路由”,那么你真正理解这些层次的含义吗?
网络分层的知识教科书上都有,但很多都是“泛泛而谈”,只有“学术价值”,于是就容易和实际应用“脱节”,造成的后果就是“似懂非懂”,真正用的时候往往会“一头雾水”。
所以,今天我就从 HTTP 应用的角度,帮你把这些模糊的概念弄清楚。

TCP/IP 网络分层模型

还是先从 TCP/IP 协议开始讲起,一是因为它非常经典,二是因为它是目前事实上的网络通信标准,研究它的实用价值最大。
TCP/IP 当初的设计者真的是非常聪明,创造性地提出了“分层”的概念,把复杂的网络通信划分出多个层次,再给每一个层次分配不同的职责,层次内只专心做自己的事情就好,用“分而治之”的思想把一个“大麻烦”拆分成了数个“小麻烦”,从而解决了网络通信的难题。
你应该对 TCP/IP 的协议栈有所了解吧,这里我再贴一下层次图。
TCP/IP 协议总共有四层,就像搭积木一样,每一层需要下层的支撑,同时又支撑着上层,任何一层被抽掉都可能会导致整个协议栈坍塌。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

网络通信协议中的“四层”和“七层”指的是TCP/IP和OSI两种网络分层模型。TCP/IP协议栈包括四层:链接层、网际层、传输层和应用层,而OSI模型则分为七层,包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。本文从HTTP应用的角度出发,深入解析了这些层次的含义,并介绍了两种分层模型的映射关系,以及“四层负载均衡”和“七层负载均衡”的概念。通过对HTTP利用TCP/IP协议栈传输数据的比喻,读者能够清晰理解网络通信协议的分层结构及其在实际应用中的作用。文章还提到了TCP/IP协议栈的工作方式,以及HTTP所在的网络分层模型,强调了日常交流中使用的OSI模型和TCP/IP模型的区别。总之,本文通过生动的比喻和清晰的解析,帮助读者深入理解网络通信协议的分层结构及其在实际应用中的作用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《透视 HTTP 协议》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(66)

  • 最新
  • 精选
  • 火车日记
    1 二层转发:设备工作在链路层,帧在经过交换机设备时,检查帧的头部信息,拿到目标mac地址,进行本地转发和广播 2 三层路由:设备工作在ip层,报文经过有路由功能的设备时,设备分析报文中的头部信息,拿到ip地址,根据网段范围,进行本地转发或选择下一个网关 3 dns,网络请求的第一步是域名解析,所以工作在应用层 4 cdn,应用层

    作者回复: ✔️

    2019-06-07
    4
    161
  • 壹笙☞漂泊
    课后题 1、二层转发:二层应该指数据链路层,工作在二层的设备,通过查找到目标MAC地址,进行数据转发 三层路由:三层应该指网络层,工作在三层的设备,通过解析数据包头信息,找到目标IP地址,转发数据 2、DNS处于应用层 3、CDN处于应用层 总结: 1、TCP/IP协议是一个“有层次的协议栈” TCP/IP 2、TCP/IP协议总共有四层,顺序从下往上 链接层->网际层->传输层->应用层 3、链接层 link layer ,负责在底层网络上发送原始数据包,使用MAC地址来标记网络上的设备,所以也叫MAC层 4、网际层 internet layer,IP协议所在层,在链接层的基础上,用IP地址取代MAC地址,把许多局域/广域网连接成虚拟的巨大网络,在这个网络里找设备时只要把IP地址再翻译成MAC地址就可以 5、传输层 transport layer,TCP、UDP协议所在层,这个层次协议的职责是保证数据在IP地址标记的两点之间可靠地传输。 6、TCP和UDP区别: TCP 有状态 需要先建立连接才能发送数据 保证数据不丢失不重复 数据是连续的字节流,有先后顺序 UDP 无状态 不需要先建立连接也可以发送数据 不保证数据一定会发送到对方 数据是分散的小数据包,顺序发、乱序收 7、应用层 application layer,Telnet、SSH、FTP、SMTP、HTTP 8、MAC层的传输单位是帧(frame),IP层的传输单位是包(packet),TCP层的传输单位是段(segment),HTTP的传输单位是消息或报文(message)。统称为数据包 9、OSI网络分层模型 1.第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等; 2.第二层:数据链路层,它基本相当于TCP/IP的链接层; 3.第三层:网络层,相当于TCP/IP里的网际层; 4.第四层:传输层,相当于TCP/IP里的传输层; 5.第五层:会话层,维护网络中的连接状态,即保持会话和同步; 6.第六层:表示层,把数据转换为合适、可理解的语法和语义; 7.第七层:应用层,面向具体的应用传输数据。 10、TCP/IP四层模型和OSI七层网络模型的映射关系 1.第一层:物理层,TCP/IP里无对应; 2.第二层:数据链路层,对应TCP/IP的链接层; 3.第三层:网络层,对应TCP/IP的网际层; 4.第四层:传输层,对应TCP/IP的传输层; 5.第五、六、七层:统一对应到TCP/IP的应用层。 11、*四层负载均衡:工作在传输层上,基于TCP/IP协议的特性,例如Ip地址,端口号等实现对后端服务器的负载均衡 12、*七层负载均衡:工作在应用层上,看到的是HTTP协议,解析HTTP报文里的URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器

    作者回复: 总结的非常全面,amazing!

    2019-06-10
    3
    103
  • wheat7
    疑问:按照tcp/ip详解 tcp/ip模型为五层,老师所说为4层 另外,最后一个常见的层层打包说法,我认为是一个误导,因为每一层MTU都不同,这种说法忽略了每一层对上一层数据的分片,造成了”http”报文加TCP头再加IP头就变成了网络层数据的误导,其实IPV4 MTU为64k,而HTTP和TCP层并没有限制,一帧以太网帧MTU为1500b,同理 此外,每一层数据都可以统称为包,这个说法也存在误导,包含义表示有边界,而如Tcp是面向流的,没有边界

    作者回复: 关于tcp/ip的层次,有说4层,也有说5层的,我说的是最普遍的一种说法,可以参见wiki。 第二个,这只是在应用层的视角做的一个比喻,正文里也说了,省略了很多细节,如果要深究的话可能篇幅不够。 第三个,tcp/ip里都是要切分成数据包来发的,比如tcp的segment,“包”只是为了说起来方便。 看得出来对tcp/ip很精通,有叙述不严谨的地方还请多谅解指正,大家共同进步。

    2019-06-09
    55
  • 1:你能用自己的话解释一下“二层转发”“三层路由”吗? 不能,😂 二层转发、三层路由,貌似第一次听说这两个概念,确实不知道是啥意思。不过拆开的话,到可以说一下自己的理解,首先,说一下自己对二层、三层的理解,网络通信协议非常复杂,如果让我来设计一个网络通信协议我真不知道从哪里着手,假设世界上就只有两台电脑,要这两台电脑通信,或者说聊天,我去这咋办到?能办到的可以称得上是神人,真的!我感觉很神奇,两台机器可以聊天,想想都好神奇,不过事实上他们确实可以。这是怎么做到呢? 首先,电脑只认识0或1,0或1其实可以认为是一种对立统一的矛盾体,简单的把世界一分为二。那在计算机的世界中0或1是什么呢?或者说是怎么体现的呢?核心在于对立统一,比如:用光盘上的ao点表示0那tu就是1,用磁盘上细磁针的北极表示0那南极就是1,用交流电的某个区间表示0那其他区间就是1,用直流电的低电平表示0那高电平就是1,理解了0或1在计算机的世界里是怎么表示的再加上计算机只认识0或1,那使两台计算机谈恋爱就是有可能的啦!只要从一台机器上往另一台机器上发送能表示0或1的东西,再加上约定好发送多少个0或1的组合表示什么意思,那两台计算机就能聊天了,剩下的就是怎么发生0或1的组合?以及约定各种0或1的组合是什么意思?怎么接受0或1的组合?目前世界上仅有两台电脑不用什么DNS、IP、CDN等等,如果世界有100亿台电脑呢?那怎么知道该给谁发信息?怎么表示这么多地址?怎么记住这么多地址?太复杂了,必须采用分而治之的思想,而且要灵活互不影响,所以,网络通信协议就被分成了多层每一层只关心自己的事情,上层依赖下层的接口或数据但是不关心她是怎么实现的,于是就有了链路层、网际层、传输层、应用层。机器毕竟是机器,想谈恋爱的是人类,所以,越靠上对人类越友好,如果仅仅是为了让机器能交流有些层是没有存在的理由的。OK,我觉得我把网络协议的分层结构给说明白了,那二层转发、三层路由是什么呢?二层、三层代表网络协议栈的层次,转发是倒腾数据,路由是倒腾该往哪去。每一层都有许多网络设备,目前不清楚都是啥?工作原理是啥?所以,具体怎么倒腾的细节就不清楚了,这个需要继续学习。 2:你认为上一讲中的 DNS 协议位于哪一层呢? 简化人类的记忆,对人友好靠上,应用层 3:你认为 CDN 工作在那一层呢? 加速人类获取信息的速度,对人友好靠上,应用层

    作者回复: 学习态度认真,awesome!!

    2020-03-24
    5
    22
  • Young
    1. 二层转发,工作在二层的设备(i.e交换机)只认识MAC地址,所以建立MAC地址和端口的映射关系,来决定往哪个端口转发。 2.三层路由,工作在三层的设备(i.e路由器)利用ip地址和port,根据路由表选择最佳路径来转发包。 3.dns属于应用层 4.cdn应该工作在应用层

    作者回复: 说的很对

    2019-06-07
    2
    17
  • 蚂蚁内推+v
    首先感谢老师,之前不太理解七层与四层的对应关系,因此很难去记忆,看了之后恍然大悟。但有点疑惑的是, 最后说的两个凡是中的第一个是说「四层或四层以下」指的是传输层及以下是由操作系统负责的吗?而「七层」指的是应用层到会话层是应用程序负责的吗? 课后作业: 1. 第一次听说这两个概念,查了下资料。请老师帮忙过目、检查,首先这里的二层和三层指的都是 OSI 中的对应的层级;二层转发就意味着是在数据链路层(Data Link Layer)做的转发,基于 MAC 地址,通常指的是交换机;三层路由意味着是在网络层(Network Layer)做的转发,通常指的是路由器(当然也有路由功能的交换机);当数据传输到网络层,路由器会检查目的 IP 是否与自己处于同一网段,是则进行二层转发即请求目的主机的 MAC 地址,否则进行三层转发即进入路由的递归查找。 2. DNS 属于应用层,其本身并不负责传输、网际的实际操作,只是将域名解析为 IP,方便下一层的使用; 3. CDN 也应当属于应用层,类似于 DNS 他们都是针对传输后的数据内容的操作,而非实际去处理传输等操作。

    作者回复: 你理解的很对。 当然,“两个凡是”也不是绝对的,比如dpdk就把tcp协议栈都拿到了操作系统外实现,但大多数情况下传输层以下都由操作系统负责。

    2019-06-09
    15
  • xing.org1^
    传输层这里,tcp和udp也可以用不同公司快递员送货来理解吧,tcp就像一些负责人的公司的快递员,送货时会提前打电话联系问你在不在家,可以保证把你的货物送到手上。udp则像另一种情况,直接拿着东西到你家门口,也不管你家有没有人,如果有就刚好送到你手上,没有在家就给你扔门口走了,他不保证会把快递送到你手上。

    作者回复: 这个比喻不错。

    2019-06-12
    8
  • 业余爱好者
    基础太差,第一题不太懂。 第二题应该是应用层吧。dns域名解析是需要请求dns服务器的,而服务器本质是一个软件(应用),不是操作系统处理,由"两个凡是"定理推出,dns为应用层协议。 第三题不太清楚,个人猜想也是应用层。cdn与dns一样,并非是通信过程必须的一种机制,而只是一个满足特定场景下某种需求的一个"应用",所以应该也是应用层。

    作者回复: 对的,可以参考其他同学的回答。

    2019-06-07
    8
  • 镜花.水月
    1.你能用自己的话解释一下“二层转发”“三层路由”吗? 二层转发:交换机二层的转化设计到两个关健的线程:地址学习线程和报文转发线程 地址学习线程: 1.交换机接收到网段上所有的数据帧,利用数据帧中的源MAC地址建立MAC地址表 2. 端口移动机制:交换机如果发现一个报文的入端口和报文中源MAC地址的所在端不同,就产生端口移动,将MAC地址重新学习到新的端口 3.交换机老化机制:交换机在很长一段时间之内没有接到某主机发出的报文。在该对应主机的MAC地址将会被删除,等下次报文来的时候会重新学习 报文转发线程: 1.交换机在MAC地址表中查找数据帧的目的MAC地址, 如果存在目的MAC地址,就转发该数据帧到目的MAC地址的相应端口, 如果不存在,就向全部端口发送 2.如果交换机收到的报文MAC地址和目的MAC地址所在的端口是同一个,则丢弃该报文 3.交换机向入端口以外的其它所有端口转发广播报文。 报文转发引入 VLAN (虚拟局域网)的概念管理上得到了很好的帮助。限制了局部的网络流量,在一定程度上提高个网络的处理能力 虚拟的工作组,通过灵活的VLAN 设置,把不同的用户划分到不同的工作组,3.安全性的提高,一个VLAN内的用户和其他VLAN 内的用户不能互通。提高安全性。 而且报文转发线程的三点发送端口的范围也得到了限制,从向全部端口发送数据帧,面向从一个局部虚拟网络发送.很好的控制了广播范围 =======三层交换流程======== 三层交换流程 假设现在有两个VLAN 虚拟局域网 VLAN-1, VLAN-2。VLAN-1下有路由接口A, 路由接口B VLAN-2下有路由接口C, AB之间通讯(A向B发起ping请求为例)。 1.A 检查B路由接口的IP地址,发现属于同一个网段。 2.A ---> B ARP请求报文,该报文在VLAN-1内广播。 ARP (Address Resolution Protocol 地址解析协议) 3.B---> A ARP回应报文; 4. A----> B icmp request; 5. B ----> A icmp reply ; ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。 AC之间通讯(A向C发起ping请求) 1.A 检查C路由接口的IP地址,发现不属于同一个网段。 2.A ----> switch (int vlan-1) ARP报文请求,该报文在VLAN-1局域网内广播。 3.网关 ------> A ARP回应报文; 4.A -----> switch icmp request (目的MAC是int vlan-1的MAC, 源MAC是A的MAC, 目的IP是C, 源IP是A) 5.switch收到报文后判断出是三层的报文,检查报文的目的IP地址,发现是在自己直连网段; 6.switch (int vlan-2) ----> C ARP请求报文,该报文在VLAN-2局域网内广播; 7.C------> switch(int vlan-2) ARP 回应报文 8.switch (int vlan2) -----> C icmp request 9C -------> A icmp reply; 从A到B的报文由于在同一个VLAN内部,报文的目的MAC地址将是主机B的MAC地址,而从A到C的报文,要跨越VLAN,报文的目的MAC地址是设备虚接口VLAN1上的MAC地址。因此交换机区分二三层报文的标准就是看报文的目的MAC地址是否等于交换机虚接口上的MAC地址。 2.你认为上一讲中的 DNS 协议位于哪一层呢? DNS (Domain name System 域名系统)是基于UDP,UDP是属于传输层,DNS在传输层之上,所以是在应用层 3.你认为 CDN 工作在那一层呢? CND (Content Delivery Network 内容分发网络) 是基于TCP,也是属于传输层,CDN也是属于应用层

    作者回复: great

    2022-01-22
    4
  • HeGuang
    老师慢慢写,太难的话看不懂了

    作者回复: 多谢支持。

    2019-06-07
    4
收起评论
显示
设置
留言
66
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部