目录
1. 计算机网络历史
1.1 阿帕网
互联网,即Internet始于1969年美国的“阿帕网”
很久很久以前(60年代初),古巴核导弹危机发生,美国和原苏联之间的冷战状态随之升温,核毁灭的威胁成了人们日常生活的话题。在美国对古巴封锁的同时,越南战争爆发,许多第三世界国家发生政治危机。由于美国联邦经费的刺激和公众恐惧心理的影响,"实验室冷战"也开始了。
然而这个时候,大约在1957 年,苏联发射了人类第一颗人造地球卫星。作为当时的两大超级大国之一的美国开始开会,美国国防部认为:卫星的发射提升了苏联的核力量,目前仅有一个集中的军事指挥中心,万一这个中心被原苏联的核武器摧毁,全国的军事指挥将处于瘫痪状态,其后果将不堪设想。因此有必要设计这样一个分散的指挥系统——它由一个个分散的指挥点组成,当部分指挥点被摧毁后其它点仍能正常工作,而这些分散的点又能通过某种形式的通讯网取得联系。
1967年,罗伯茨来到高级研究计划署ARPA,着手筹建“分布式网络”。人员调度和工程设计很顺利,不到一年,就提出阿帕网的构想。
1968年,罗伯茨提交研究报告《资源共享的计算机网络》,其中着力阐发的就是让“阿帕”的电脑达到互相连接,从而使大家分享彼此的研究成果。
根据这份报告组建的国防部“高级研究计划网”,就是著名的“阿帕网”,拉里·罗伯茨也就成为“阿帕网之父”。
于是作为对苏联的响应,美国国防部(DoD)组建了ARPA(“阿帕”,是美国高级研究计划署(Advanced Research Project Agency)的简称),开始将科学技术应用于军事领域 。
1969年底,阿帕网正式投入运行,奠定了Internet存在和发展的基础,但是只有4个结点,分布在洛杉矶的加利福利亚州大学洛杉矶分校、加州大学圣巴巴拉分校、斯坦福大学、犹他州大学四所大学的4台大型计算机。以后所有的主机要连接ARPANET只能链连接就近的结点。
大约到了1975年,阿帕网已经连入了100多台主机,并结束了网络试验阶段,于是移交美国国防部国防通信局正式运行。
在上面的基础上,研究人员开始了第二代网络协议的设计工作。这个阶段的重点是网络互联问题,因为不可能仅使用一个单独的网络来满足所有的通信问题,于是ARPA开始研究多种网络互连技术,这就导致了后来的互联网出现。网络互联研究的深入,促进了TCP/IP协议(中译名为传输控制协议/因特网互联协议)的出现与发展。
到1979年,越来越多的研究人员投入到了TCP/IP协议的研究与开发之中。
在1980年前后,阿帕网所有的主机都转向TCP/IP协议。到1983年1月,阿帕网向TCP/IP协议的转换全部结束。同时,美国国防部国防通信局将阿帕网分为两个独立的部分,一部分仍叫阿帕网,用于进一步的研究工作;另一部分稍大一些,成为著名的MILNET,用于军方的非机密通信。
1983年TCP/IP协议成为ARPANET上的标准协议,使得所有使用TCP/IP协议的计算机都能利用互联网相互通信。因而人们就把1983年作为因特网的诞生时间。
1.2 三级结构
1985年,美国国家科学基金会NSF就围绕六个大型计算机中心建设计算机网络,这个网络就叫国家科学基金网NSFNET。它是一个三级计算机网络,分为主干网,地区网,校园网(或企业网)。这种三级计算机网络覆盖了全美国主要的大学和研究所,并且称为因特网中主要的组成部分。世界上许多公司纷纷接入到因特网,通信量急剧增大,使因特网的容量已满足不了需要。于是赚钱的机会来了,美国政府决定将因特网的主干网转交给私人公司经营,并开始对接入因特网的单位收费。现在流量要钱就是这么来的。
1989年,在普及互联网应用的历史上又一个重大的事件发生了。TimBeners和其他在欧洲粒子物理实验室的人----这些人在欧洲粒子物理研究所非常出名,提出了一个分类互联网信息的协议。这个协议,1991年后称为www(World Wide Web 万维网),基于超文本协议――在一个文字中嵌入另一段文字的-连接的系统,当你阅读这些页面的时候,你可以随时用他们选择一段文字链接。万维网只是互联网所能提供的服务其中之一。
还是继续来说互联网,由于最开始互联网是由政府部门投资建设的,所以它最初只是限于研究部门、学校和政府部门使用。除了以直接服务于研究部门和学校的商业应用之外,其它的商业行为是不允许的。
于是1990年代初,当独立的商业网络开始发展起来。然而在这一年,ARPANET实验结束,退出历史舞台。
1991年,第一个连接互联网的友好接口在Minnesota大学被开发出来。当时学校只是想开发一个简单的菜单系统可以通过局域网访问学校校园网上的文件和信息。紧跟着大型主机的信徒和支持客户-服务器体系结构的拥护者们的争论开始了。
到1992年互联网上的主机就超过100万台。那个时候的互联网速率最高也就45Mbit/s。
1.3 多层次ISP
什么是ISP?Internet Service Provider,互联网服务提供者。
1993年开始,NSFNET双拳难敌四手,被若干个商用的英特网主干网取代了,所以政府也不再负责英特网的运营了,于是就出现了ISP(如:中国移动,中国联通,中国电信等)。但是无规矩不成方圆,为了好不容易发展起来的网络不乱套,因此成立了一个国际性组织叫做 因特网协会(Internet Society,简称 ISOC),以便对因特网进行管理以及在世界范围内促进其发展和使用。用户通过ISP来接入互联网,这样一来,终端主机通过路由器与其他的终端进行连接,形成网络,网络与网络之间又通过路由器或者其他网络设备进行连接。
就这样,网络,网络的网络,网络的网络的网络........就形成了目前世界上最大的覆盖全球的互联网。
2. 互联网的组成
互联网由边缘部分和和核心部分组成
2.1 边缘部分
由所有连接在因特网上的主机组成,这些主机又成为端系统。端系统在功能上可能有很大的差别,小的端系统可以是一台普通个人电脑甚至是很小的掌上电脑,而大的端系统则可以是台非常昂贵的大型计算机,端系统的拥有者可以是个人,也可以是单位(如学校、企业、政府机关等),当然也可以是某个ISP(即ISP不仅仅是向端系统提供服务,它也可以拥有些端系统),边缘部分利用核心部分所提供的服务,使众多主机之间能够互相通信并交换或共享信息。
在网络边缘的端系统中运行的程序之间的通信方式通常可划分为两类:客户服务器方式(CS方式)和对等方式(PP方式)。
2.1.1客户服务器方式
这种方式在因特网上是最常用的,也是传统的方式。现在的网络游戏也是客户端服务端:游戏客户端发起操作请求,服务器提供操作服务,类似,我需要游戏角色放大招,按下R键,向服务器发起请求,服务器提供大招的操作。
2.2.2 对等链接
不像C/S方式,不区分服务请求和服务提供,对等连接的两个主机是平等的,对等通信。例如:两个主机对等连接之后,那么他们就可同时访问对方的文件,或者说是共享自己的文件,
2.2 核心部分
核心部分是为了处理边缘部分的信息传递,所以核心部分是大量的路由器组成,其消息传递的方式是分组交换。说到分组交换,就要说到电路交换,报文交换,分组交换这三种消息传递的方式。
2.2.1 电路交换
在电话的发明之初,人们就知道电话线两两连接是不可能的,毕竟没有那么多电话线。于是人们借助于电话交换机将电话连接起来,每一部电话都连接到交换机上,电路交换机使用交换的方法,让电话用户彼此之间进行通信。
在使用电路交换前,必须先拨号请求连接,当被叫用户接收到交换机送来的振铃声,并接听时主叫端到被叫端就建立起来了一条连接,他们就开始通话,在这通话的全部时间内,两个用书始终占用端到端的通信资源。也就是说这是一条专用的物理通路,这条连接保证了双方通话需要的所有资源这些资源在双方通信时不会被其他用户占用。目前的电话,视频通话等都是采用的这一种方式。
2.2.2 报文交换
报文交换是通信双方先建立连接,然后以报文为单位进行信息的传递,在每个结点上进行存储转发(结点就是具有转发功能的点,如路由器,存储转发就是当报文到某一个结点,结点接收,然后找下一个结点,发送出去,例如:快递)
这种方式最大的缺点就是太慢了。比如我要看一部电影,非要等整部电影缓存好了,才能看,那还不得天荒地老。
而且这种方式,如果一旦中途出现问题,又要重新发送整个。。。。
2.2.3 分组交换
为了不让上面的悲伤故事上演,便出现了分组交换。在发送报文之前,把一个报文划分为几个分组后在进行传送 。这样在每个结点上,路由器只用处理一小段数据,然后就可以发送数据,在同一时间肯定是不同的路由器处理,这就加快了速度,提高了效率。因为网络中有很多路由器,所以就要很多路径。然而报文转发就要等每次就收完,才能进行下一次转发,这就比较慢了。对于分组交换,即使中途某一个分组出现差错,我也就只用发一个小的分组就行。就像看电影,就算中途某个帧丢了,最多卡一下,也不影响。
消息的转发方式就是上述的方式,至于怎么具体的转发,下回分解。
3. 体系结构
说完了消息在链路中的转发,就说一下消息在主机上是怎么接受和发送的。也就是说数据是怎么一步一步从网卡上到我们视觉能接收的。
3.1 协议
由于在后面的体系结构中,有个很重要的概念就是协议,所以在说明网络体系结构之前,说明什么是协议。通俗的来说,我们眼中的协议就是一种约定,也就是我们共同要完成某件事情的时候,要遵守的规则,比如游戏规则也可以叫做协议。所以在网络中,就诞生了网络协议:在网络中为了数据的交互而建立的规则,标准或约定。在后面的交网络协议统称为协议。
为什么要有协议:协议是为了保证数据的统一性,也可以是数据格式的同一。
在因特网所使用的最著名的协议就是TCP和IP协议,因此现在所提到的TCP/IP不仅仅是这两个协议,而是整个网络协议,因此他们又叫TCP/IP协议簇。
3.2 OSI 七层参考模型
之所以说是参考模型,是因为其复杂,其完善。在OSI七层参考模型的体系结构中,由低层至高层分别称为物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。下面继续讲故事。
1974年,美国的IBM公司宣布了系统网络体系结构SNA(Sysem Network Archtecture)。这个著名的网络标准就是按照分层(分层最早是阿帕网提出的)的方法制定的。
随着不久,其他一些公司为了不落后,也相继出自己公司的具有不同名称的体系结构。
不同的网体系结构就会带来一个问题——不适配。你用便一个公司生产的各种设备都能够很容易地互连成,但是一且购买了某个公司的网络,当如果购买了其他公司的产品,那么由于网络体系结构的不同,就很难互相连通。例如:你有一个苹果手机,然而充电器坏了,这个时候有一个安卓的充电器,但是你还是用不了,型号不一样。
随网络的发展,越来越多的人想要急切的相互了解,这就愁坏了同网络体系结构的用户。所以为了便不同体系结构的计算机网络都能互连,国际标准化组织ISO于1977年成立了专门机构研究该问题。不久,他们就提出一个试图使各种计算机在世界范围内互连成网的标准框架,著名的开放系统互连基本参考模型 OSI/RM( Open System Interconnection Reference Model)抽象概念被提出——简称为OSI。
在1983年形成了开放系统互连基本参考模型的正式文件,即著名的sO7498国际标准,也就是所谓的七层协议的体系结构。
但是由于其复杂,其不实用最终没有得到广泛应用。。。
3.3 TCP/IP四层体系结构
由于种种原因,作为法律上的国际标准ISO没有得到广泛应用,于是TCP/IP五层模型横空出世,成为事实上的国际标准。作为四层体系结构,它包含了,应用层,运输层,网际层,网络接口层。由于网络接口层没有太多内容,为了学习其原理,综合ISO和TCP/IP的优点,采用五层的体系结构。
为什么要分层?
发挥封装的好处,独立性好,每层都干自己的事情,每一层是不需要知道底层的功能是怎么实现的,只要知道为上一层服务就行;提高灵活性,如果某一层有问题,只需要对某一层进行完善就好。举个例子:一个汉堡。
这个汉堡一共有四层,从上到下第一层是面包,第二层是蔬菜,第三层是鸡排,第四层是面包。所以对于分层的结构,如果想吃牛肉汉堡,我们只需要把鸡排换成牛排,如果想吃菠萝牛肉汉堡,就在上一步的基础上,加一块菠萝。这就是分册的好处,独立,灵活,易于维护。
4. 网络传输的基本流程
4.1 数据包的封装
由于是分层的体系结构,对于上面的每个层,每一层都有自己协议,所以每一层的数据格式是不一样的。当然每一层也不会关注其他层的数据是怎么样的,做自己当前层的事情就行了。由于协议不一样,所以对于数据的叫法是不一样的:传输层,交数据报,网络层叫数据段,在数据链路又叫数据帧,在物理层又叫比特流。
当一个数据从应用层开始,就会在数据的前面加上头部,也叫首部。这个头部里面,也就是每层协议的规则。例如IP头部,里面有源IP地址,目的IP地址,数据的长度等(对于头部信息,会在后面的每一层重点介绍),这个就是数据包的封装。这个就行快递,当我们在某宝上买一款商品的时候,店家就会联系快递,然后对我们买的东西进行打包,然后贴上标签,这就是封装的一个例子。快递员,不关心里面的东西是什么,只用打包,往后发送到下一个地方就行。这就像我们每一层只管加上每一层的协议,不管数据的内容。
4.2 数据包的分用
数据包的分用过程就是解包后的的过程,当一个数据从底层交付上来之后,当前层要把当前层的数据头部给剥掉,这是解包的过程,就是上面封装的逆过程,然后根据这个头部交付给上一层处理,这个过程是分用的过程。
4.3 基本流程
将上面个的两个部分合起来,就是基本流程了。
由于每一层的协议在封装和分用的过程,有可以看成是入栈和出栈的过程,因为先封装的总是后解包的,所以这种层次结构,我们又可成为协议栈。
5. 总结
博文总结了一下内容和概念。
- 互联网发展的三个阶段
- 数据的交互方式
- 网络的体系结构
- 协议
- 协议栈
- 数据包的封装
- 数据包的分用