计算机网络概述 - 跟小智一起学网络(2)
作者:互联网
《跟小智一起学网络》教程目录
前言
哈喽,小伙伴们,大家好,我是小智。
这个章节,主要让大家先了解一下计算机网络的全貌,能够从整体上建立对计算机网络的认识。主要包含的内容如下:
正文
计算机为什么要联网?
计算机网络,顾名思义,就是由计算机组成的网络,而网络的定义是由若干节点和连接这些节点的链路组成。所以计算机网络,我们可以理解是由很多计算机和连接这些计算机的通信链路组成的一个网状的系统。
那我们有没有想过,计算机为什么要组成网络呢?
设想一下,如果我们正在使用的一台电脑没有联网,我们能做些什么呢?很显然,在这台没有联网的电脑上,我们只能玩一玩单机游戏,只能进行简单的文档处理,只能看一些电脑本地已经下载好的电影。
而一旦这台电脑接入了网络,它的功能一下子就变得强大起来,我们可以用它来玩网络游戏,可以和朋友聊QQ,可以给别人传送资料文件,还可以搜索观看网上海量的电影资源。
很显然,通过计算机的联网,实现了计算机之间的数据通信和资源共享,避免了单台计算机的信息孤岛,并且能够将网络中的信息传播到世界各个地方,使得计算机自身的功能得到大大扩展。
计算机网络的构成
计算机网络在地理位置上覆盖全世界,组网拓扑非常复杂。但从其工作方式来考虑,我们可以把它分成两大部分:
网络边缘部分
网络边缘包含用户经常使用的电脑、手机、平板、摄像头等所有智能终端,以及给这些智能终端提供内容的网站、视频和游戏等资源服务器。
生活中的智能终端,我们很熟悉,随着AI技术和智能家居行业的发展,智能终端的范围和种类大大扩展,后面章节我们提到的计算机或者电脑,都是泛指这些智能终端。
给智能终端提供内容资源的服务器,因为它们总是藏在背后默默的提供服务,对我们来说,多少有些陌生。比如“双十一”购物狂欢节,我们在手机电脑上购物,买得不亦乐乎,背后就不知道有多少台紧张备战的服务器在高速运转。对于这些服务器,我们可以简单理解它们就是一台配置超强的电脑,它们可以存储海量的文件和视频等资源,我们用电脑联网看新闻、看视频,就是从它们那里获取资源。
计算机网络通信,其实主要就是网络边缘部分的主机和主机、主机和服务器之间的通信。
网络核心部分
网络核心包含给网络边缘部分提供访问通路的交换机和路由器等网络设备。
网络中相互通信的两台计算机,在物理位置上往往相距很远,无法将两台计算机通过物理链路直接连起来,而且这也满足不了任意两台计算机都能相互通信的需求。所以在网络组网建设中,需要先将网络核心部分中成千上万的交换机和路由器互连起来形成网状通路,然后再将网络边缘部分的计算机接入到核心网络中。
网络设备厂商
边缘部分的智能终端,大家都比较熟悉,比如笔记本电脑的提供厂家,联想、戴尔、惠普这些;手机的提供厂家,比如华为、小米这些;当然还有很多其它能联网的智能终端提供厂家。
边缘部分的服务器,一般部署在数据中心的机房中,比如腾讯的网络游戏服务器,阿里的淘宝网站服务器,百度的搜索引擎服务器等等。
网络核心部分的组网是由运营商来负责规划建设的,比如国内的中国移动、中国电信和中国联通三大运营商。
核心部分的交换机和路由器是由通信设备厂商提供的,比如国外的思科,国内的华为、中兴和烽火等厂家。交换机和路由器一般部署在运营商的网络机房中。
计算机网络的层次结构
人类文明发展到今天,分工协作越来越精细化。对于一个复杂系统的架构设计,比如程序员熟悉的软件系统,我们一般都会采用层次化的设计方法。根据系统要实现的不同功能,将系统分成若干个层次,每个层次完成自己特定的功能,层次之间通过接口的方式实现调用,某一个层次内部发生变化,不会影响到其它层次。
另外,从系统实现的角度来看,负责系统实现的人,只需要关注自己负责的那一层次要完成的具体功能,这样一来,也非常有利于整个开发团队的分工协作。
对于计算机网络的体系结构来说,也同样采用了分层次化的分工设计方法。这里要说明的是,计算机网络层次的划分其实出现了三种模型,有OSI标准组织的七层模型,有TCP/IP协议的四层模型,还有一种五层模型。
虽然OSI七层模型才是正统的国际标准,但是在七层模型推出之前,TCP/IP四层模型已经在全球范围内被广泛使用,导致四层模型成为了事实上的标准。然而大家在使用四层模型的过程中发现,其实它定义的还是不够好,对于网络接口层,它并没有给出具体的内容,所以设计者们综合参考标准的七层模型,最终衍生出来了五层网络模型。
现在在计算机网络教程或者实际工作当中,普遍都是采用五层网络模型来说的,我们这个教程也不例外。关于OSI七层模型和TCP/IP四层模型的具体划分,有兴趣的小伙伴,可以找其它相关教程了解一下,我们这里重点讲一下五层网络模型。
五层网络模型
五层网络模型,根据各层的职责,从上至下依次分为:应用层、传输层、网络层、数据链路层和物理层。
1)应用层
应用层是体系结构中的最高层,离用户最近,也最好理解。那么应用层要解决什么问题呢?
应用层为计算机上运行的应用程序或者说是运行的进程服务。它规定了应用程序间通信应遵守的规则(从操作系统的角度来讲,应用程序其实就是运行着的一个个的进程,一个应用程序可能包含多个进程)。比如我们打开浏览器浏览新闻,使用foxmail发送邮件,使用QQ与好友聊天,使用工具软件发送文件等等这些都与应用层有关。
2)传输层
应用层之下是传输层,它为两台主机之间的通信提供通用的数据传输服务,应用软件通过传输层提供的服务进行通信。
这里要重点说明的是,每台计算机上面都会运行很多应用软件或者进程,打开我们的电脑,可以看到系统上安装有各种各样的软件,比如QQ、王者荣耀和腾讯视频等等这些,所以我们说的两台计算机通信,准确的说应该是两台计算机上的应用软件间的通信,从操作系统的角度来说,其实就是进程间的通信。
要详细的区分两台电脑到底是哪些进程在通信,就要用到传输层,由于传输层提供的是通用的传输服务,所以不管是什么类型的应用软件通信,都可以使用传输层提供的服务。另外,传输层还可以把它收到的信息分别交付给应用层上面的软件。
总结来说,传输层为运行在不同主机上的应用进程之间提供端到端的逻辑通信功能,向应用层屏蔽了网络组网和物理链路等细节。
3)网络层
网络层为不同主机之间提供逻辑通信。
网络层把传输层要发送的数据封装成分组进行转送。另外,网络层还要负责选择合适的网络路径,将通信的数据传递给目的主机。
4)数据链路层
数据链路层负责把网络层要发送的数据封装成帧,在通信链路的两个相邻的节点间传送。
5)物理层
物理层主要是要解决通信链路的问题,负责确保通信要发送的数据可以在各种物理媒介上进行传输,为数据的传输提供可靠的环境。
可以这么理解,我们人说话也是要借助媒介的,在高中课程里面我们就知道,说话的声音是通过空气传播的,那计算机网络协议也得承载在一个物理媒介中传播,比如我们能看到的电缆、网线、光纤以及计算机的网卡等等。
物理层定义了与传输媒介相关的接口特性。在物理层传输的数据单位是比特,也就是0和1这样的二进制比特流。
由于物理层跟物理介质相关,在工程实践中关注得比较多,如果从软件的角度去考虑,其实我们可以不用太关心物理层的技术实现细节,所以这个教程后面不会再讲解跟物理层相关的内容,感兴趣的小伙伴,可以找其它相关教程了解一下。
网络分层的好处
了解了网络各个层次的作用,我们不禁要问,计算机网络为什么要分层设计,或者说这样分层有什么好处呢?
-
职责清晰。每个层次只负责自己的那部分事情,一层套一层,自己那层的任务完成了就交给下一层处理,各司其职,每层都遵守自己的规则,配合起来完成网络通信的工作。
-
松耦合,利于扩展。由于每个层次所处的应用场景不同,有的层次需要适应网络发展的不断变化,比如应用层,各种应用层出不穷,需要不断扩展;而有的层次实现机制复杂而且重要,需要长期保持稳定不变,比如网络层和传输层。通过分层的这种松耦合设计,正好适应了这种需求。
不同网络设备的工作层次
边缘部分的主机和服务器可以工作在应用层,它们实现了从应用层到物理层的五个层次。这五个层次是通过计算机操作系统的协议栈来实现的,后面我们讲网络编程的时候会详细讲到。
核心部分的交换机和路由器只能工作在网络层,交换机(指二层交换机)一般只实现了物理层和数据链路层两个层次,路由器实现了物理层到网络层三个层次。
计算机网络中的关键要素
前面我们已经从整体上了解了计算机网络的组成,以及其层次化的体系结构,那么从两台计算机完成通信的细节上看,还有哪些需要我们重点关注的要素呢?
通信的主体标识
两台计算机通信,就跟两个人对话一样,首先需要明确通信双方的主体,就是说得标识谁跟谁通信的问题。人可以用名字来标识,比如我们这样描述:张三对李四说。考虑到人的名字可能一样,我们还可以用唯一的身份证号来标识。
那两台通信中的计算机,我们用什么来标识呢?因为计算机的网络结构是分层设计的,所以在实际中,每一层对计算机的标识是不一样的。
- 传输层的端口
前面我们说到,传输层为运行在不同主机上的应用进程之间提供端到端的逻辑通信功能,所以传输层需要区分各种不同的进程,那它是怎么区分的呢?其实就是通过端口来区分的,我们规定通信双方的主机上不同的进程使用不同的端口号进行通信,传输层就能区分清楚了。
端口的长度是16位,也就是两个字节,以十进制数表示,范围从0-65535。
按下快捷键Win+R,输入cmd然后回车,通过netstat命令,可以看到小智这台电脑上进程使用的端口。
- 网络层的IP地址
前面我们说到,网络层为不同主机之间提供逻辑通信,所以网络层需要区分各种不同的主机,那它是怎么区分的呢?其实就是通过IP地址来区分的,我们规定让不同的主机使用不同的IP地址进行通信,网络层就能区分清楚了。
IP地址又称为互联网协议地址,在接入互联网(我们一般也称之为公网)时,运营商会给我们的电脑分配一个唯一的公网IP地址。这个IP地址就像我们的家庭住址一样,有了它,想跟我们电脑进行通信的对方主机,才能在茫茫网络中找到我们。
需要说明的是,就像我们人类搬家了,家庭住址会发生变化一样,电脑所在的地理位置变了,它的IP地址也会发生变化。
IP地址的长度是32位,也就是四个字节,它以“点分十进制数”来表示,也就是每个字节用十进制数表示,中间以点分割。例如:100.2.3.242就表示一个IP地址。
打开电脑的控制面板,选择网络和共享中心,可以看到小智这台电脑的IP地址是192.168.1.11。
- 数据链路层的MAC地址
前面我们说到,数据链路层负责把网络层要发送的数据封装成帧,在通信链路的两个相邻的节点间传送。所以数据链路层需要区分链路上的不同节点,那它是怎么区分的呢?其实就是通过MAC地址来区分的,我们规定让链路的不同节点使用不同的MAC地址进行通信,数据链路层就能区分清楚了。
MAC地址又称为物理地址或者硬件地址,因为MAC地址是配置在我们电脑网卡上的,而且是出厂时就固化烧录在网卡里面,所以不会随着电脑所在的地理位置而改变,这也是MAC地址和IP地址很明显的一点区别。
需要说明的是,每台电脑是可能安装有多块网卡的(比如笔记本电脑上一般都有有线网卡和无线网卡),每块网卡都有一个全球唯一的MAC地址,所以说电脑间的通信,其实应该说是电脑上具体某块网卡间的通信。
MAC地址的长度是48位,也就是六个字节,每个字节以十六进制数表示,中间以横线分割,例如:00-0C-29-11-22-33就表示一个MAC地址。在六个字节中,其中前三个字节表示网卡的制造厂商编号,后三个字节表示制造厂商的产品系列号。为保证MAC地址的全球唯一性,MAC地址是由IEEE(电气与电子工程师协会)统一管理分配的。
打开电脑的控制面板,选择网络和共享中心,可以看到小智这台电脑的MAC地址是40-5B-D8-45-84-FB。
这里说明一下,关于为什么会有MAC和IP两个地址,可能到这里有很多小伙伴不明白,我们暂时可以这样理解,如果在一个小范围的网络中(就是后面会讲到的子网网段的概念),我们是通过MAC地址来标识主机的,但是一旦主机要跨越很远的位置访问另外一台主机,就需要通过IP地址来标识了。
网络协议
网络协议的作用
前面讲的通信主体标识,明确了谁跟谁通信的问题。但是只是确定通信对象还是不够的,我们还得明确通信双方传输数据的格式问题。
就像人类对话,张三对李四说,首先说话的内容必须得遵守一定的语法规则,比如中学课程里面学的“主谓宾”,否则李四是听不明白的。
其次,张三说的话,必须得有一定含义,就是得表达一定的意思,否则李四还是听得稀里糊涂,浪费大家的时间。
最后,说话还得讲究一定次序,必须先说什么后说什么,一问对应一答,这样张三和李四才能愉快的沟通。
在网络通信的数据传输中,上面的这些要求都体现在网络协议当中,网络协议规定了通信双方应该遵守的规则。另外,网络中的每种协议有它自己的适用场景,就跟人类在什么样的场合说什么样的话一样,网络设备在某种应用场景下,通过启用相同的网络协议进行通信。
通过上面张三对李四说话内容的要求,我们不难总结出,网络协议的三个基本要素:
1)语法,即传输数据或者控制信息的格式或者结构;
2)语义,即需要发出何种请求,做出何种响应和动作;
3)时序,即发出请求,做出响应和动作的先后顺序。
网络协议的设计思路
**每种网络协议都有自己的使用场景,网络协议都是在其对应场景下去解决某一个问题的,这就是网络协议的设计思路。**所以我们在学习某个网络协议的时候,首先就要搞清楚这个协议到底是用来解决什么问题的。
小智通过下面的表格,简单总结了一下一些常见协议要解决的问题:
上面这些协议,小伙伴现在不熟悉也没有关系,小智后面会在使用场景中详细讲解它们,大家现在在整体上建立这样一种认识就行。
每个层次的网络协议
网络协议不仅有自己对应的使用场景,还有其对应的网络层次。小智把每个层次常用的网络协议都整理了出来,小伙伴现在只需要先建立这样一种认识,后面咱们再来一个协议一个协议的来学习。
RFC文档
学网络,很大一部分内容就是学习各种网络协议。那这些网络协议的具体细节,我们从哪里可以看到呢?最官方最权威最标准的,当然就是RFC文档了。简单来说,RFC文档就是网络协议的设计文档。
各种网络通信设备,包括电脑、服务器、交换机和路由器这些,都应该参照RFC文档规定的协议细节去实现,否则大家就没法愉快的通信了。
下面是小智我总结的各种常见协议对应的RFC文档:
想要查看某个RFC文档的具体内容,访问网站 https://www.rfc-editor.org/rfc/rfcxxx.txt 就可以了,xxx代表RFC文档编号。
数据报文
数据报文的构成
明确了通信双方的对象和通信协议的数据格式,我们还得明确通信数据内容的承载实体。在通信不发达的古代,两个人之间通过书信往来传送消息,书信实际就充当了通信内容的承载实体。
在网络世界里,通信数据内容的承载实体我们称之为数据报文。所有要发送的消息内容,都是通过封装成一个一个的数据报文发送到网络中,并最终到达目的主机的。
那如何能够让数据报文在茫茫的网络海洋中,顺利找到目的主机,然后再顺利找到目的主机上对应的进程呢?
寄快递时,我们把要寄的物品放在包裹中,在包裹的外面,我们写上寄件人和收件人的姓名、地址以及手机号码。同样的,在发送报文时,在消息内容的外面,我们把通信的标识也都写上。报文中包含通信标识的部分,我们称之为报文头。
所以对于一个完整的报文来说,它包含两部分,一部分是报文头,一部分是报文内容。
由于通信标识MAC地址、IP地址和端口分别存在于数据链路层、网络层和传输层这三个层次,再加上应用层,所以报文头分为四个部分,分别是数据链路层报文头、网络层报文头、传输层报文头和应用层报文头。
数据报文在各个层次间传递的过程
通信中要发送的消息数据会从源主机发送到目的主机,这个过程中,数据在各个层次之间会经历什么样的变化呢?
上图分别以具体的协议报文头代替各个层次的报文头来描述,以太网头部对应数据链路层报文头,IP头部对应网络层头部,TCP头部对应传输层头部,HTTP头部对应应用层头部。
上图数据报文的变化可以分为三个过程:
- 源主机发送数据:
1)应用软件接收用户的输入“你好”,将数据交给应用层,并指定使用的协议是HTTP协议。
2)应用层在数据内容“你好”的外面,封装HTTP头部,指明要使用TCP协议和对应的端口,然后交给传输层处理。
3)传输层在应用层封装数据的外面,封装TCP头部,指明要使用IP协议和对应的IP地址,然后交给网络层处理。
4)网络层在传输层封装数据的外面,封装IP头部,指定要使用以太网协议和对应的MAC地址,然后交给数据链路层处理。
5)数据链路层在网络层封装数据的外面,封装以太网头部,指定要发送数据的报文的网卡,然后交给物理层处理。
6)物理层将数据链路层的数据转换成0和1形式的比特位,从网卡发送出去。
- 网络核心设备转发数据:
1)由于交换机(指二层交换机)工作在数据链路层,它查看以太网头部的MAC地址,根据自己的MAC地址表项进行转发。
2)路由器工作在网络层,它查看IP头部的IP地址,根据自己的IP路由表项进行转发。
关于交换机和路由器的工作原理后面会详细讲到。这里需要注意的是,MAC地址在网络核心部分进行报文转发时一定会发生变化,并不是源主机和目的主机的MAC地址,但源和目的的IP地址一般不变。
- 目的主机接收数据:
1)物理层从网卡接收到0和1形式的比特位数据,将数据交给数据链路层。
2)数据链路层检查以太网头部MAC地址信息,剥离掉以太网头部后,将数据交给网络层。
3)网络层检查IP头部IP地址等信息,剥离掉IP头部后,将数据交给传输层。
4)传输层检查TCP头部端口等信息,剥离掉TCP头部后,将数据交给应用层。
5)应用层检查HTTP头部字段信息,剥离掉HTTP头部后,将数据交给应用软件。
6)应用软件将消息数据“你好”展示给用户。
总结
好了,小伙伴们,关于计算机网络的整体情况,我们就到这儿了。现在让我们再来一起回顾下这个章节的内容吧:
首先,我们分析了计算机为什么需要联网,因为通过联网,计算机实现了资源共享,功能得到大大扩展。
接着,我们介绍了计算机网络的构成,计算机网络分为边缘部分的电脑和服务器,以及核心部分的交换机和路由器。
然后,我们讲到了计算机网络的五层模型、网络分层的好处以及网络设备工作的网络层次。
最后,我们总结了计算机网络通信中需要的关键元素:包括通信标识(端口、IP地址和MAC地址)、网络协议和数据报文。
下个章节,我们一起来搭建 Linux 系统的学习环境,为后面的动手实践做准备,我们下节课见。
标签:报文,网络层,网络,通信,计算机网络,MAC,概述,小智,传输层 来源: https://blog.csdn.net/RelaxTech/article/details/110148922