两台计算机之间是如何通信的呢?在含有成千上万的计算机网络中,一台计算机是如何找到另外一台计算机,并将数据准确无误地发送给它呢?今天这篇文章,将通过七层的OSI参考模型来讲解一台计算机是怎样在网络中找到另外一台计算机,并且把数据传送给它的。
1、物理层
一台计算机若要与网络中的另外一台计算机进行信息的传递,首要做的便是在计算机间进行连接,即把这台计算机与其他的计算机通过光纤、电缆、双绞线等介质将它们连接起来,这样才能传输信息。所以说,物理层的作用其实就是将两台计算机连接起来,而后在计算机间以高低电频去传输0、1形式的电信号。
2、数据链路层
但如果计算机间的0、1信号没有一个统一公认的规则的话,计算机是无法解读的。因此,便出现了以太网协议。
图1 比特流
2.1 以太网协议
以太网协议中,一组电信号组成的数据包被称作帧。此外,帧含有其标头和数据两部分,它的大小一般为64-1518个字节,而标头部分的字节固定为18个。因此若需要传送的数据很大的话,就分成多个帧来进行传送。帧的标头一般存放一些说明数据,如发送者、接受者等,而数据部分则存放即将发送给接受者的具体内容。
2.2 MAC地址
图2 网卡
在将一台计算机中的数据通过物理层和链路层发送给另一台计算机的过程中,为区分不同的计算机,便产生了每台计算机的唯一标识--MAC地址。其中,每一台连入网络的计算机都会有自身的网卡,每个网卡都会有一个自身唯一的地址,即MAC地址。
2.3 广播
在网络中,计算机A不仅仅连接着计算机B,还连接着其他的多个计算机。若计算机A已知计算机B的MAC地址,并想要向计算机B发送信息,但计算机A并不知道计算机B在哪一条路线上。于是,便出现了广播。
在同一子网中,计算机A向计算机B发送信息,由于数据包中包含了计算机B的MAC地址(假设此处计算机A已得知计算机B的MAC地址,原因将在下一小节的ARP协议中讲解)。当发送信息时,计算机A通过广播的方式发送,此时在同一子网中的计算机C或D受到收到这一数据包后,会把数据包中的MAC地址取出并进行比较,如果与其自身的MAC地址相同,则接收数据包,否则就丢弃这一数据包。
3、网络层
图3 OSI参考模型
上一节提到子网,其实我们所处的网络是由无数个子网所构成的,而广播的时候也只有同一个子网中的计算机才能够收到。
如若没有子网划分,计算机A使用广播方式发送数据包给计算机B,此时所有计算机都可以收到这个数据包,然后开始对比并舍弃。但网络中如此多的计算机,每一台都收到其他计算机所发送的数据包,是会造成网络崩溃的,因此产生了子网。
此刻问题来了,计算机如何区分哪些MAC地址属于同一子网,而选择进行广播将数据传送给对方,哪些不属于同一子网,而选择将数据传给网关,再让网关进行转发。为解决这一问题,出现了IP协议。
3.1 IP协议
IP协议所定义的地址被称之为IP地址,它有两种版本,IPv4与IPv6,本文仅就IPv4进行讨论。IP地址一般由32位的二进制数组成,将其分成4段的十进制表示地址范围为0.0.0.0-255.255.255.255。而互联网中,每一个计算机都有一个IP地址,这一IP地址被分为前一部分的网络部分与后一部分的主机部分。且网络部分与主机部分各自所占的二进制位数是不定的。
如果两台计算机的网络部分是一样的,便称这两台计算机是在同一子网内的,如192.188.88.1与192.188.88.2;如果它们的网络部分都是192.188.88(共32位),而主机部分都是剩余8位的话,则它们是在一个子网内的。但如何知晓网络部分占几位,主机部分又占几位呢?于是便产生了子网掩码。子网掩码与IP地址同样都是32位二进制数,但子网掩码的网络部分全为1,主机部分全为0。例如上一段例子中,IP地址网络部分为24位,主机部分为8位的话,那其子网掩码为11111111.11111111.11111111.00000000,即255.255.255.0。因此,在得知两个IP地址的子网掩码后,我们便可以判断他们是否都在同一子网中。
3.2 ARP协议
通过两台计算机的IP地址与子网掩码,我们便可以判断他们是否在同一子网内。但计算机A如何知道计算机B的MAC地址呢?这时就出现了ARP协议。
ARP协议是指以广播的方式向同一子网中的所有计算机发送包含接收方IP地址的数据包。子网内的所有电脑接收到数据包后会取出IP地址将其与自身IP进行对比,如若相同,就回复自己的MAC地址,如若不同,就丢弃这一数据包。如此一来,计算机A便知悉计算机B的MAC地址了。
同时,两台计算机的IP如不在同一子网内,此时计算机就会把数据包传送给网关,之后由网关来进行转发与传送。
3.3 DNS服务器
此时还有一个问题便是,我们如何知道想要访问的计算机IP地址呢?因为我们绝大多数人访问网络时,是通过网络域名进行访问的,例如访问中国移动连楹家庭智慧平台时,输入的是https://open.home.10086.cn/这个域名。其实,当我们输入这个域名时,DNS服务器的作用就是解析这一域名,而后返回其对应的IP给计算机。
4、传输层
通过以上介绍的物理层、数据链路层以及网络层之后,我们已经成功地将数据由计算机A传送到计算机B了。但计算机B如何知道这些数据该传给它所安装的哪一个应用程序呢?
这时,端口就出现了。其实就是,我们在从计算机A向计算机B传送数据时,还需指定一个端口,来供特定的应用程序去处理。即,传输层的功能就是去建立端口到端口的通信。
可有时,我们输入IP地址时并没有指定端口,其实,对于一些特定传输协议,大多有对应的默认端口。例如http的传输默认端口是80,而这些数据都会被包含在数据包里。
此外,传输层最常见的两大协议分别为TCP与UCP。其中TCP提供可靠的传输,而UDP提供的是不可靠传输。
5、会话层
负责在网络中的两节点之间建立和维持通信,以及提供交互会话的管理功能,常见的协议有RPC、SQL、NFS。会话层允许两个系统以半双工或全双工的方式互相通信,还允许进程向数据中添加同步点,用于定位错误,避免数据丢失。
6、表示层
如同应用程序和网络之间的“翻译官”。在表示层,数据将按照网络能理解的方案进行格式化,这种格式化也因所使用网络的类型不同而不同。常见的协议有JPEG、ASCII、GIF、DES、MPEG。同时,表示层还可进行压缩以减少需传送的数据量。
7、应用层
应用层位于OSI模型的第七层,作用是为计算机用户提供应用接口,也为用户直接提供各种网络服务。该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。例如支持万维网的HTTP协议,电子邮件系统采用的SMTP协议。
综上所述,OSI参考模型由上到下分成 7层,分别是应用层、表示层、会话层,传输层、网络层、数据链路层和物理层。此外,还有一种更精简的TCP/IP参考模型,其结构由上到下分成4层,分别是应用层,传输层,网络层和网络接口层。但TCP/IP参考模型没有对网络接口层进行细分,也未对服务和协议做明确的区分。因此本文基于OSI参考模型对网络间的计算机通信原理进行讲解。
作者:王显鑫
单位:中国移动智慧家庭运营中心