我们每天都在使用互联网聊天、逛论坛、看电影,但你可曾想过,这看似自然而然的事情,到底是怎样实现的呢?
比如,我想通过浏览器去访问百度,搜索自己想要的信息,浏览器是如何知道我要做这些,又是如何实现的呢?想要弄清这个问题,必须了解网络构成的五层模型和相互之间的一系列协议。
概述
人们通常情况下,会将互联网分为五层结构,由下而上分别为:实体层、链路层、网络层、传输层和应用层。
每一层之间都有不同的形态和构成机制,比如最底层的实体层是光缆、双绞线这些硬件,最上层的应用层却是浏览器、邮箱等各种软件,所以如果想实现不同层之间的联系,必须遵守不同层之间的规则。这些规则统称为“互联网协议”,它们是互联网的核心。
实体层
一台计算机要想访问其他计算机,首先要做是把这台计算机和其他计算机连起来,这样我们才能收发数据。因此,我们需要通过光缆、双绞线、无线电波等方式实现计算机之间的相互连接,这些硬件就构成了网络的实体层。它规定了网络的电气特性,负责0和1电信号的传送。
链路层
实体层传输的是0和1电信号,计算机解读不了,我们必须为其制定一套规则来进行传输,于是就有了以太网协议。1.以太网协议以太网协议规定,一组电信号构成一个数据包,我们称之为帧,每个帧由标头(Head)和数据(Data)两部分构成。标头包含了发送者、接收者和数据类型等说明项,相当于信封上的信息;"数据"则是数据包的具体内容,相当于信中具体内容。
2.MAC地址计算机之间如何区分将数据发送给谁呢?这时候我们就要用到MAC地址。以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,称为MAC地址。
每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。有了MAC地址,就可以定位网卡和数据包的路径。
网络层
从理论上讲,只要我们获取MAC地址,就可以对任何一台计算机进行信息的发送,但是实际操作起来却有很大的困难,还需要通过其他方式进行下一步的信息传递。1.广播以太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断是否为接收方。
上图中,1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接收这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)。
这种方式效率比较低,而且仅限发送者所在的子网络中。所以,我们除了知道对方的MAC地址外,还要知道它属于哪个子网络,才能进行信息的发送。2.IP协议实现这个目的的就是IP协议。IP协议所定义的地址,我们称之为IP地址。这个 IP 地址由 32 位的二进制数组成,我们一般把它分成4段的十进制表示,地址范围为0.0.0.0~255.255.255.255。IP地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。
假如两台计算机的网络部分是一样的,那它们就处于同一个子网中。例如,存在192.168.43.1 和 192.168.43.2两个IP地址, 假如它们的网络部分都为 192.168.43,那它们便处于同一个子网中。以太网数据报只包含了MAC地址,根据IP协议,我们再对其添加IP地址,于是以太网数据包形式就变成了下面这样:
蓝色Head为以太网标头,红色Head为IP标头但很多情况下我们知道对方的IP地址,却不知道对方的MAC地址,这就需要用到ARP协议。ARP协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包含接收方的IP地址)。对方收到这个数据包之后,会取出IP地址与自身进行对比,如果相同,则把自己的MAC地址回复给对方,否则就丢弃这个数据包。这样,计算机A就能知道计算机B的MAC地址。
有了IP地址和MAC地址,我们就能快速准确地把信息发送到任意一台计算机上。
传输层
接下来的问题是,每台计算机上会同时运行很多程序,如浏览器、微信、游戏等等,对方如何知道你从哪个程序上发来的信息呢?
此时,需要用到“端口(Port)”这个参数了,不同的端口表示不同的程序数据。也就是说传输层建立的是端口到端口之间的通信,相比之下网络层建立的是主机到主机之间的通信。主机+端口,叫做套接字(socket),有了它就能进行网络程序间的通信。需要注意的是,在传输层我们还要在IP数据包的基础上加上端口信息,这时就需要用到新的协议,这种协议通常分为UDP和TCP两种。UDP协议新增了发出端口和接收端口的信息,TCP协议比较复杂,近似可以认为在UDP协议基础上加上了确认机制。将UDP或TCP协议标头添加到IP数据包中,就变成了下面这样:
应用层
网络结构的最上面一层是应用层,应用层直接面向用户,比如浏览器、邮件、影音等等,这些程序发送过来的数据也是各种各样的,所以必须实现规定好的格式才能进行解读。应用层的作用,就是规定应用程序的数据格式。如,万维网浏览:http协议;邮件收发:smtp/POP3协议;文件传输:ftp协议;域名服务:DNS协议等。应用层协议规定了进程在通信时所遵守的规则。
网络的层级划分保证了数据传输的过程解耦,提升网络系统的稳定性,而各层级的服务及协议的稳定性,仍需分别在各层级中部署相应的设备或系统。应用层是互联网实现其功能性的最终层级,也是面临网络攻击最频繁的互联网层。
中科三方的产品便主要面向此层级,对各种协议的安全及传输效率进行防护与优化:SSL证书可以解决http协议的传输加密,域名及解析产品则负责DNS协议全过程的防护与提速,邮箱产品则主要针对邮件收发过程中涉及的SMTP/POP3协议。通过对客户网络系统的应用层实现全方位的保驾护航,以确保其网络体系应用价值的实现。