ISIS协议全称叫Intermediate System to Intermediate System,中间系统到中间系统。这里的中间系统(简称IS)说的是路由器。为啥不直接用路由器,而用这么绕口的名字呢。这里还涉及到组织的背景。

网络设备由很多设备厂商生产,比如中兴、华为、烽火、CISCO、Juniper等等公司。大家都是竞争对手,自然互相之间谈不上什么配合。那么,用户该如何选择设备?难道只能选一家的,并且一直用这一家么?要知道网络设备都很贵的,一般省级的设备都要几百万一台,国家级的设备要上千万的。省级的设备一般一个省要几台到几十台,负责全省所有网络流量的对外和对内转发。而且我们要有配套的机房、安保、消防、降温等设备。这种情况下,网络硬件设施的投入是很大的。我不可能上亿的资金只给一家,那么这里就涉及到了不同厂商互通的问题。CISCO的设备怎么和华为的互通?两家是竞争对手啊,两家的工程师之间是没接触的,那么如何保证两家设备连根网线就能互相传递消息了呢?

这个方式就是协议,简单的说,大家事先协商好交流格式,然后都按照规矩办事,这样就能通信了。就好像中国人、美国人和希腊人交流,大家语言都不通,那么事先做个协商,都用英语,就OK了。

国际上有几种这样的组织,专门制定协议。ISIS协议就是ISO组织制定的。这个组织大家多少都听过。ISIS的文档编号为ISO10589,编号是为了方便查找和交流,毕竟协议题目往往都很长。而另一个组织,叫IETF。IETF搞的TCP/IP标准,很牛吧。很多通信协议都是IETF搞的。ISO做ISIS的时候想推自己的协议,完全没用TCP/IP这一套东西,ISIS也不支持IP,ISO自己想了种地址出来,叫network。IETF和ISO两个组织争协议标准争了好久,当然最后是TCP/IP赢了,大家现在经常看到的都是TCP/IP。而在当时争的时候,ISO当然不想用“路由器”这个名词,于是想了个IS这么个名字。后续ISIS协议里很多名词都和IETF说的是一个东西,但是就是不同的英文单词,也是两家争协议标准的结果。后来,ISIS协议也对自己做了扩展,支持了IP地址。而我们现在要说的这个,就是支持IP地址的ISIS协议。

后续大家也会看到,ISIS协议本身的设计是不区分IP地址族的,IPv4还是IPv6对协议本身无影响。这就是因为ISIS有其自身独特的地址标识结构。对于ISIS来讲IP地址只是后续扩展的,作为承载的信息存在的数据而已。

我大概能想到的应该有如下专有名词,和其对应TCP/IP的名词,后续再想到我们再补充。这些先看个眼熟,后面遇到会说明。

ISIS TCP/IP
IS Router(路由器)
circuit interface
network 相当于路由器标识
adjacency peer/neighbor
   
   
   
   
   

网络协议分很多种,大体上和路由传递相关的有两类,AS内和AS间。对于这两类,我们管他们叫域内路由协议(IGP)和域间路由协议(BGP)

AS是个什么东东,全称叫自治系统(autonomous system)。是啥?先举个例子,联通的网络就是一个AS,移动的是另一个AS。AS就是一个运营商独立管理的一片网络。AS是个抽象的概念,从管理者的角度标识一个网络的范围。有点像学校分班,我是一班的,你是二班的,我们不同班,就不是一个AS。

AS内一般是一个运营商在管理,所以对网络是什么样子了解的都比较清楚。一班的班主任对自己班级当然很了解,但是对二班了解就不多了。但是AS间也是需要沟通的,你拿联通的手机当然能够打通移动的电话,所以AS间需要信息传递。但是,无论从拓扑规模,还是从安全性上考虑,AS间传递的信息都比较有限。联通和移动是竞争对手啊,不能因为想要互相打电话,就让移动知道我内部网络的所有拓扑,这样很不安全。同时,要知道移动网络是覆盖全国的,它的拓扑多大,一台路由器要知道所有拓扑信息,内存估计会爆掉。所以,AS间的路由协议传递的信息主要是路由,不会传递拓扑信息。

ISIS就是属于IGP(域内路由协议)的,它的主要功能就是收集域内的网络拓扑,根据网络拓扑计算出到达各路由器的最短路径。根据最短路径,指导流量转发。

最早的时候,网络中两个路由器要想互相通信,需要配置静态路由,就是网络管理员需要知道两台路由器之间是哪个接口连着的,然后手工配置到达路由器A的路由要从哪个出接口出去。这种方式繁琐,而且当网络拓扑出现故障的时候恢复很慢,需要重新配置。

相信我,现网(目前正在使用中的网络)出现故障的几率很大,而且有的时候需要更换设备,修改线路,都会使得网络拓扑发生变更。

那么像ISIS这种能够自动算路的路由协议就显得很有优势了。自动计算,无需干预,最短路径,响应及时,一般故障后1秒钟之内就能完成重新计算(实际设备一般能够保证不怎么损失流量)。

当然,ISIS协议也有缺点,因为ISIS计算拓扑的最短路径,是依赖于一种叫COST的东西。在IETF组织写的标准里一般叫metric。实际上就是个数字,用来反映链路(网线)的损耗和传输数据的能力。例如,100GB/S的接口,我们可以配置COST为10,10GB/S的接口我们可以配置为100等等。那么这里的问题就在于,ISIS协议总是使用最短路径,也就是从路由器A到路由器B之间COST值的和最小的路径,那么其他路径就不用了。这就造成了一种忙的忙死,闲的要命的情况。这一点对于ISIS来说,没什么好办法解决。

