概述
前言
计算机是我们最熟悉的工具,地球上有很多计算机,那我们的两台计算机是如何实现相互传递信息的呢?
很多人肯定说,这是这是因为计算机的五层模型,但你知道他们的作用吗?
下面就是这五层模型
说实话,这五层模型是十分复杂的,但是今天我要用最简洁的语言,来讲解一下两台计算机是如何通信的,就算你没有学过计算机网络也能听懂
1.物理层
一台计算机和另一台计算机要通信要通信,肯定要将两台计算机连起来呀
也就是,物理层将两台计算机连接起来,然后通过高低电频来传输0,1这样的电信号
2.数据链路层
前面说了,物理层只是单纯的连接两个计算机,并且在其之间传输传输电信号,那如果这电信号没有规范,那谁看的懂呢?
所以,就有了一套规则可以让计算机读懂,于是就有了以太网协议
2.1.以太网协议
以太网协议规定,一组电信号就是一个数据包,我们把这个数据包成为‘帧’。每一个帧由 标头(Head) 和 数据(Data) 两部分组成
标头(Head) | 数据(Data) |
---|
标头存放着发送者和接受者的信息,而数据就是存放着要发送的数据了
把一台计算的的数据通过物理层和链路层发送给另一台计算机,究竟是谁发给谁的,计算机与计算机之间如何区分,你总得给他们一个唯一的标识吧?
于是,MAC 地址出现了。
2.2.MAC地址
连入网络的每一个计算机都会有网卡接口,每一个网卡都会有一个唯一的地址,这个地址就叫做 MAC 地址。计算机之间的数据传送,就是通过 MAC 地址来唯一寻找、传送的。
2.3. 广播与ARP协议
2.3.1广播
再想一个问题,计算机 A 不仅连着计算机 B,而且计算机 A 也还连着其他的计算机。 虽然计算机 A 知道计算机 B 的 MAC 地址,可是计算机 A 却不知道知道计算机 B 是分布在哪边路线上,为了解决这个问题,于是,有了广播的出现。
在同一个子网中,A会向B发送数据包,这个数据包会包含B的MAC地址,当发送是,A是通过广播的形式发送的,此时B、C、D都会接收到这个数据包,然后收到这个数据包的计算机,会把数据包的 MAC 地址取出来,与自身的 MAC 地址对比,如果两者相同,则接受这个数据包,否则就丢弃这个数据包。
这种方式就像你玩的晚,妈妈们通过广播的形式叫孩子回家吃饭,如果这个名字是你,你就理会一下,如果不是你,你就当作听不见。
2.3.2ARP协议
那我们来思考一个问题,A是怎么知道B的MAC地址的呢?这个时候就得由 ARP 协议这个家伙来解决了,不过 ARP 协议会涉及到IP地址,我们下面才会扯到IP地址。因此我们先放着,就当作是有这么一个 ARP 协议,通过它我们可以知道子网中其他计算机的 MAC 地址。
3.网络层
上面我们说了子网这个词,我们身处的网络由无数个子网构成,在广播的时候,也只能在同一个子网内进行。
假如没有子网这种划分的话,计算机 A 通过广播的方式发一个数据包给计算机 B , 其他所有计算机也都能收到这个数据包,然后进行对比再舍弃。世界上有那么多它计算机,每一台计算机都能收到其他所有计算机的数据包,那就不得了了。那还不得奔溃。 因此产生了子网这么一个东西。
那么问题来了,我们是如何区分MAC地址属于哪一个子网呢?假如是同一个子网,那我们就用广播的形式把数据传送给对方,如果不是同一个子网的,我们就会把数据发给网关,让网关进行转发。
为了解决这个问题,于是,有了 IP 协议。
3.1IP协议
IP协议,它所定义的地址,我们称之为IP地址。IP协议有两种版本,一种是 IPv4,另一种是 IPv6。不过我们目前大多数用的还是 IPv4,我们现在也只讨论 IPv4 这个版本的协议
每一台联网的计算机都有一个IP地址,IP地址分为两部分,前面代表网络部分,后面代表主机部分,并且网络部分和主机部分所占用的二进制位数是不固定的。
那么问题又来了,既然不固定,那怎么知道网络部分是占几位,主机部分又是占几位呢?也就是说,两个IP地址,我们如何判断他俩是否在同一个子网中呢?
这就引申出来一个关键字:子网掩码
网掩码和IP地址一样也是 32 位二进制数,不过它的网络部分规定全部为 1,主机部分规定全部为 0
例如:192.168.43.1 和 192.168.43.2,这两个IP地址的网络部分为 24 位,主机部分为 8 位的话,那他们的子网掩码都为 11111111.11111111.11111111.00000000,即255.255.255.0
那我们知道了子网掩码,如何来判端IP地址是否处于同一个子网中呢?我们只需要把 IP 地址与它的子网掩码做与(and)运算,然后把各自的结果进行比较就行了,如果比较的结果相同,则代表是同一个子网,否则不是同一个子网。
例如,192.168.43.1和192.168.43.2的子码掩码都为255.255.255.0,把IP与子码掩码相与,可以得到他们都为192.168.43.0,进而他们处于同一个子网中。
3.2ARP协议
接着上面没有讲完的继续讲,计算机A要给计算机B发送数据时。我们可以通过ARP协议来得到计算机B的MAC地址。那ARP协议是如何工作的呢?
例如:计算机A给计算机B要发送数据,此时A还不知道B的MAC地址,这时A就会给子网的每一个计算机发送包含接收方IP地址的数据包,对方收到这个数据包之后,会取出IP地址与自身的对比,如果相同,则把自己的MAC地址回复给对方,否则就丢弃这个数据包。这样,计算机A就能知道计算机B的MAC地址了。
3.3 DNS服务器
那么问题又来了,我们时如何知道接收方的IP地址的呢?
当我们想要访问某个网站的时候,我们可以输入IP来进行访问,但是我相信绝大多数人是输入一个网址域名的,例如访问百度是输入 www.baidu.com 这个域名。其实当我们输入这个域名时,会有一个叫做DNS服务器的家伙来帮我们解析这个域名,然后返回这个域名对应的IP给我们的。
因此,网络层的功能就是让我们在茫茫人海中,能够找到另一台计算机在哪里,是否属于同一个子网等。
4.传输层
通过物理层、数据链路层以及网络层的互相帮助,我们已经把数据成功从计算机A传送到计算机B了,可是,计算机B里面有各种各样的应用程序,计算机该如何知道这些数据是给谁的呢?这个时候,**端口(Port)**这个家伙就上场了,也就是说,我们在从计算机A传数据给计算表B的时候,还得指定一个端口,以供特定的应用程序来接受处理。
传输层最常见的两大协议是 TCP 协议和 UDP 协议,其中 TCP 协议与 UDP 最大的不同就是 TCP 提供可靠的传输,而 UDP 提供的是不可靠传输。
也就是说,传输层的功能就是建立端口到端口的通信。相比网络层的功能是建立主机到主机的通信。
5.应用层
终于到最后一层了,应用层是距离我们用户最近的一层
虽然我们收到了传输层传来的数据,可是这些传过来的数据五花八门,有html格式的,有mp4格式的,各种各样。你确定你能看的懂?
因此我们需要指定这些数据的格式规则,收到后才好解读渲染。例如我们最常见的 Http 数据包中,就会指定该数据包是 什么格式的文件了。
总结
希望可以帮助一些同学,理清楚各个层之间的关系和作用,希望我的讲解能让你对计算机之间数据的传输有个大概的了解。
最后
以上就是细腻狗为你收集整理的计算机网络五层模型你真的弄明白了吗?的全部内容,希望文章能够帮你解决计算机网络五层模型你真的弄明白了吗?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复