您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

网络分层:构建信息交流的桥梁

时间:2023-09-09 15:48:13  来源:微信公众号  作者:灵墨AI探索室

/ 引言 /

本系列即将结束,最后一章将仔细讨论网络系统,这是面试中经常被问及的一个知识点,也是工作中常遇到的一个系统知识点。那么为什么我们需要网络系统呢?我们之前提到过,进程间通信有许多方法,其中一种是通过套接字(socket)进行跨网络通信。这意味着我们不再仅限于内部系统调用,而是需要与其他人进行沟通,这也是互联网的本质。然而,如果我们不能使用共同的语言进行沟通,比如你说中文,对方说鸟语,那么你们将无法有效地交流。因此,我们需要一个统一的语言,也就是网络系统,它通过一系列协议确保双方能够正常有效地进行沟通。这种约定好的格式就是网络协议.NETworking Protocol)。接下来,我们将详细讨论网络系统的相关内容。

/ 网络为什么要分层? /

首先,我将简单地解释一下,然后再进行详细说明。为什么要分层?其实,这与你在编写 JAVA 代码时为什么要使用责任链设计模式是一样的。每一层只负责自己的任务,如果符合我们所需的逻辑,就继续往下一层推进,直到问题得到解决。难道不分层也可以吗?实际上不行,因为我们的设计模式只存在于代码层面,并不能仅凭一些混乱的代码和一堆 if-else 语句就解决问题,毕竟我们还需要硬件的支持。

接下来,让我们构建一个相对简单的场景,并在后面的内容中基于这个场景进行讲解。

假设我们有三台机器,分别是 linux 服务器 A、Linux 服务器 B,它们位于不同的网段,并通过中间的 Linux 服务器作为路由器进行转发。

说到网络协议,我们还需要简要介绍一下两种网络协议模型。一种是 OSI 的标准七层模型,它包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。另一种是业界标准的 TCP/IP 模型,它包括网络接口层、网络层、传输层和应用层。这两种模型的对应关系如下图所示:

为什么网络要分层呢?这是因为网络环境过于复杂,不是一个能够集中控制的体系。全球范围内有数以亿计的服务器和设备,它们各自拥有自己的体系结构和功能。然而,通过将网络划分为多个层次和组合,使用统一的网络协议栈,可以满足不同服务器和设备之间的通信需求。

我们这里简单介绍一下网络协议的几个层次。让我们从第三层开始,也就是网络层,因为这一层包含了我们熟悉的 IP 地址。因此,这一层也被称为 IP 层。

我们通常看到的 IP 地址的格式是这样的:192.168.1.100/24。斜杠前面是 IP 地址,这个地址被点分隔为四个部分,每个部分由 8 位二进制数字组成,总共是 32 位。斜线后面的 24 表示,在这 32 位中,前 24 位是网络号,后 8 位是主机号。

为什么要这样划分呢?我们可以想象一下,虽然全世界都组成了一个大的互联网,你可以访问美国的网站,但这个网络并不是一个整体。你所在的小区有一个网络,你所在的公司也有一个网络,联通、移动、电信等运营商也都有各自的网络。因此,整个大网络被划分为许多小的网络。

那么如何区分这些网络呢?这就是网络号的概念。一个网络中会有多个设备,这些设备的网络号相同,但主机号不同。你可以观察一下你家里的手机、电视和电脑,它们的主机号是不同的,但前面几位的网络号是相同的,而且它们都连接到同一个网关。

连接到网络上的每个设备都至少有一个 IP 地址,用于定位该设备。无论是旁边同学的电脑还是遥远的电商网站,都可以通过 IP 地址进行定位。因此,IP 地址类似于互联网上的邮寄地址,具有全局定位功能。但要记住,你的 IP 地址并不是永恒不变的。即使你使用手机流量,当你换一个地方时,基站也会改变,因此你的 IP 地址也会改变。所以现在你明白为什么可以定位到你的设备了吧。

即使你要访问美国的某个地址,也可以从你身边的网络出发,通过打听和询问的过程,经过多个网络,最终发现中国的网络防火墙阻止了访问。开个玩笑,实际上只要是国内的地址,最终也可以到达目标地址,就像快递员送包裹一样。打听和询问的协议也在第三层,称为路由协议(Routing protocol),它负责将网络包从一个网络转发给另一个网络的设备,这些设备被称为路由器。

总而言之,第三层的主要功能是将网络包从一个起始 IP 地址,沿着路由协议指定的路径,通过多个网络,经过多个路由器的转发,到达目标 IP 地址。

从第三层开始往下看,第二层是数据链路层,也称 mac 层。MAC 是每个网卡都有的唯一硬件地址(不绝对唯一,相对大概率唯一即可),虽然这个地址没有全局定位功能。

可以将 MAC 地址类比为外卖小哥送外卖时的手机尾号。尽管手机尾号无法准确找到你家的位置,但它在本地具有定位功能,主要通过“吼”的方式实现。当外卖小哥到达你所在楼层时,会大声喊出:“尾号 xxxx 的,你的外卖到了!”MAC 地址的定位功能仅限于同一网络内的 IP 地址之间,可以通过 MAC 地址定位和通信。要通过 IP 地址获取 MAC 地址,需要使用 ARP 协议,在本地发送广播包,也就是“吼”,以获取 MAC 地址。实际上,ARP 协议有缓存功能,你可以使用 arp -a 命令查看你的 windows 机器的缓存地址。

