一、计算机网络背景
我们用计算机完成一项工作时,不可避免地需要进行多人协同工作,这就需要有方式让我们互相传递数据。假设现在有三台计算机终端A、B、C,分别负责查找文件错别字、修改文件错别字、调整文件内容排版的工作,由于每台计算机之间是相互独立的,并且三个工作之间的联系比较紧密,必然需要使用数据传输。
比如终端B要想修改文件错别字,他必须等到终端A找出文件的所有错别字才能修改,终端C要向调整文件内容的排版,他必须等到终端B把所有错别字修改完成才能调整。在没有网络的年代,这种数据传输的方式只能依靠人工传送,比如将整理好的数据拷贝到移动存储设备中,再由人工转交给下一个工作者,这种传输方式必然导致效率低下。
有了网络技术以后,我们就可以实现网络互联,让多台计算机终端连接在一起,完成数据传输共享。
我们再从操作系统的角度来理解一下网络通信为什么是可以实现的。
在冯诺依曼体系结构中介绍的是输入设备将数据加载到内存,内存再将数据传给CPU进行处理,CPU处理完以后再将结果返回给内存,内存再将数据传给输出设备。这些所谓的输入输出设备,内存CPU,它们都是硬件,它们之间是通过总线来实现数据传输的。
多台主机之间传输数据就相当于是网卡与网卡之间在传输数据,那么网卡也是硬件,它们也是通过总线进行数据传输,只不过可以理解成单主机内的总线是比较短一点的线,多主机之间的线是比较长一点的线。
二、局域网和广域网
1.局域网(LAN)
局域网指的是在某一区域内多台主机通过网络互联形成的计算机组,一般这个区域的范围比较小,主机之间的间隔比较近,比如我们在同一个学校,同一家公司,同一个住宅内都可以组成局域网。当局域网内的计算机数量多了的时候,就需要使用交换机将多个设备连接在一起,它可以同时多个终端之间的信息交换。
2.广域网(WAN)
广域网指的是连接不同地区局域网的远程联网,又称公网、外网,广域网通常跨接的范围很大,物理距离很远,比如多个城市之间甚至多个国家之间的网络连接,它需要用到路由器,将每个局域网的数据进行转发,广域网就是一张通过路由器连接多个局域网的网络图。
三、认识协议
1.协议的概念
协议的本质其实就是一种约定。
计算机之间的传输媒介是光信号和电信号,有些硬件根据信号的频率来表示0和1这样的信息,而有些硬件根据信号的强弱来表示0和1这样的信息,所以如果要想传递各种不同的信息,就需要约定好双方通信的数据格式。但协议并不是制定好一份约定就可以正常运转通信了,必须让通信双方都遵守这份协议才能让通信正常进行。
2.协议分层
我们在设计软件的时候,都会将软件的不同功能模块进行封装,设计成层状结构,这也是面向对象的思想,比如我们平时在用电话机打电话时,其实也是具有层状结构的,它分为语言层和通信设备层,在语言层,两个打电话的人都遵守汉语协议,用汉语进行沟通,所以双方能够正常进行通信。在通信设备层,两台电话机都遵守电话机协议,所以才可以将每个人的声音信息进行分析、包装、分发给对方,保证通信的正常进行。
层状结构有以下几个好处:
- 每一层都有属于自己的协议,并且每一层都认为自己在与同层的对方直接通信,比如说上面打电话的例子,两个打电话的人他们只需要遵守语言层的协议,拿起电话机就能跟对方进行通话,并不关心底层是怎么实现通话的,通信设备层的两台电话机也是类似。
- 分层能够很好地实现解耦,每一层之间的耦合度非常低,比如上面打电话的例子,如果语言层我们更换了协议,不使用汉语协议而是使用英语协议,双方依然能够正常沟通,通信设备层并不会因此受到影响。
3.网络OSI七层模型
OSI(Open System Interconnection)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。它把网络从逻辑上分成了7层,每一层都有相关的、相对应的物理设备,比如路由器,交换机。
OSI七层模型是一种框架性的设计方法,其最主要的功能是帮助不同类型的主机实现数据传输,它最大的优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
OSI七层模型将网络分成了七个层次:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
4.TCP/IP五层模型
OSI七层模型虽然设计得非常好,但是实际在应用实现过程中会比较困难,所以研究网络的科学家继续将网络分成5层,叫作TCP/IP五层模型。
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
TCP/IP协议的五层模型自底向上分别为:物理层、数据链路层、网络层、传输层、应用层。
- 物理层:负责光电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤,以及现在的WiFi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
- 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(意思是从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网、无线Lan等标准。交换机(Switch)工作在数据链路层。
- 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划处两台主机之间的数据传输线路(路由)。路由器(Router)工作在网络层。
- 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够保证数据可靠地从源主机发送到目标主机。
- 应用层:负责应用程序间沟通。如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
有了这个网络模型以后,我们再来看计算机是如何通过网络将数据从一台主机发送到另一台主机的:
假设有两台主机分别为主机A和主机B,主机A用户通过网络将信息发送给主机B用户,该信息会从主机A开始自顶向下依次经过应用层->传输层->网络层->数据链路层->物理层,然后通过物理层的网卡设备将信息发送出去。
主机B会自底向上接收信息,物理层的网卡接收到信息之后,依次经过物理层->数据链路层->网络层->传输层->应用层,再把信息返回给用户,这样就完成了一次网络信息传输。
5.数据的封装和解包
在TCP/IP五层模型中,每一层都认为自己只在与同层直接交流,比如应用层只关心对方应用层的数据,传输层网络层具体怎么做,它们传输什么数据应用层是不关心的。所以同层之间都有属于自己的协议,它们就是通过这些同层协议来进行信息交互的。
所以一个信息自顶向下经过每一个层级的时候,都会在这个被传输的信息上新增一些新的数据,这些数据就是每一层协议的协议数据。
举个例子,我们在主机A中发送一条信息“你好”到主机B中,在主机A的应用层中会增加应用层协议的协议数据,在传输层中会增加传输层协议的协议数据,在网络层中会增加网络层协议的协议数据,在数据链路层中也会增加数据链路层的协议数据,物理层一般不会添加协议数据。
然后这个被发送的信息以及增加的数据就被一起发送到了主机B中,数据链路层会将主机A中数据链路层增加的数据链路层协议数据拿下来,再将剩下的数据继续向上转发,其它层同理。最后,每一个层级都拿到了同层协议发送过来的协议数据,可以简单理解为协议就是约定,由于同层之间采用同一种协议,所以这些协议数据就是他们能看懂的信息。
我们把每一层新增的协议数据叫作报头,自顶向下每一层增加报头的过程就是数据封装的过程,自底向上每一层取报头的过程就是数据解包的过程。
四、局域网内主机交互与跨网段主机交互
我们上面讲的两台主机自顶向下和自底向上进行信息交互的网络模型,都是基于局域网内的例子演示的,底层是通过以太网进行数据传输的,以太网是局域网的标准。
所以在同一个局域网内的两台主机是可以直接通信的,而且处于同一个局域网内的多台主机通信是可以相互知道的,这些信息会广播到局域网内的每一台主机,也就是说你在局域网内和另一台主机通信,局域网内的其它所有主机都是可以知道的。这就好比在一间课室里,老师点名张三起来回答问题,是老师和张三之间在对话,但这个对话是全班同学都知道的。
那么在局域网内,计算机怎么知道我要跟谁通信呢?计算机是通过MAC地址来区分局域网内的计算机的。如果把一个局域网比作一个教室的话,教室里的学生和老师就是局域网内的主机,那么MAC地址就是学生和老师的姓名。
专业点来说,MAC地址是用来识别数据链路层中相连的节点的,在网卡出厂的时候MAC地址就被确定了,是不能被修改的,用来标识网卡的唯一性,但MAC地址通常是唯一的,这里说通常是因为虚拟机中的MAC地址不是真实的MAC地址,可能会存在重复。也有些网卡支持用户自己配置MAC地址。
如果是跨网段的主机交互,我们就需要路由器帮我们把消息从一个局域网转发到零一个局域网,它工作的流程是:数据链路层的以太网驱动程序封装好数据链路层协议数据以后,将其发送给路由器的以太网驱动程序,以太网驱动程序进行解包,再将剩下的数据向上交付给路由器的网络IP层,网络IP层拿到网络层协议数据之后,它知道这些数据要发送到的目标IP是什么,它会在连接自己的端口中找是否有该目标IP,找到了的话路由器的网络IP层继续将数据向下交付给令牌环驱动程序,令牌环驱动程序再增加令牌环协议数据,然后将数据包转发给另一台主机,再自底向上交付数据。文章来源:https://www.toymoban.com/news/detail-775961.html
文章来源地址https://www.toymoban.com/news/detail-775961.html
到了这里,关于网络的基本原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!