网络通信协议基础(ISIS)——入门

来源:互联网 发布:知其非所以沽名钓誉矣 编辑:程序博客网 时间:2024/05/21 18:38

今天是这个系列博客的开始,第一次写博客,希望这些年自己所学到东西能够帮助更多的人。但是转载的时候还是请注明下是转载的,谢谢啦,嘿嘿。

网络通信协议是一个挺窄的方向。相对于Android、ios、JavaScript、python等等方向,网络通信协议知道的人很少。本文也指在普及一下网络通信协议,让更多的人知道世界上还有这么一群人在维护着这么一堆协议。

想要了解本文,需要拥有一些知识储备,包括如下内容:

1.IP转发原理(看一遍TCP/IP详解卷一的IP章节,了解原理即可,不必精通)

2.二层转发协议(看一遍TCP/IP详解卷一的二层协议相关章节,了解原理即可,不必精通)

好,那么我们先开始我们的旅程。

首先,我们了解一下我们的网络,大家每天都接触,甚至于离不开互联网。但是,互联网究竟是如何组成的呢?最早,当微型计算机刚发明的时候,还是单机时代,每台计算机独立运作。我家的计算机和你家的计算机各玩各的。我想要你家电脑上的游戏怎么办?硬盘、光盘、U盘等等存储介质逐一登场。其实这就是比较原始的信息交互手段。

后来,我们用网线将两台电脑连接起来,这样两台电脑之间就可以通过网线传递数据了,省去了硬盘、光盘、U盘拷来拷去的麻烦。但是,三台以上的电脑怎么办呢?最简单的办法就是用三根网线两两相连,那么四台呢?五台呢?随便一个公司都是好几十个人、几十台电脑,全连接显然太麻烦。

于是,一个叫HUB的东西诞生了。这东西又叫集线器,原理很简单,从一个接口收上来的报文,从其他所有接口都复制一份过去。这样,拓扑就从全连接变成了以HUB为中心的星型连接,瞬间简化了很多。但是,HUB有个问题,是啥呢?就是它是物理层面的复制。HUB里面没有逻辑,没有什么代码,只是简单的把从一个接口收进来的代表报文的电信号复制到其他接口上而已。功能上倒是没啥问题,但是性能上会差一些。比如网络里面有255台机器,A发个报文给B,好家伙,报文到HUB这里,HUB没有逻辑啊,它又不知道你是发给谁的,于是网络里面的255台机器都收到了A发送的报文。这明显对于其他机器来说是个骚扰信息。那怎么办呢?当然是出现更高级的东西了。

这个东西叫交换机,英文名字叫switch。从这个东西开始就有转发逻辑了,不再单纯的复制信息,它能够识别报文中的目的地址。当然,它被设计用来只能识别二层网络协议的目的地址。于是,在一个网络里面,如果A发生报文给B,那么交换机就可以和二层网络协议一起保证报文只会给B,而不会骚扰其他机器。这显然对其他机器来说是个好事情,他们节省了大量用于识别垃圾报文的资源。但是,交换机还有一个不足的地方,就是它无法连接异构网络。交换机被设计只能和二层网络协议一起工作,工作在同一片二层协议的网络里面。但是,随着网络的发展,一个一个独立的局域网络有越来越强烈的愿望想要连接到一起。

后来,路由器出现了,英文名字叫router。路由器没有明确的定义,通用和常见的一个,就是连接异构网络的机器。这里的异构说的是不同的二层协议,比如ethernet和ppp、atm和hdlc等等。路由器被设计工作在IP层,同时也有更强大的逻辑。我们这次要讨论的ISIS协议,主要的应用常见就是路由器。

路由器将不同的网络连接到一起,路由器和路由器之间也可以用路由器再连接到一起,层层叠叠,最终全世界的网络都连接到了一起,形成了互联网。当然,现在也不是只有互联网。我们说的互联网通常指的是internet网络,但是也有其他的网络。几台电脑连在一起就可以叫一个网络,不一定非要是互联网。比如各国军事网络,各公司的内部专用网络,某些组织的私有网络等等,这些都是网络。当然,在日常生活中说的网络,通常说的是互联网。