另外,因为ISIS计算路径的时候,需要知道全网的拓扑,所以每台路由器都要存储全网的拓扑信息。ISIS使用最短路径树(SPT)算法计算最短路径,这个算法后面会介绍。但是这个算法有个要求,就是所有路由器必须基于相同的拓扑信息进行计算。ISIS协议最主要的部分,就是保持每台路由器的拓扑信息一致。这一部分的相关动作占用了协议一半以上的篇幅。

那么下面的章节,我们详细的看看ISIS协议究竟如何运作的。

网络通信协议基础(ISIS)——概述相关推荐

  1. 网络通信协议基础(ISIS)——架构

    时隔多年,我已经不在ISIS开发部了,突然看到居然有人评论了我的文章,很高兴. 本来的想法,是把ISIS事无巨细的都写一下,但是一方面是工作量太大,另一方面还涉及信息安全,最重要的是,现在关于ISIS ...

  2. Java网络编程(网络基础(IP端口号网络通信协议)、TCP编程、UDP编程和URL编程原理以及常用方法的实例)

    网络编程 网络基础概述 计算机网络:   把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信息.共享硬件.软件.数据信息等 ...

  3. Java网络爬虫基础概述

    Java网络爬虫基础 Http基础 网络资源一般是Web服务器上的一些各种格式的文件,通过Http协议传输互联网上的数据. 在Java中,通常通过URL标出网络资源的位置和Web服务器建立链接,获取网 ...

  4. java 网络通讯用什么流_Java中打印流,网络通信协议,TCP通信的基础介绍

    1-1.打印流 java.io.PrintStream:打印流 PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式. PrintStream特点: 1).只负责数据 ...

  5. 网络编程懒人入门(一):快速理解网络通信协议(上篇)

    1.写在前面 论坛和群里常会有技术同行打算自已开发IM或者消息推送系统,很多时候连基本的网络编程理论(如网络协议等)都不了解,就贸然定方案.写代码,显得非常盲目且充满技术风险. 即时通讯网论坛里精心整 ...

  6. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等

    文章目录 网络编程概述 网络通信要素 要素一IP和端口号 要素二网络协议 TCP网络编程 UDP网络编程 URL网络编程 Java网络编程基础 网络编程概述 Java是Internet上的语言,它从语 ...

  7. 网络编程基础知识点总结

    网络编程基础知识点总结 一. 概述 本文是网络编程系列的第一篇文章,所以不讲代码,主要是网络编程的一些基础知识,下面的这些知识点主要是对java网络编程这本书的归纳与整理.有兴趣的同学可以看看. 我们 ...

  8. 网络攻防基础(复习)

    文章目录 第 1 章 软件与系统安全概述 第 2 章 扫描与防御技术 2.1 扫描技术概述 2.2 常见的扫描技术 2.3 扫描工具 2.4 扫描的防御 第 3 章 网络监听及防御技术 3.1 网络监 ...

  9. 虚拟化基础架构Windows 2008篇之1-虚拟化基础服务概述

    看完文章,请顺手投我一票(王春海),谢谢 http://edu.51cto.com/activityvote/voteRanking 京东6.18结束了,IT人自己的6.18来了!!!51CTO学院3 ...

最新文章

  1. Java 9 揭秘(19. 平台和JVM日志)
  2. PIL实现两张图片合成一张,和图片加文字
  3. 【小技巧】当你在写博客时突然误删或覆盖原文时怎么办?
  4. SpringMVC的请求-文件上传-文件上传的原理
  5. 牛客假日团队赛6 D 迷路的牛 (思维)
  6. .NetCore如何使用ImageSharp进行图片的生成
  7. tensorflow 保存训练loss_tensorflow2.0保存和加载模型 (tensorflow2.0官方教程翻译)
  8. httpclient依赖_.NetCore 3.1高性能微服务架构:封装调用外部服务的接口方法HttpClient客户端思路分析...
  9. 进击的程序媛:从 Google 第一位程序媛到硅谷女王进化史
  10. python requests_一起看看Python之Requests库
  11. 解决Adobe Flash Player不是最新版本方法
  12. Java Web面试题及答案整理(2021年最新版,持续更新)
  13. bootstrap 下拉列表获取_Bootstrap框架下下拉菜单的实现(代码示例)
  14. ubuntu开机后nvidia驱动突然消失,nvidia显卡驱动卸载与安装
  15. js 删除QQ空间的说说
  16. 有意思的六度分割理论
  17. [教程] 关于一种比较特别的线段树写法
  18. 小程序账号注册完整流程
  19. 香港站群多段服务器VPS大带宽服务器日本站群多段服务器
  20. 医学影像工作站程序ProDicom的说明

热门文章

  1. Java中内嵌浏览器
  2. 用ardupilot 做无人船项目的总结
  3. 返回code400,报错Required request body is missing
  4. kotlin lateinit
  5. 华为电脑管家安装后,只能有线连接,没有无线连接选项的解决办法,华为电脑管家无法连接网络用这个方法也可以解决
  6. 小米上市,工号1000以内千万富翁,100以内亿万富翁
  7. vmware 安装win98报错
  8. Myeclispe 2016 stable1.0版 完美破解
  9. STVP下载提示“Warning: Old ST-Link firmware version detected”
  10. 启动Oracle服务报错:本地计算机上的OracleOraDb10g_homeTNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。