首页 > 编程知识 正文

文章条理清晰层次分明(文章分层有哪些方法)

时间:2023-05-03 23:22:19 阅读:72241 作者:2437

前言:如果你对网络分层不太了解,当你听到三层协议、五层协议的时候,会不会出现雾霾呢? 你不知道什么是层,什么是协议吗? 因为连网络通信都不太了解,这篇文章一定很快就能学到。 没有收获就不要夸奖我。

在深入学习网络、通信和协议之前,先了解基本概念。

什么是互联网? 网络是通过物理链路连接工作站或主机,并配置数据链路以实现资源共享和通信。 这里的物理链路,不仅是我们能看到的双绞线、光纤,也可能是电波。

网络通信狭义上可以理解为计算机与计算机之间基于网络进行的数据交换。 当然,也有人在这个过程中与计算机进行交流。

像人与人的交流一样,既然想“聊天”,最少也要有一个基本条件。 例如,我用的是中文和英语。 这是一个比较广泛的协议。 在计算机通信中也几乎一样,就是约定我们交互时的数据格式是什么,每个数据项是什么意思,收到后应该怎么处理,或者怎么应对。

暂且不谈官方的定义,简单来说,互联网协议是在互联网上传输数据的规则。 当然,协议非常多,包括TCP、UDP、IP协议和FTP协议。 使用这些协议的最基本要求是发送方和接收方使用的协议必须匹配。 否则,不就是鸡和鸭的故事吗?

在描述某些级别的协议时,通常一个设备的第x层与另一个设备的第x层通信的规则是第x层协议。

网络分层模式就像一家公司,有上司、经理、领导和成员,不同层次的沟通方式也不一样,但最终是自上而下实施的。 与上司沟通相当于APP沟通层间的沟通,但上司的目标需要以下经理的支持,就像APP沟通层需要传输层的支持一样:

了解网络分层的基本作用,看看网络分层的几种方式。 标准的七层网络层次,即OSI层模型。 TCP/IP5层模型和TCP/IP4层模型从OSI层进行了优化。

通常,对用户来说使用最多的是APP应用层,在很多情况下,可能无法感知到其他层的存在。

那么,为什么要分层呢? 这样和我们设计软件体系结构的思想差不多,就是具有高凝聚、低耦合、复用、可扩展性等特性。 如果不是分层的,请考虑在业务或合同需要更改时,只能修改或扩展整个系统。 分层后,可以很容易地分离不同功能的模块,修改对应的模块即可。 此外,不同层可以被复用,并根据该层的协议进行处理。

接下来,主要介绍TCP/IP的5层模型。

在网络分层和协议的基础上了解了协议和网络分层。 现在,让我们在图中比较一下常见协议位于哪个层。

在一个网络分层和物理设备图中,让我们看看通常支持不同网络分层的硬件设备。

物理层理解了上述基础知识,让我们来看看各层的作用吧。 从功能相关性出发记住网络层次是一种非常好的记忆方法。 先看看物理层吧。

该层是连接各网络设备,能够传输0 1 0 1的电信号

物理层,顾名思义,是连接电脑的物理连接,基本上通过双绞线、光纤、电波来实现物理层。 连接网络设备后,可以在此基础上发送高低电压(电信号)进行通信。 高电压对应于数字1,低电压对应于数字0。 0、1信号本身没有现实意义,需要使用不同的层来规定不同的0、1组合的意义。

数据链路层的简单电信号0和1没有任何意义,必须规定电信号多少位一组,各组有什么意义。 数据链路层的功能是“以太网协议”,通过规定一系列协议来定义电信号的分组方法,通过规定不同组表示什么意思,使两个计算机都能够识别。

以太网协议规定一组电信号组成一个包,该包称为帧。 每一个框架由两部分组成:标题(Head )和数据(Data )。

其中,Head包含数据包的说明信息,如发件人、收件人和数据类型。 Data是数据包的具体内容。

