diff --git a/network/network-models.md b/network/network-models.md new file mode 100644 index 0000000..dfc2df8 --- /dev/null +++ b/network/network-models.md @@ -0,0 +1,55 @@ +# 网络分层模型 + +模型这些抽象的概念,用于帮助自己理解一些网络架构,但是发现面对一些名词或者概念时总是无法对上,想整理记录一下。 + +## OSI 模型 + +OSI 模型的七层包括: + +- 7. 应用程序层:由软件应用程序生成并可由其使用的数据。该层使用的主 要协议是 HTTP。 +- 6. 表示层:将数据转换为应用程序可以接受的形式。一些机构认为 HTTPS 加密和解密在该层进行。 +- 5. 会话层:控制计算机之间的连接(这也可以由 TCP 协议在第 4 层处理)。 +- 4. 传输层:提供在两个连接设备之间传输数据以及控制服务质量的方法。这里使用的主要协议是 TCP 和 UDP。 +- 3. 网络层:处理不同网络之间的数据路由和发送。该层使用的最重要协议 是 IP 和 ICMP。 +- 2. 数据链路层:处理同一网络中不同设备之间的通信。如果第 3 层比作一封邮件上的地址,那么第 2 层就指明了该地址的办公室号码或公寓号码。以 太网是这里最常用的协议。 +- 1. 物理层:数据包被转换为电脉冲、无线电脉冲或光脉冲,并以比特(信 息的最小单位)的形式通过电线、无线电波或电缆进行传输。 + +> 想起考试时背的一串 `应表会传网数物`。 + +[Cloudflare 的一篇文章][1] 中提到: + +> 请务必记住,OSI 模型是对使得 Internet 正常工作的众多流程的概念化的抽象描述,阐述模型以及将其应用到现实世界中的 Internet 时,有时是主观的。OSI 模型有助于人们讨论网络设备和协议,确定哪些协议由哪些软件和硬件使用,并大致显示 Internet 的工作方式。但它并未严格地分步定义 Internet 连接的普遍运作方式。 + +没必要去严格的根据分层模型去学习 Internet 的工作方式,对其有一个大致的了解即可。比如,经常会被询问到 xxx 协议属于哪一层? +我觉得这个问题不太好回答,引用[其他博客][2]中的说明: + +> 我觉得这种讨论没有意义。因为我们实际上在讨论两个东西而且试图将两个概念融合在一起。即: +> +> 协议工作在几层(基于几层实现)? +> 协议为几层提供服务? +> +> 如果分开讨论,就清楚很多了。ARP 基于二层(意味着只用到了二层的功能,不需要三层的东西就可以工作)实现,为三层提供服务,帮助找到 IP 对应的 MAC 地址。 +> 我们可以给很多有类似争议的协议定义: +> +> TLS 基于四层实现,为应用层提供服务; +> TCP 基于三层实现,为应用层提供服务; +> ICMP 工作在三层,为三层提供服务; +> EIGRP 和 OSPF 基于 IP 协议,为三层提供服务; +> BGP 基于四层实现,为三层提供服务(是不是很神奇?因为 BGP 通过 TCP 交换路由信息,为三层提供转发路由); + +## TCP/IP 模型 + +- 4. 应用程序层:这大致相当于 OSI 模型中的第 7 层。 +- 3. 传输层:对应于 OSI 模型中的第 4 层。 +- 2. 互联网层:对应于 OSI 模型中的第 3 层。 +- 1. 网络访问层:结合了 OSI 模型中第 1 层和第 2 层的过程。 + +## 分层的意义 + +- [为了让每一个协议可以处理部分的问题,不同的协议之间可以互相工作][2] +- [方便排查问题,可以将问题定位在某一层][2] + +--- + +[1]: https://www.cloudflare.com/zh-cn/learning/network-layer/what-is-the-network-layer/ "什么是网络层?|网络与 Internet 层" +[2]: https://www.kawabangga.com/posts/6295 "理解网络的分层模型"