由于同一网络内的机器数量有限,通过 MAC 地址的好处在于简单。只要匹配到 MAC 地址,就接收该数据包;无法匹配到 MAC 地址,就不接收。没有像路由协议那样复杂的协议。当然,MAC 地址的作用范围仅限于本地网络,因此一旦跨网络通信,尽管 IP 地址保持不变,但是 MAC 地址在经过每个路由器时都会更换一次。

让我们再看一下前面的图。服务器 A 向服务器 B 发送网络数据包,源 IP 地址始终是 192.168.1.100,目标 IP 地址始终是 192.168.2.100。但在网络 1 中,源 MAC 地址是 MAC1,目标 MAC 地址是路由器的 MAC2。路由器转发后,源 MAC 地址变为路由器的 MAC3,目标 MAC 地址变为 MAC4。

所以在网络的第二层,主要负责处理本地网络中服务器之间的定位和通信机制,也就是数据包在本地网络内的传输和交换。需要注意的是,这个机制仅限于本地网络内部的通信。

我们再往下看,网络的第一层是物理层,这一层主要涉及物理设备。例如,与电脑连接的网线以及我们能够连接上的 wifi 都属于物理层的设备。物理层负责将数据转换为电信号或者无线信号,在网络中进行传输。

让我们进一步深入了解网络分层的细节。从第三层开始,第四层就是传输层,其中包括两个著名的协议,即 TCP 和 UDP。尤其是 TCP,在 IP 层的代码逻辑中,仅负责将数据从一个 IP 地址发送到另一个 IP 地址,而不关心丢包、乱序、重传、拥塞等问题。这些问题的处理逻辑被写在传输层的 TCP 协议中。

我们经常说的 TCP 三次握手、四次挥手等,正是因为底层的几个协议都不负责传输的可靠性。网络包可能会丢失,但是 TCP 层通过各种编号和重传机制,使本来不可靠的网络看起来变得可靠。因此,哪有什么应用层岁月静好,只不过 TCP 层帮你负重前行。

传输层再往上一层是应用层,这一层包括我们常见的 HTTP、FTP 和 Java Servlet 等。二层到四层的处理都在 Linux 内核中进行,而应用层如浏览器、NginxTomcat 则运行在用户态。内核对网络包的处理并不区分应用。

从第四层传输层往上,我们需要引入端口的概念。因为每个应用程序都需要占用一个端口来区分哪些网络包是发给它的。不同的程序需要监听不同的端口,例如 Nginx 可以监听 80 和 443 端口,Tomcat 监听 8080 端口,Nacos 监听 8848 端口等。

应用层和传输层之间的通信机制实际上是通过内核中的系统调用来完成的,即 socket。因此,有人会问 Socket 属于哪一层,实际上它不属于任何一层,它只是一个由操作系统提供的系统调用接口。它属于操作系统的概念,而不是网络协议分层的概念。只是操作系统选择以一种模式实现网络协议处理,即将二到四层的处理代码放在内核中,而七层的处理代码由应用自己完成。这两者之间需要跨越内核态和用户态之间的通信,所以需要一个系统调用来完成这个衔接,这就是 Socket。

/ 总结 /

网络系统是面试和工作中常被问及的一个知识点。网络分层的核心思想是将网络划分为多个层次和组合,使用统一的网络协议栈,满足不同设备之间的通信需求。网络的第三层是网络层,负责将网络包从一个起始 IP 地址通过多个网络、经过多个路由器的转发,到达目标 IP 地址。第二层是数据链路层,负责本地网络内服务器之间的定位和通信机制。第一层是物理层,负责将数据转换为电信号或无线信号,在网络中进行传输。从第三层开始往上,第四层是传输层,包括 TCP 和 UDP 协议,处理网络传输的可靠性。第五层是应用层,包括 HTTP、FTP 和 Java Servlet 等。应用层和传输层之间的通信通过系统调用接口 Socket 完成。



Tags:网络分层   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
网络分层:构建信息交流的桥梁
/ 引言 /本系列即将结束,最后一章将仔细讨论网络系统,这是面试中经常被问及的一个知识点,也是工作中常遇到的一个系统知识点。那么为什么我们需要网络系统呢?我们之前提到过,进程...【详细内容】
2023-09-09  Search: 网络分层  点击:(265)  评论:(0)  加入收藏
计算机网络分层模型中每层有哪些作用?
网络层的传输单位是数据报(包),任务是为不同网络主机之间提供通信服务,把数据从源端传到目的端。使用 IP 地址来标识网络上的设备。​一.计算机网络的分层在计算机网络体系中,采...【详细内容】
2023-02-13  Search: 网络分层  点击:(253)  评论:(0)  加入收藏
网络分层模型及HTTP/TCP/IP/Socket介绍
百度百科OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO组织在1985年研究的网络互联模型。该体系结构标准定义了网络互联的七层框架(物理层、数...【详细内容】
2019-11-27  Search: 网络分层  点击:(570)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(11)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(31)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(35)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(37)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(69)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(59)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(40)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(144)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(48)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(76)  评论:(0)  加入收藏
站内最新
站内热门
站内头条