Head部分包含固定的18字节。

发件人/源地址,6字节; 收件人/目标地址、6字节数据类型、6字节。 Data部分的长度最短为46字节,最长为1500字节。 因此,“整个帧”最短为64字节,最长为1518字节。 如果数据很长,则需要分割成多个帧进行发送。

如果有数据包的定义,计算机如何识别谁是谁? 怎么知道对方的地址? 这与MAC地址和广播有关。

在MAC地址以太网中,所有要连接到网络的设备都需要网卡。 数据包的发送地址和接收地址是网卡的地址,即MAC地址。

MAC地址被标识为网络中计算机设备的唯一标识符,以十六进制形式自计算机制造商生产的MAC地址,而MAC地址在理论上是唯一的。 因此,许多软件在检查设备的唯一性时会使用MAC地址。

MAC地址的长度是48位二进制数,通常用12位十六进制表示。 前6位是制造商编号,最后6位是流水线编号。

如果有MAC地址,是在两台设备之间找到对方进行通信吗?

如果广播具有MAC地址,则同一网络中的两台主机可以进行通信。

在同一子网内,计算机1向计算机4发送包括接收方MAC地址的分组。 计算机1将发送到本网络中的所有计算机,并通过广播发送。 在这种情况下是一样的

子网中的每台计算机 (包括2、3)都会收到这个数据包的。然后每台计算机都会把数据包的MAC地址取出来,与自身的MAC地址进行对比,如果两者相同,则接受这个数据包,否则就丢弃这个数据包。计算机4发现包含自己的MAC地址,于是就进行响应。

网络层

以太网通过广播这种很原始的形式,解决了两台计算机之间的通信问题。但很明显,它不是把数据包准确的送达接收方,而是向网络中所有的计算机发送数据包。

而我们所处的网络是由无数个子网络构成的。即便忽略掉子网的存在,如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,整个网络是会奔溃的。

而实现的网络又是由无数个子网络构成的,以太网采用广播方式发送数据包,效率低且发送的数据只能局限在发送者所在的子网络。

此时就需要另想办法,如果是同一个子网络,就采用广播方式发送,如果不是在同一个子网 , 那就通过网关和路由向不同广播域/子网分发数据包。所以就有了网络层,它是处理分组在网络中的活动,比如分组的选路。

网络层引入一套新的协议用来区分不同的广播域/子网,于是就有了IP 协议。

IP 协议

网络地址协议,叫做IP协议。相对于上面讲到的MAC地址, IP 地址可以理解成逻辑地址,也就是说 MAC 地址是物理上的地址,是固定的。IP 地址是动态分配的,是不固定的。现在广泛采用的IPv4地址,同时IPv6也在不断的发展壮大。

通过IP协议发送的数据,就叫做IP数据包,也分为“包头”和“数据”两个部分:“包头”部分主要包括版本、长度、IP地址等信息;“数据”部分则是IP数据包的具体内容。IP数据包的”包头”部分的长度为20到60字节,整个数据包的总长度最大为65535字节。

IPv4地址是由32位的二进制数组成,一般把它分成4段的十进制表示,地址范围为0.0.0.0~255.255.255.255。

IP地址分成两部分:网络部分(标识子网)和主机部分(标识主机)。网络部分和主机部分所占用的二进制位数是不固定的。

IP地址段只是标识了IP地址的种类,从网络部分或主机部分都无法辨识一个IP所处的子网。如果两个IP的网络部分相同,则说明它们处于同一个子网中。例如192.168.33.1和192.168.33.2,如果它们的网络部分为24位,主机部分为8位,网络部分都为 192.168.33,处于同一个子网中。

但如果像192.16.10.1与192.16.10.2,并不知道网络部分和主机部分各几位,就不能确定是否处于同一子网。于是就有了子网掩码。

子网掩码

