计算机网络入门概念理解
下面我来讲解一些关于网络的基础知识,这些知识有利于帮助我们今后学习TCP/IP协议相关知识打好基础。
诞生背景
首先从网络的诞生背景讲起。一开始计算机的运作是独立存在的(独立模式),每个计算机有各自的业务,用户需要在不同的计算机上执行特定的业务逻辑。用户采用卡带的方式将程序和数据输入计算机让计算机进行运算。之后出现了分时系统,分时系统具有“多终端,一主机 ”的特点,由于分时系统CPU时间片轮转的特性让用户有了“一人一机”的错觉。70年代后计算机日渐小型化,慢慢的出现了多台主机连接通信的技术,紧接着到80年代,互连多种计算机(包括超级计算机、PC等)的网络诞生。90年代后提出“瘦身”和“多供应商连接”的口号,电子邮件和万维网技术取得长足的发展。如今的社会已然是互联网的时代,甚至于一切皆“TCP/IP”连接。计算机在规模上从WAN(广域网)到LAN(局域网)。
协议
下面说一下协议相关的东西。
协议简单来说就是通信事物之间进行沟通的规则。由于计算机不具备人类的认知能力,所以要想实现计算机之间的通信,制定通信规则然后通信双方共同遵守该规则是通信的前提。这里提一下分组交换协议,后面要用到。分组交换是指将大数据切割成一个个包(Packet)进行传输的方法。注意切成包之后一定要在包上加上数据的源主机地址和目标地址、分组序号这些信息,即报文首部。注意一定要贴上这些东西,不然你怎么把数据发送出去,怎么让数据在目标地址那边把大数据凑出来?穿插了一下分组交换,下面继续前面刚刚提到的协议。协议开始是由各个厂家各自制定的,这样的结果就是用户只能使用同一个厂家的设备进行通信……后来ISO看不下去了,就制定了OSI标准协议(顺便给出了OSI参考模型)。虽然ISO给出的OSI协议最后并不流行,但是它提出了这种思想。今天TCP/IP协议正在一统天下。(注:TCP/IP不是ISO制定的,它是IETF制定的)
既然说到了分组交换,就把现代网络通信方式分组交换说一下吧。在这之前先说一下更加悠久的电路交换技术。先看一下下面这个图:
在电路交换技术中,计算机先通过电路交换机连接,此外还有另外一批计算机也通过电路交换机连接。如果计算机A与计算机F想要建立连接,怎么办呢?A与F通过中间的电路连接在一起。这样的方式不用多想存在许多弊端:不能同时并发通信,因为中间的电路每次只能给两台计算机通信用!于是人们想出了更加优秀的分组交换技术,看上图,就是将左侧的计算机需要发送的数据全部送到路由器里面切割成一个个的包(Packet)然后缓存在路由内部,路由按照队列的方式将这些包发送出去。这样就解决了电路交换技术中的一些问题。但是它也有些毛病,比如当路由缓存满时可能溢出导致数据丢失或者无法发送的情况。
OSI参考模型
上面说到了ISO的OSI协议,后来它并没有被大量采用,不过ISO的OSI参考模型却成为今天网络体系结构的标准模型。让我们来看看这个是什么东东,为什么能影响力这么大?其实OSI参考模型就是将网络通信本来复杂无厘头的过程分成了7层(见下面),每一层都有它们各自管理的事情,相同层次之间可以使用协议通信,而不同层次之间又可以通过接口来通信。这个分层是如此的美妙,比如在这个系统内某一个层次发生更改或者拓展并不会影响到整个系统的特点,所以到今天它也一直在使用着。不过它也有一些劣势,像过分分层导致有些功能实现逻辑不得不重复实现。
下面我们一起来看看协议中7层各自的功能。博主以一个场景为例来介绍7层功能,欢迎吐槽。以小明向小红发送电子邮件为例。小明写好了一封邮件“早上好”,填好了小红的Email地址,然后点击“发送 ”按钮,应用层就开始摩拳擦掌了。应用层利用协议先在数据的前端附加一个首部(标签)信息,包括邮件内容“早上好”和收件人小红的信息。这些信息会在小红的应用层中被分析保存,此外还存在异常处理。小明的应用层把数据处理后传到下面的表示层去。为什么要有表示层捏?试想一下,小明的电脑他使用Outlook来发邮件,小红的电脑使用网页版来收文件,假设这两个软件的编码格式不同,如果直接进行收发会出现怎样的情况?当然是乱码咯。所以就要有表示层来解决这种情况,在发送方将数据转换成网络通用的标准数据格式,然后在接收方将这些特定格式的数据再次解码为本地的编码格式,这样就没有乱码问题了。注意表示层也会附加首部信息。好了,现在经过两层的处理,数据传到了会话层。这一层又是干嘛的呢?一封邮件看不出来它的作用,我就再举例吧。小明发完“早上好”又发了一封“吃了没”,会话层的作用就是解决建立连接,按照什么顺序发送的问题的,但是它不发送。比如说,建立一次连接发送“早上好”然后断开,再建立一次连接发送“吃了没”再断开;或者建立一次连接同时发送“早上好”“吃了没”。确定怎么建立连接,怎么发送是这一层的问题,这是连接管理层。接下来会话层会把数据继续传递至下一层,传输层以下就是真正发挥网络传输的地方了。上面的数据传到传输层,传输层就确定小明的主机与小红的主机是否连接了,没有连接就建立连接,通信完毕就断开连接。此外传输层会判断数据是否完整地到达了小红的主机,如果没有就重新发一遍。可以看出传输层具有保障数据可靠性的功能。经过了传输层,我们的连接就建立了。然而它并不会真的把数据发送出去,这就要下面的网络层和数据链路层来处理了。网络层是指从原地址到目标地址数据通信的过程,是整个通信的过程。而数据链路层是指传递过程中的中转站传递(见下面)。就好比小明的邮件要传到一个个别的设备最终才能到达小红的主机上。
最后一层是物理层,顾名思义,就是通过物理介质来实现数据传递的层级。这是通信的根本,没有物理介质通信不可能实现。在这一层里数据从0,1转换为电压或者脉冲光传递,通过MAC地址来实现传递。
经过这么漫长的步骤,小明终于把数据发送了出去。那么小红是怎么接收数据的呢?其实就是上面过程倒叙一遍啦。小红的主机从物理层开始不断将小明发送来的数据进行反向解码,从而一层层剥离最终得到想要的数据。关于OSI参考模型需要在今后的学习中不断更新理解,这里可能存在偏差。
传输方式
上面列举了小明和小红的通信过程,我们称之为面向有连接型连接,因为双方都建立了连接后才进行的通信。此外还有面向无连接型通信,UDP大家都知道吧,发送方就是一个劲地发,不管别人是否接收。这种方式有什么好处呢?它可以让处理变得简单,你发就行,我接收就行,不用去执行建立通信那一套东西。
其实上面的两种传输方式是一种分类,此外还有根据接收端数量来分类的方式,分为单播、广播、多播和任播*。这不难理解(见下图)
注意:多播和任播的客户端全体拥有同一个地址。
地址
说了这么多终于说到地址了。上面的通信过程必须有地址才能实现。地址具有两个重要的特性:唯一性和层次性。唯一性不多说了,在同一个通信网络中地址必须唯一指定,不然怎么通信……说说层次性,层次性是指地址中能够实现快速定位的能力。比如从一个电话号码可以看出用户的国家、省市、区名。IP地址由于其拥有网络号和主机号而拥有层次性。两个相同网络号的IP地址的主机的组织结构、提供商类型和地狱分布集中。而MAC地址不具有层次性。
下面说说寻址的问题。
网络传输过程中的节点会根据分组数据的地址判断是从哪个网卡发出来的,MAC寻址会参考地址转发表,IP寻址会参考路由控制表,具体寻址参考下面这张图,一目了然。
网络的构成要素
上面讲了这么多,最后从宏观上,从现实中来感知一下网络的存在吧。网络的物理设备组成包括:网卡、中继器、网桥/2层交换机、路由/3层交换机、4-7层交换机、网关还有电缆。计算机通信是通过线缆来完成的,线缆的传输速率(又称带宽)指单位时间传输的数据量的多少。网络接口卡(NIC)有时也被称为网络适配器、网卡、LAN卡,是计算机连网的设备,具有独一无二的MAC地址。中继器处于物理层,是对电缆信号进行波形调整和放大然后继续传输的设备。可以认为集线器每个端口都是中继器。网桥(又称二层交换机)负责在数据链路层中的数据帧的重构、错误数据帧丢弃和传输数据帧。(维基百科上解释为> “橋接器将网络的多个网段在数据链路层(OSI模型第2层)连接起来(即桥接)。”)
路由(又称三层交换机) 处于网络层,根据IP地址连接两个网络对分组报文进行转发,此外还有网络安全和分担网络负荷的功能。网关负责从传输层到应用层的数据进行转换和转发的设备。互联网邮件与手机邮件之间的转换服务。互联网与手机之间设置了一道网关,网关负责读取完各种不同的协议后,对它们逐一进行合理的转换,再将相应的数据转发出去。代理服务器也是网关的一种,称为应用网关。个人对于中继器、网桥、路由的理解就是数据传输从底层硬件逐渐往上层的管理设备。