作者:一天,本文首发于公众号:网络之路博客
前言
对于路由交换的课程,构思了两个星期,一直在想一个好的顺序流程,以及怎么去讲解,因为跟之前的两门课程无线与防火墙不一样,路由交换属于数通里面的入门课程,往往面向的是没有基础,或者有点基础很零散的朋友,里面很多协议、数据包转发的过程都比较抽象,所以博主希望以比较通俗的话语加上与实际生活举例来讲解这些比较枯燥的概念,后续在讲解路由交换的时候以实际工作中的常见组网类型从如何规划、对接、运用什么技术,实现客户的需求等方面讲解,让读者可以学完后能够做到学以致用,毕竟学习技术是用来解决实际问题的。(另外说明下,该课程只针对中小型企业搭建使用常见的技术以及架构进行讲解,不会跟官方定义的大纲来,像ISIS、BGP、MPLS这些就不会涉及了)
网络协议
在我们生活中,使用互联网是日常必不可少的事情了,经常会使用电脑或者手机去追剧、购物、聊天、办公,在使用的过程中,其实是会使用到很多的网络协议。
以最常见的家庭网络举例,我们在办理了宽带后(不管从电信、联通、移动),接上一个家用无线路由器简单初始化后,对于用户而言它就可以直接使用了,它不会去关心怎么是实现的上网,上网的过程中发生了什么!但是作为学习计算机网络的我们,这个是必续了解了,毕竟以后是吃饭的家伙。我们使用手机连接WIFI连接到无线路由器,使用的是802.11(WLAN协议),而电脑通常通过网线接入到路由器的LAN口,使用的是以太网(ETHER2协议),在接入的过程中,无线路由器会给电脑、手机下发网络配置信息,这个使用的是DHCP协议,这个时候手机跟电脑获取完成后可以正常开始正常的局域网通信了,访问局域网里面的共享文件夹或者设备,而访问互联网的应用,比如抖音、B站、微信等,就依赖无线路由来进行相关协议的对接,把局域网接通互联网,接通后,那么手机与电脑就可以正常的访问需要的互联网应用了。
这里就带来了一个疑问,互联网各式各样的厂商设备都有,像普通个人用户产品无线路由器设备有TP、华为、华三、小米、华硕等厂商,企业/运营商级别网络产品有思科、华为、华三、Juniper等厂商,服务器有HP、DELL、IBM,终端设备厂商就更多了,那么这些厂商设备在对接的时候怎么保证互相通信不出问题呢?答案就是:网络协议,网络协议的出现就是为了让各方通信设备之间能够通过标准与规范来进行相互交流,制定出来的一套标准,那么这个标准就是下面要介绍的。
OSI参考模型
OSI参考模型把网络协议提供的服务分为7层,定义了每一层的服务内容(把复杂的事情分层次的去完成),但是OSI参考模型只是对各层的服务做了一个大纲,里面具体的协议内容并没有详细的规定,在实际中使用的是TCP/IP协议,OSI更多会出现在考试、面试的环节里面,在这里呢就作为一个了解。
应用层
OSI参考模型的第七层(最高层),直接向用户提供服务,并且规定应用程序中通信相关的细节,比如我们常用的HTTP、HTTPS、邮件、FTP、远程登录等。
表示层
OSI参考模型第六层,负责数据格式的互相组转换,转换成各自看得懂的内容,比如我们看到的是图片、文字、音频、视频等内容,但是计算机看不懂这些,需要转换成计算机能看懂的“语言”形式,同样的计算机的“语言”形式,用户也看不懂,同样需要转换成成用户能看懂的形式。
会话层
OSI参考模型的第五层,管理和协调不同主机上各种进程之间的通话,负责建立、维护、终止。在Windows上面其实很好体现,通过CMD输入netstat -anob,就可以看到主机上面各种进程的会话信息,有建立的,有超时的,比如下面使用同一个浏览器(edge),访问不同的网页服务,在计算机里面有不同的进程,当用户访问优酷完毕后,关掉了这个浏览器的页面,那么对应的整个进程的状态会变成结束,会话层就会关掉这个进程。
OSI参考模型的第四层,为上几层协议提供主机之间端到端的可靠或者不可靠访问(经常听到的TCP与UDP),并且通过端口号+地址来区分不同的应用进程。(如上图netstat -anob进程里面,包含地址+端口号)
网络层
OSI参考模型的第三层,在网络层将数据传输到目的地,主要负责寻址和最优路径的选择。
数据链路层
OSI参考模型的第二层,在通信传输过程中,实际上都是通过物理介质进行传输实现(比如有线、WIFI、光纤),数据链路层的作用就是把物理层的比特流划分成数据帧传输,并且在不同的链路层有不同的寻址方式(比如以太网、PPP)
物理层
OSI参考模型的第一层(最底层),负责逻辑信号(比特流)与物理信号(电信号、光信号)之间的相互转换,并且通过传输介质为数据链路层提供物理连接。
TCP/IP协议
上面提到OSI 7层参考模型在实际中并没有被使用,真正目前广泛使用的则是TCP/IP协议,主要原因(仅代表个人观点)
- 历史原因:计算机网络发展开始之处,各大厂商为了能在数据通信网络占据主导地位,都推出了各自的网络架构体系跟标准,比如IBM公司的IPX(玩过红警的都知道),Apple公司的Apple Talk协议等,并且针对自己的协议推出了不同的硬件跟软件,各个厂商的努力促进了整个网络技术的快速发展和网络设备种类的增长,但是带来了一个严重的问题,各个厂商有自己的标准跟协议,使得整个网络变的越来越复杂,并且协议之间大部分兼容性存在问题,无法进行通信,这个就是OSI参考模型出现的原因,试图让计算机网络世界各种终端、协议之间能够相互通信,达成互联。这个理想是很美好的,但是在OSI参考模型成立研究之前,就已经有人研究出来了两个协议,分别是TCP与IP协议(后续版本改名为TCP/IP),并且开始在大学学院之间开始进行测试,随着不断的人员加入测试并且完善,并且能够兼容各个厂商平台的协议特性,就使得大量厂商开始使用TCP/IP协议,尽管后面推出了标准OSI参考模型,但是此时TCP/IP协议已经在大范围内开始运行,并且由IETF组织不断的进行完善推进。
- 理想与现实:OSI模型属于理论型产物,分层太过于明细,导致在实际产物的时候,成本、周期等增加,并且OSI并没有在实际中验证过,存在不确定性,导致很多公司不愿意使用OSI,对于比TCP/IP来说,已经在网络中大范围开始使用,有市场验证,而且TCP/IP协议对比OSI来说简单些,实现起来比较容易,更加符合市场的需求,最终TCP/IP成为了使用的主流,用到至今。(目前使用的主流是TCP/IP V4,也推出了V6版本,在慢慢的普及)
- 会发现在TCP/IP协议体系中会话层与表示层没有了,并不是消失了,而是“合并在了应用层里面”,应用程序开发的时候,都会涉及到会话ID、将不同的文字、图片、音频、视频有不同的表示,而OSI模型它希望把会话层与表示层独立出来:让不同的应用程序共享“会话层””与表示层”,但是这个愿望一直没有实现过,原因是不同应用程序有不同的会话ID、表示内容,程序开发者直接在应用开发的时候就把“会话层”“表示层”需要的内容完美的给实现了,对于程序开发者来说实现起来更加方便,也更效率。
- 其他层与OSI参考对应的作用是一致的。
- 一定要记住TCP/IP协议体系是随着互联网发展不断的在加入新的技术以及完善,也有设计之初没有考虑到internet发展的这么壮大,也是遗留下来一些问题。(这个随着慢慢的学习,会有所体会)
分层有什么好处?
举几个例子,来理解下分层的概念跟好处(生活中的举例只能让我们方便去理解,实际网络处理起来会更加复杂)
(1)公司有多个部门,每个部门都有一个部门经理、一个助理,助理负责帮忙处理很多琐事,这个时候A经理有一份文件想让B经理签字,把文件交给了A助理,A助理将文件交给B助理,B助理把文件交给了B经理,B经理签字完成后,在由B助理交给A助理,A助理交给A经理,完成整个过程。
对于经理来说,他们关心的是这份文件的签字;对于助理来说,他们关心的是如何以效率的方式送到双方完成经理交代的任务。
可以把经理看作是上层,他不会关心A助理具体是如何将文件交给B助理的,不管你是面对面交付还是邮寄、叫跑腿,同样的助理作为下层,他也不会去关心这份文件的内容是什么。从这个角度可以发现,下层(助理)对上层(经理)提供了透明的服务,上层只关注下层是否能够提供正确的服务,分层在这里可以看成是层层交付 ,下层向上层提供服务,对于上层来说,如同A、B经理之间直接完成的签字交付,他们不关心下层(底层)的具体细节操作与实现,相当于底层是透明的存在。(比如我们用浏览器访问优酷,浏览器就会发送请求,对于浏览器来说,它不会去关心具体是怎么到达优酷服务器的,是从电信出去的、或者联通、还是移动)
(2)计算机网络其实是一个庞大的群体体系,包含了非常多的方向,数通工程师、安全工程师、无线工程师、核心骨干网、系统运维工程师、程序开发工程师、前端、后端等,如果不区分方向,把每个方向的具体作用跟分工划分出来,都合并到一起,没人能够这么全面的掌握其内容,不利于职业的发展跟岗位人才的培养,同样在TCP/IP协议体系中,每一层都有对其的职责跟分工,大家各司其职,这样不管从效率还是实现起来更加的容易。
(3)便于排错定位问题
假设某个公司要组建一套网络,有网络设备、有服务器,它想划分成2个区域,一个服务器的一个办公的,并且两个区域之间访问没问题,另外服务器区域要搭建各种的服务,这个公司请来了两个工程师,一个数通网络工程师,一个系统运维工程师,数通网络工程师负责把网络设备跟区域之间的底层打通,而系统运维工程师,负责把服务搭建起来,在验收的时候出现了一个问题,客户发现办公区访问不到服务器区域,客户又找到两个工程师,让他们来处理这个故障。(从服务器角度来看,它们跑的都是应用,提供服务为主,而办公区到服务器涉及的则是网络层与数据链路层的转发,从不同层次的作用去检查对应的服务是否正常工作来定位解决问题会比盲目的找要轻松很多。)
(4)从学习的角度来说,这个其实跟第二点很相似,比如学习路由交换,主要精力是放在网络层与链路层(后面经常称为三层与二层),把某个网络的底层链路都连通起来,至于在这个网络上面跑什么样的应用,不去关心。而像程序开发、前端、后端这些主要精力则是放在应用层上面,应用程序搭建好了,接入到网络里面来,至于它怎么被人访问到的,怎么实现的,不去关注。(这不去关心指的是职责方面,但是作为学习的话,重点放在对应的层面上面即可,而随着知识点的增加可以去了解了解其他层的工作流程,有时候其实也挺有用的)
总结
至此呢,第一篇的内容就算结束了,主要是介绍了OSI模型以及TCP/IP协议体系,从历史的原因讲解了下为什么TCP/IP成为了目前主流,并且讲解了下分层的作用,很多朋友在初学的时候容易被这个体系给困惑到,作为初学者不可能说一次就能够完全掌握以及理解,因为就算是某一个方向,它都涉及到了许许多多的知识点内容,博主其实建议多看几遍,第一遍做一个了解,因为随着你网络知识点的增加以及了解应用数据如何在网络转发后,对网络的体系有了了解,有一个框架以后,在回过头看第二遍、第三遍,你会发现有不一样的理解跟收获,而且新的内容会给你带来新鲜感跟兴趣,有了兴趣学习起来更有动力,如果卡在一个环节过久,容易失去学习的激情,另外对于学习来说,一定要做好笔记,并且在后续中要自己多去尝试,因为网络里面协议你是看不到的,只有你去尝试了,体验了它的工作过程,对于某个协议的原理理解就会更加深刻,因为我们学习技术最终是以客户需求为前提,然后做出整体规划、对接、实施,以及遇到问题后能够定位以及解决故障,并不是说这个我会配置了就行了,协议本身是单一的,你得懂它的原理,并且在什么情况下使用,以及怎么跟其他协议一起工作完成整个网络的对接,这个就是作为初学者在路由交换这块要学习的,也就是本次课程的内容跟目的。(PS:这个是第一次写入门教程,比想象中的难度大多了,这篇我就写了三天才写出来,有不足的地方多多包涵,后续我会尽量以通俗以及举例的方式来讲解知识点的原理,以及应用场景,包括实际客户需求怎么去规划、对接,做到学以致用,在这个方向领域会走的更加长远。)
前言
对于路由交换的课程,构思了两个星期,一直在想一个好的顺序流程,以及怎么去讲解,因为跟之前的两门课程无线与防火墙不一样,路由交换属于数通里面的入门课程,往往面向的是没有基础,或者有点基础很零散的朋友,里面很多协议、数据包转发的过程都比较抽象,所以博主希望以比较通俗的话语加上与实际生活举例来讲解这些比较枯燥的概念,后续在讲解路由交换的时候以实际工作中的常见组网类型从如何规划、对接、运用什么技术,实现客户的需求等方面讲解,让读者可以学完后能够做到学以致用,毕竟学习技术是用来解决实际问题的。(另外说明下,该课程只针对中小型企业搭建使用常见的技术以及架构进行讲解,不会跟官方定义的大纲来,像ISIS、BGP、MPLS这些就不会涉及了)
网络协议
在我们生活中,使用互联网是日常必不可少的事情了,经常会使用电脑或者手机去追剧、购物、聊天、办公,在使用的过程中,其实是会使用到很多的网络协议。
以最常见的家庭网络举例,我们在办理了宽带后(不管从电信、联通、移动),接上一个家用无线路由器简单初始化后,对于用户而言它就可以直接使用了,它不会去关心怎么是实现的上网,上网的过程中发生了什么!但是作为学习计算机网络的我们,这个是必续了解了,毕竟以后是吃饭的家伙。我们使用手机连接WIFI连接到无线路由器,使用的是802.11(WLAN协议),而电脑通常通过网线接入到路由器的LAN口,使用的是以太网(ETHER2协议),在接入的过程中,无线路由器会给电脑、手机下发网络配置信息,这个使用的是DHCP协议,这个时候手机跟电脑获取完成后可以正常开始正常的局域网通信了,访问局域网里面的共享文件夹或者设备,而访问互联网的应用,比如抖音、B站、微信等,就依赖无线路由来进行相关协议的对接,把局域网接通互联网,接通后,那么手机与电脑就可以正常的访问需要的互联网应用了。
这里就带来了一个疑问,互联网各式各样的厂商设备都有,像普通个人用户产品无线路由器设备有TP、华为、华三、小米、华硕等厂商,企业/运营商级别网络产品有思科、华为、华三、Juniper等厂商,服务器有HP、DELL、IBM,终端设备厂商就更多了,那么这些厂商设备在对接的时候怎么保证互相通信不出问题呢?答案就是:网络协议,网络协议的出现就是为了让各方通信设备之间能够通过标准与规范来进行相互交流,制定出来的一套标准,那么这个标准就是下面要介绍的。
OSI参考模型
OSI参考模型把网络协议提供的服务分为7层,定义了每一层的服务内容(把复杂的事情分层次的去完成),但是OSI参考模型只是对各层的服务做了一个大纲,里面具体的协议内容并没有详细的规定,在实际中使用的是TCP/IP协议,OSI更多会出现在考试、面试的环节里面,在这里呢就作为一个了解。
应用层
OSI参考模型的第七层(最高层),直接向用户提供服务,并且规定应用程序中通信相关的细节,比如我们常用的HTTP、HTTPS、邮件、FTP、远程登录等。
表示层
OSI参考模型第六层,负责数据格式的互相组转换,转换成各自看得懂的内容,比如我们看到的是图片、文字、音频、视频等内容,但是计算机看不懂这些,需要转换成计算机能看懂的“语言”形式,同样的计算机的“语言”形式,用户也看不懂,同样需要转换成成用户能看懂的形式。
会话层
OSI参考模型的第五层,管理和协调不同主机上各种进程之间的通话,负责建立、维护、终止。在Windows上面其实很好体现,通过CMD输入netstat -anob,就可以看到主机上面各种进程的会话信息,有建立的,有超时的,比如下面使用同一个浏览器(edge),访问不同的网页服务,在计算机里面有不同的进程,当用户访问优酷完毕后,关掉了这个浏览器的页面,那么对应的整个进程的状态会变成结束,会话层就会关掉这个进程。
传输层
OSI参考模型的第四层,为上几层协议提供主机之间端到端的可靠或者不可靠访问(经常听到的TCP与UDP),并且通过端口号+地址来区分不同的应用进程。(如上图netstat -anob进程里面,包含地址+端口号)
网络层
OSI参考模型的第三层,在网络层将数据传输到目的地,主要负责寻址和最优路径的选择。
数据链路层
OSI参考模型的第二层,在通信传输过程中,实际上都是通过物理介质进行传输实现(比如有线、WIFI、光纤),数据链路层的作用就是把物理层的比特流划分成数据帧传输,并且在不同的链路层有不同的寻址方式(比如以太网、PPP)
物理层
OSI参考模型的第一层(最底层),负责逻辑信号(比特流)与物理信号(电信号、光信号)之间的相互转换,并且通过传输介质为数据链路层提供物理连接。
TCP/IP协议
上面提到OSI 7层参考模型在实际中并没有被使用,真正目前广泛使用的则是TCP/IP协议,主要原因(仅代表个人观点)
- 历史原因:计算机网络发展开始之处,各大厂商为了能在数据通信网络占据主导地位,都推出了各自的网络架构体系跟标准,比如IBM公司的IPX(玩过红警的都知道),Apple公司的Apple Talk协议等,并且针对自己的协议推出了不同的硬件跟软件,各个厂商的努力促进了整个网络技术的快速发展和网络设备种类的增长,但是带来了一个严重的问题,各个厂商有自己的标准跟协议,使得整个网络变的越来越复杂,并且协议之间大部分兼容性存在问题,无法进行通信,这个就是OSI参考模型出现的原因,试图让计算机网络世界各种终端、协议之间能够相互通信,达成互联。这个理想是很美好的,但是在OSI参考模型成立研究之前,就已经有人研究出来了两个协议,分别是TCP与IP协议(后续版本改名为TCP/IP),并且开始在大学学院之间开始进行测试,随着不断的人员加入测试并且完善,并且能够兼容各个厂商平台的协议特性,就使得大量厂商开始使用TCP/IP协议,尽管后面推出了标准OSI参考模型,但是此时TCP/IP协议已经在大范围内开始运行,并且由IETF组织不断的进行完善推进。
- 理想与现实:OSI模型属于理论型产物,分层太过于明细,导致在实际产物的时候,成本、周期等增加,并且OSI并没有在实际中验证过,存在不确定性,导致很多公司不愿意使用OSI,对于比TCP/IP来说,已经在网络中大范围开始使用,有市场验证,而且TCP/IP协议对比OSI来说简单些,实现起来比较容易,更加符合市场的需求,最终TCP/IP成为了使用的主流,用到至今。(目前使用的主流是TCP/IP V4,也推出了V6版本,在慢慢的普及)
- 会发现在TCP/IP协议体系中会话层与表示层没有了,并不是消失了,而是“合并在了应用层里面”,应用程序开发的时候,都会涉及到会话ID、将不同的文字、图片、音频、视频有不同的表示,而OSI模型它希望把会话层与表示层独立出来:让不同的应用程序共享“会话层””与表示层”,但是这个愿望一直没有实现过,原因是不同应用程序有不同的会话ID、表示内容,程序开发者直接在应用开发的时候就把“会话层”“表示层”需要的内容完美的给实现了,对于程序开发者来说实现起来更加方便,也更效率。
- 其他层与OSI参考对应的作用是一致的。
- 一定要记住TCP/IP协议体系是随着互联网发展不断的在加入新的技术以及完善,也有设计之初没有考虑到internet发展的这么壮大,也是遗留下来一些问题。(这个随着慢慢的学习,会有所体会)
分层有什么好处?
举几个例子,来理解下分层的概念跟好处(生活中的举例只能让我们方便去理解,实际网络处理起来会更加复杂)
(1)公司有多个部门,每个部门都有一个部门经理、一个助理,助理负责帮忙处理很多琐事,这个时候A经理有一份文件想让B经理签字,把文件交给了A助理,A助理将文件交给B助理,B助理把文件交给了B经理,B经理签字完成后,在由B助理交给A助理,A助理交给A经理,完成整个过程。
对于经理来说,他们关心的是这份文件的签字;对于助理来说,他们关心的是如何以效率的方式送到双方完成经理交代的任务。
可以把经理看作是上层,他不会关心A助理具体是如何将文件交给B助理的,不管你是面对面交付还是邮寄、叫跑腿,同样的助理作为下层,他也不会去关心这份文件的内容是什么。从这个角度可以发现,下层(助理)对上层(经理)提供了透明的服务,上层只关注下层是否能够提供正确的服务,分层在这里可以看成是层层交付 ,下层向上层提供服务,对于上层来说,如同A、B经理之间直接完成的签字交付,他们不关心下层(底层)的具体细节操作与实现,相当于底层是透明的存在。(比如我们用浏览器访问优酷,浏览器就会发送请求,对于浏览器来说,它不会去关心具体是怎么到达优酷服务器的,是从电信出去的、或者联通、还是移动)
(2)计算机网络其实是一个庞大的群体体系,包含了非常多的方向,数通工程师、安全工程师、无线工程师、核心骨干网、系统运维工程师、程序开发工程师、前端、后端等,如果不区分方向,把每个方向的具体作用跟分工划分出来,都合并到一起,没人能够这么全面的掌握其内容,不利于职业的发展跟岗位人才的培养,同样在TCP/IP协议体系中,每一层都有对其的职责跟分工,大家各司其职,这样不管从效率还是实现起来更加的容易。
(3)便于排错定位问题
(4)从学习的角度来说,这个其实跟第二点很相似,比如学习路由交换,主要精力是放在网络层与链路层(后面经常称为三层与二层),把某个网络的底层链路都连通起来,至于在这个网络上面跑什么样的应用,不去关心。而像程序开发、前端、后端这些主要精力则是放在应用层上面,应用程序搭建好了,接入到网络里面来,至于它怎么被人访问到的,怎么实现的,不去关注。(这不去关心指的是职责方面,但是作为学习的话,重点放在对应的层面上面即可,而随着知识点的增加可以去了解了解其他层的工作流程,有时候其实也挺有用的)
总结
至此呢,第一篇的内容就算结束了,主要是介绍了OSI模型以及TCP/IP协议体系,从历史的原因讲解了下为什么TCP/IP成为了目前主流,并且讲解了下分层的作用,很多朋友在初学的时候容易被这个体系给困惑到,作为初学者不可能说一次就能够完全掌握以及理解,因为就算是某一个方向,它都涉及到了许许多多的知识点内容,博主其实建议多看几遍,第一遍做一个了解,因为随着你网络知识点的增加以及了解应用数据如何在网络转发后,对网络的体系有了了解,有一个框架以后,在回过头看第二遍、第三遍,你会发现有不一样的理解跟收获,而且新的内容会给你带来新鲜感跟兴趣,有了兴趣学习起来更有动力,如果卡在一个环节过久,容易失去学习的激情,另外对于学习来说,一定要做好笔记,并且在后续中要自己多去尝试,因为网络里面协议你是看不到的,只有你去尝试了,体验了它的工作过程,对于某个协议的原理理解就会更加深刻,因为我们学习技术最终是以客户需求为前提,然后做出整体规划、对接、实施,以及遇到问题后能够定位以及解决故障,并不是说这个我会配置了就行了,协议本身是单一的,你得懂它的原理,并且在什么情况下使用,以及怎么跟其他协议一起工作完成整个网络的对接,这个就是作为初学者在路由交换这块要学习的,也就是本次课程的内容跟目的。(PS:这个是第一次写入门教程,比想象中的难度大多了,这篇我就写了三天才写出来,有不足的地方多多包涵,后续我会尽量以通俗以及举例的方式来讲解知识点的原理,以及应用场景,包括实际客户需求怎么去规划、对接,做到学以致用,在这个方向领域会走的更加长远。)
过程,对于某个协议的原理理解就会更加深刻,因为我们学习技术最终是以客户需求为前提,然后做出整体规划、对接、实施,以及遇到问题后能够定位以及解决故障,并不是说这个我会配置了就行了,协议本身是单一的,你得懂它的原理,并且在什么情况下使用,以及怎么跟其他协议一起工作完成整个网络的对接,这个就是作为初学者在路由交换这块要学习的,也就是本次课程的内容跟目的。(PS:这个是第一次写入门教程,比想象中的难度大多了,这篇我就写了三天才写出来,有不足的地方多多包涵,后续我会尽量以通俗以及举例的方式来讲解知识点的原理,以及应用场景,包括实际客户需求怎么去规划、对接,做到学以致用,在这个方向领域会走的更加长远。)
作者:一天,本文首发于公众号:网络之路博客