子网掩码就是用来标识同一局域网中的 IP 地址的信息的。子网掩码也是由 32 个二进制位组成的,但是只能用 0 或 1 来表示,如11111111.11111111.11111111.00000000。

子网掩码的网络部分全部为1,主机部分全部为0。两台计算机的 IP 地址分别和子网掩码进行一种AND 运算(两个数位都为1,运算结果为1,否则为0),如果结果相同,两台计算机就在同一局域网中,否则就不在同一局域网中。

比如IP地址为192.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

假设192.168.33.1和192.168.33.2的子码掩码都为255.255.255.0,把IP与子码掩码相与,结果都为192.168.33.0,那么它们说明处于同一个子网中。

ARP协议

有了IP协议,可以判断计算机属于哪个子网了。在链路层时我们通过MAC地址进行通信的,现在只有目标的IP地址,如何才能拿到它的MAC地址呢?这就又要用到ARP协议。

ARP协议可以通过广播的方式发送数据包,获取目标主机的MAC地址。具体实现为:发送端主机通过广播的方式发送数据包,所有主机接收后拆开包,如果发现目标IP为自己就响应,返回MAC地址。

数据包格式:(发送端的MAC地址,目标MAC地址,发送端IP地址,目标IP地址,数据)。

传输层

经过数据链路层和网络层的支持,我们已经可以正常在两台计算机之间进行通讯了,但是计算机会同时运行着许多程序,比如同时开着QQ与WX,那么怎么区分消息是QQ的还是WX的呢?

通常我们会看到计算机上运行的不同程序都会分配不同的端口,而传输层的功能就是建立端口到端口的通信,使得数据能够正确的传送给不同的应用程序。

端口是每一个使用网卡的程序的编号,每一个端口号标志一个可执行程序。端口号是0到65535之间的一个整数,正好16个二进制位,0-1023为系统占用端口,其他应用程序只能选用大于1023的端口。

至此,用IP + 端口,已经能实现唯一确定互联网上一个程序,进而实现网络间的程序通信了。

传输层最常见的两大协议是 TCP(Transmission Control Protocol,传输控制协议) 协议和 UDP(User Data Protocol,用户数据报协议) 协议。

UDP协议就是在数据前面加上端口号,“包头”部分主要定义了发出端口和接收端口,一共只有8个字节。“数据”部分就是具体的内容。总长度不超过65,535字节,正好放进一个IP数据包。

UDP协议简单且容易实现,这是它的优点。但同样也有缺点,就是进行通信时不知道对方是否接收到数据了。此时需要再定义一套规则,让其可以和对方进行确认,那么TCP出现了。

TCP数据包没有长度限制,理论上可以无限长,可是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,也就是小于65,535字节,这也确保单个TCP数据包不必再分割。像我们通常说 TCP 三次握手和四次挥手,就是传输层完成的。关于TCP实现部分的内容比较多,我们这里就不再拓展了。

TCP的优点是能够确保数据不会遗失,安全可靠的传输。缺点是过程复杂、实现困难、消耗较多的资源。

应用层

终于说到应用层了,应用层算是我们最经常看到的一层了。应用层的功能就是规定了应用程序的数据格式。我们经常用的电子邮件、HTTP协议以及FTP数据的格式,就是在应用层定义的。

应用层的主要协议有:FTP(文件传送协议、21端口)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议、25端口),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol、80端口)。

正反俄罗斯套娃

最后,我们以HTTP请求为例,来梳理一下整个网络分层中各种的职责与处理流程。在整个通信过程中,就像俄罗斯套娃一样,一层层的包装起来,然后再一层层的打开。

小结

经过这篇文章,我们从最下方的物理层到最上方的应用层,按照故事性的形式进行了讲解,想必你已经有一个感性的认识了,是不是发现再也不用死记硬背网络分层了?你就说值不值得来个赞?

程序新视界
公众号“ 程序新视界”,一个让你软实力、硬技术同步提升的平台,提供海量资料

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。