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

网络通信协议是一个挺窄的方向。相对于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协议最大的作用之一。当然,只是之一,嘿嘿。

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

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

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

  2. 网络通信协议基础(ISIS)——概述

    ISIS协议全称叫Intermediate System to Intermediate System,中间系统到中间系统.这里的中间系统(简称IS)说的是路由器.为啥不直接用路由器,而用这么绕口的名 ...

  3. java爬虫面试题_Java 网络爬虫基础知识入门解析

    前言 说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做 ...

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

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

  5. 计算机网络建设中涉及到哪些硬件,网络基础知识入门

    网络基础知识入门 导语:随着计算机的广泛应用和网络的流行,我们应该要知道一些网络基础知识,下面是小编收集整理的网络基础入门知识,欢迎参考! 计算机网络是什么 这是首先必须解决的一个问题,绝对是核心概念 ...

  6. 网络编程懒人入门(二):快速理解网络通信协议(下篇)

    1.前言 本文上篇<网络编程懒人入门(一):快速理解网络通信协议(上篇)>分析了互联网的总体构思,从下至上,每一层协议的设计思想.基于知识连贯性的考虑,建议您先看完上篇后再来阅读本文. 本 ...

  7. linux c语言 udp 接收和发送数据用同一个端口_网络编程基础入门及TCP,UDP

    1.网络编程入门 1.1 网络编程概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享 ...

  8. Python编程:从入门到实践+爬虫开发与项目实战+网络编程基础+项目开发实战

    给还在苦苦自学Python的小伙伴们分享一波学习教程~有了它们,至少能节省50%的时间,少走一半的弯路. 书不在多,而在于精~ <Python编程:从入门到实践>豆瓣评分9.2 本书是针对 ...

  9. 网络技术入门(一):网络技术基础知识系统归结

    <网络技术入门>系列文章,分别从宏观硬件和微观数据传输角度说明网络传输过程.请期待后续系列文章. 自己写文章习惯性在每一个小节上做总结,有时候方便理解可以先看总结的内容. 本章主要是总结性 ...

  10. TCP IP 网络协议基础入门

    文章目录 1 TCP IP 简介 2 链路层介绍 3 IP网际协议 4 网络层其他协议 5 传输层:UDP协议 6 传输层:TCP协议 7 应用层协议 每层承担的任务不一样,各层的协议的工作方式也不一 ...

最新文章

  1. libsvm java api文档,libsvm-javaAPI
  2. 【SICP练习】143 练习3.81
  3. 第三课 查询指定id的单个对象
  4. 这应该是你见过的最全前端下载总结
  5. matlab pdist2函数官方详解
  6. Java-GUI编程实战之管理系统 Day2【Swing(组件介绍、布局管理器、事件类及监听器类)、基础组件按钮和输入框的用法】
  7. 网络IPC:套接字之建立连接
  8. 学习Spring Boot:(二十四)多数据源配置与使用
  9. activemq spring监听不了
  10. 【转】wget 使用技巧
  11. html基础之 input:type
  12. 放生切勿盲目,放生动物要有选择
  13. UE4官方文档UI学习:1.UMG UI设计器快速入门
  14. Apollo3.0 canbus代码解析(未完成,待修改)
  15. MySql将一张表的数据copy到另一张表中
  16. Stealing Harry Potter‘s Precious BFS+DFS
  17. 树莓派3B+:串口通讯
  18. Linux apache 默认目录结构
  19. 育碧开发了一个 AI 工具,能快速找出代码中的 Bug
  20. java 函数(方法)

热门文章

  1. 数字化项目建设管理难点分析与对策
  2. RV减速器动力学模型静力学matlab程序代码
  3. 天堂2 服务器修改,服务器技术交流_新天堂2-战乱的序幕架设教程_-921根据地_只做有质量的游戏 - Powered by Discuz!...
  4. 深度学习技术在遥感中应用的综述
  5. 编译 mobileTerminal
  6. 移动互联网浩荡十年 有的升腾,有的陨落
  7. Adapter模式简述
  8. sketchup 草图 大师 使用笔记
  9. word三线表最后一行加粗方式
  10. 速达3000数据库结构; 怎么查看速达5000工业版数据库结构