说了这么多,大家应该对互联网的基础组成有了一定的概念。互联网就是由计算机、网线和网络协议组成。当然,计算机的职责各不相同。家里的电脑是微机,打游戏、上网、看视频。小区机房里的交换机也是计算机,只不过专门负责转发报文,识别地址,保证通信。各县/市/省级的路由器也是计算机,负责各片区所有报文的转发。国家级的路由器也是计算机,负责国际流量的出入口。互联网里面还有其他特殊职责的计算机,比如负责将网址变成IP地址的DNS服务器。负责安全的防火墙。负责提供信息的网络服务器,比如网易、百度、爱奇艺的服务器,存储了大量的信息在里面。

这些计算机有不同的型号,不同的生产时期,不同的技术,不同的硬件,不同的厂家。想一想一台2007年的华硕公司出厂的笔记本,由本厂高级工程师设计,想要访问SUN公司出品的服务器。而这个服务器又是个美国架构师设计的。我们怎么保证这两个人设计出来的计算机能够互相通信?他们甚至都不认识对方,不知道对方的存在。华硕的笔记本不会知道将来用户会访问哪个公司的服务器。他们之间就好像有一道鸿沟。

提个问题,一个韩国人和一个坦桑尼亚人想要互相讨论问题,该如何实现?当然是语言要统一。要么坦桑尼亚人会韩语,要么韩国人会非洲语言。当然,还有第三个选项,大家都说英语。这个在网络里面就是协议,大家事先约定都说英语,这样就能对话了。在网络的世界里面,协议就是这样的作用。协议由国际组织统一规定,各厂商都必须遵守,有了统一的标准,大家就能让不同的计算机互相通信了。

网络协议,就是这么个东西。当然,随着网络的发展,只是简单的互相对话满足不了需求。只会英语不是目的,目的是交流,是协作。也就是说,大家逐渐发现英语不够,要专业英语。普通的专业英语不够,要各领域的专业英语。于是,网络协议的分工越来越细,种类越来越多。制定协议的国际组织IETF,协议从1开始编号,每篇协议一个编号,现在已经七八千了。

ISIS协议就是众多网络协议中的一个,它的作用是负责自动构建路由表。之前说过,网络由不同角色的计算机组成。每台计算机如何知道怎样到达远端的服务器的呢?IP层转发靠的是路由表。路由表里有要访问的机器的地址,那么就能够到达。这一部分参看TCP/IP详解卷一里的IP转发章节。

老式的路由表是网络管理员手工配置的,那时候网络规模小。现在网络越来越大了。手工配置满足不了需求。于是ISIS协议这种能够自动构建路由表的协议越来越重要。ISIS协议能够自动计算到达目的地的最短的路。如果最短的路有好几条,那么还能让这几条路同时承担报文的转发。在最短路径故障时,还能自动换新路径。在出现更好的路径的时候,还能自动换到更好的路径上。完全的全自动,同时也赋予网络管理员一定的控制报文转发的能力,能够决定流量的走向。怎么样?高级吧。网络管理员瞬间省了好多事情。只要配置上ISIS,那么会自动构建路由表,学习远端路由器、服务器的IP地址。等所有地址都学习完毕后。整片网络的IP层就打通了,网络内的任何机器都知道到所有其他机器的路径。

在IP层打通以后,在大家平时看来,就相当于网络连接通了。能ping通地址了。就好像偏远山区通车了一样。当然,光通车是没有用的,在通车之后,会有其他的协议提供真正实用的内容和服务。比如有运商品的车进来,有运山货的车出去,有运人的车进来,有运人的车出去。这些车,这些相当于车的协议,才是给我们真正服务的东西,比如爱奇艺的电影,比如基于HTTP协议的浏览器。但是,一切的基础,就是打通IP层,路要通。而通路,就是ISIS协议最大的作用之一。当然,只是之一,嘿嘿。

0 0