一本书读懂TCP IP(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-30 11:52:57

点击下载

作者:王元杰 杨波 周亚宁 纪旻旻

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

一本书读懂TCP IP

一本书读懂TCP IP试读:

前言

在2005年的贺岁片《天下无贼》中,葛优葛大爷扮演的黎叔有句名言曾经红遍大江南北,风靡一时,那就是:“21世纪什么最贵?人才!”

如果你问我,什么是人才?那我真诚地告诉你,也许多年前,精通一门专业知识便可以成为企业技术能手;而现如今是知识融合的时代,坐井观天,局限于一门技术是没有出路的,不管你是新手,还是老油条,一定要拓宽知识面,做个多面手才能适应形势,才有更大的发展空间。

如果你问我,知识融合时代是神马情况?那我专业地告诉你,知识融合时代最大的特点就是互联网融入到了金融、汽车、家居等各个行业,同时支撑互联网的数据通信又融入到了传输、交换等其他各个专业。而数据通信的基础便是TCP/IP,可见掌握TCP/IP的重要性。

哲学上有三个终极问题,也是微博上拿高校门卫开涮的三句话:你是谁,你从哪里来,你要到哪里去?看似很简单的话,其实很难说的清楚,如果你能说清楚这三句话,那么你就是哲学家了。虽然哲学的问题不好回答,但是技术上的问题却可以讲清楚,本书要讲的内容就是TCP/IP的前生、今世与未来。如果说得详细一点的话,请看本书的目录,如果说得更详细一点的话,请看本书的正文部分。

还记得2013年5月10日,马云在卸任阿里巴巴集团CEO演讲中说道:“这是一个变化的世界,我们谁都没想到今天可以聚在这里,可以继续畅想未来,我跟大家都认为电脑够快,互联网还要快,很多人还没搞清楚什么是PC互联网,移动互联来了,我们还没搞清楚移动互联的时候,大数据时代又来了。”

确实,正如马云所言,这是一个变化的世界。现在请闭上双眼,想一想,二十年前你暗恋过的美女、帅哥,二十年后变成了肥婆、啤酒肚男,你还爱吗?不仅人在变,技术也变。正所谓“长江后浪推前浪,前浪死在沙滩上”,想当年,PDH没火几年就被SDH干掉了,ATM没红几年,就被以太网干掉了,SDH现如今也被IPRAN干掉了,桌面互联网最终也可能被移动互联网干掉。移动互联网时代,衍生了各种新技术,新业务,本书最后一章专门介绍了云计算、大数据、物联网等新知识、新技术。

做人要实在,在此友情提示,本书是在《漫话IP》一书基础上改编而成的,不过就像佛语常说的看山三境界:看山是山→看山不是山→看山还是山,每次都有不同的体会,有的人读书学到了知识,有的人读书学到了人生哲理,相信你读完本书会有不同的收获。也许你会说,别扯了,你这本技术书,还能学到什么人生哲学。那我问你TCP/IP提供的网络有什么特点?没错,就是尽力而为,那就对了,TCP/IP带给我们的第一个人生哲学便是尽力而为,正如王安石在《游褒禅山记》中所说“尽吾力而不至者,可以无悔矣,其孰能讥之乎”,其他从书中慢慢体会吧。

当然了,写书就要拿出自己的看家本领来,不是“老王卖瓜,自卖自夸”,以下文字属实,请各位检阅:“本书行文风格活泼,采用了大量漫画,图文并茂,语言风趣,结合现实,将复杂的相关原理、技术通俗化,让读者易于理解和接受;适合从事企业信息化建设和应用的技术人员、从事多媒体通信技术、信息处理技术、通信工程技术、计算机应用技术领域的初级科研和工程技术人员阅读,也可以供中高等院校相关专业师生参考”。

本书在编著过程中,得到了各级领导和朋友的帮助,在此感谢。

由于编者水平有限,书中难免有瑕疵,还望各位读者多多指教。编者2015年11月第1章TCP/IP网络起源

有人说在西天取经的路上,孙悟空是最大的功臣,唐僧懦弱无能,只会念经。在这里我要为唐僧说几句,师徒四人西行路经110个国家,语言差别大,怎么沟通?其实全靠唐僧,因为唐僧是一个翻译家,精通多国语言。计算机与计算机之间要相互通信,也必须“读”懂对方的“语言”,这种语言就是网络协议。计算机必须运行相同的协议,才能相互通信,传输控制协议/网际协议(Transfer Control Protocol/Internet Protocol,TCP/IP)就是为此而生。

任何一门技术的出现,绝对不是偶然,而是必然,是顺应科技发展的产物,TCP/IP也不例外。正如万丈高楼平地起,楼有多高看地基,掌握TCP/IP知识是学习数据通信的基础,也是通信小兵变技术大牛的必经之路。在本章,我们先来看看TCP/IP的起源。1.1 TCP/IP的产生背景

TCP/IP是伴随着互联网的发展而研发出来的,还是让我们从头说起吧。

第二次世界大战结束,苏美两国各自发展了自己的势力范围,成为世界的两极。这两极不是在好好发展经济上竞争,而是在军备上展开竞争。这两个庞大的国家机器进行着无声的对垒。这就是著名的“冷战”。

1962年,苏联向古巴运送导弹,企图在古巴建立导弹发射场,被美国U-2侦察机发现。美国总统肯尼迪下令对古巴实行军事封锁,并进行战争威胁,苏联被迫撤走导弹,危机才平息。古巴核导弹危机导致美国和原苏联之间的冷战状态随之升温,核毁灭的威胁成了人们日常生活的话题。

美国国防部(DoD)认为,如果仅有一个集中的军事指挥中心,万一这个中心被原苏联的核武器摧毁,全国的军事指挥将处于瘫痪状态,其后果将不堪设想,因此有必要设计这样一个分散的指挥系统——它由一个个分散的指挥点组成,当部分指挥点被摧毁后其他点仍能正常工作,而这些分散的点又能通过某种形式的通信网取得联系。

1969年,美国国防部高级研究计划署(ARPA)的领导利克利德提出“巨型网络”的概念,设想“每个人可以通过一个全球范围内相互连接的设施,在任何地点都可以快速获取各种数据和信息”。哇!领导就是领导,这个概念的提出无疑是今天的互联网的精辟总结!

当然,革命的实践比革命的理论更牛,这是领导始料未及的。紧接着,在利克利德的资助下,一群天才的科学家们建立了名为阿帕网(ARPAnet)的网络。

1969年9月美国军方阿帕网问世。图1.1 阿帕网的设计师们

在阿帕网产生运作之初,大部分计算机相互之间不兼容。在一台计算机上完成的工作,很难拿到另一台计算机上去用;想让硬件和软件都不一样的计算机联网,也有很多困难。当时美国陆军用的计算机是DEC系列产品,海军用的计算机是Honeywell中标机器,空军用的是IBM公司中标的计算机,每一个军种的计算机在各自的系统里都运行良好,但却有一个大弊病:不能共享资源。

当时科学家们提出这样一个理念:“所有计算机生来都是平等的。”为了让这些“生来平等”的计算机能够实现“资源共享”就得在这些系统的标准之上,建立一种大家共同都必须遵守的标准,这样才能让不同的计算机按照一定的规则进行“谈判”,并且在谈判之后能“握手”。这里说到的标准、规则就是我们现在所说的通信“协议”的概念。

在确定今天因特网各个计算机之间“谈判规则”过程中,最重要的人物当数温顿·瑟夫(Vinton G.Cerf)。正是他的努力,才使今天各种不同的计算机能按照协议上网互联。温顿·瑟夫也因此获得了与蒂姆·伯纳斯·李(Tim Berners-Lee)、罗伯特·卡恩(Robert Elliot Kahn)一样的美称——“互联网之父”。图1.2 温顿·瑟夫

1970年12月制定出来了最初的通信协议是由罗伯特·卡恩开发、温顿·瑟夫参与的“网络控制协议”(NCP),但要真正建立一个共同的标准很不容易。

1972年,计算机业和通信业的拔尖儿人才齐聚美国首都华盛顿,大伙儿一起参加了第一届国际计算机通信会议。

在热烈的讨论氛围中(第一次会议往往都是热闹非凡的,大家都有新鲜感),会议决定在不同的计算机网络之间达成共通的通信协议。

随后,石破天惊的互联网处女秀开场了——会议决定成立互联网工作组(The Internet Engineering Task Force,IETF),负责建立这种标准规范。这是互联网第一次出现在世人面前,也是第一次从“官方”的嘴中蹦出来!

早期协议,如Telnet(用于虚拟终端仿真)和文件传输协议(FTP)是最早开发的,以指定通过阿帕网共享信息所需的基本实用程序。随着阿帕网在规模和作用范围上的日益扩大,出现了其他协议。

1973年的世界正处在冷战的高峰期,美国仅有三个互相联系的计算机网络都用于国防或学术,并不对公众开放。温顿·瑟夫与罗伯特·卡恩提出将三个网络合并,尝试设计一个“网关”计算机互连具有不同协议的网络,让计算机和计算机之间的沟通敞开和透明。1974年他们提出命名为TCP的分组网互通协议,随后发表的著名的论文将TCP分为TCP/IP,开始布设可以架构在现有和新的技术上的互联网,让大家使用它自由的分享。“互联网一直面临斗争和挑战”,如果温顿·瑟夫和罗伯特·卡恩当年把TCP/IP视为私有财产而申请专利,就不会有今天的互联网的成功。更重要的是他为其统一标准,花了整整十年的时间推广这项新技术,用各种方式说服人们认可并尝试使用它。

在1974年,传输控制协议(TCP)作为规范草案引入,它描述了如何在网络上建立可靠的、主机对主机的数据传输服务。这意味着处于散兵游勇状态的计算机网络能够通过协议进行通信,也表示互联网不但有了名头,并且在“团结就是力量”的真理指引下,具备了令世人瞩目的话语权!

1975年,比尔·盖茨与保罗·艾伦创办了微软公司。

1981年,Internet协议(IP)以草案形式引入,它描述了如何在互联的网络之间实现寻址的标准以及如何进行数据包路由。

1983年1月1日,阿帕网开始对所有的网络通信和基本通信都要求标准化,由过去的NCP改变为TCP和IP。

1983年,阿帕网分裂为两部分:用于军事和国防部门的军事网(MILNET)和用于民间的阿帕网版本。同时,局域网、广域网的产生和蓬勃发展对Internet的进一步发展起了重要的作用。其中最引人注目的是美国国家科学基金会ASF(National Science Foundation)基于IP建立的名为NSFNET的广域网。NSF在全美国建立了按地区划分的计算机广域网并将这些地区网络和超级计算机中心互联起来。阿帕网为主干网的互联网,只对少数的专家以及政府要员开放,而以NFSNET为主干网的互联网向社会开放。

1984年,美国国防部将TCP/IP作为所有计算机网络的标准。

1989年蒂姆·伯纳斯·李(Tim Berners-Lee)发明了首个网页浏览器——万维网(World Wide Web,WWW),1991年5月WWW在Internet上首次露面,立即引起轰动,获得了极大的成功,并被广泛推广应用。TCP/IP网络大发展时代的序幕由此拉开。图1.3 蒂姆·伯纳斯·李

1990年6月NSFNET彻底取代了阿帕网而成为Internet的主干网。到1991年,NSFNET的子网已经扩展到3 000多个,由此奠定了今天异常繁荣的互联网之基础。

蝼蚁再多,也无法撼动大象,NSFNET独木难支,并不足以支撑起今天互联网时代华丽的开局。实际上,NSFNET吸引的用户当中不仅包含有很多学术团体、研究机构,至为重要的是,个人用户也开始参与到这个网络当中。越来越多不同类型用户的加入,让这个无趣的资源共享区开始变得热闹非凡。

人们渐渐地不安分于板着面孔交流资料,各种形式的沟通也开始盛行并越来越有吸引力。E-mail、BBS、FTP、Telnet等,都是互联网产生初期人类智慧的结晶。

1995年,微软Internet Explorer浏览器(IE1)诞生。

1996年,4个并不是科班出身的以色列籍犹太小伙发明了ICQ。

至此,互联网完成了由资源传播通道到交流通信平台的角色转换,这个转换过程缓慢而细微,就如同一场天街小雨,轻柔地滋润着这多彩的世界。

1996年,美国克林顿政府提出“下一代Internet计划(NGI)”。

随后的20年,一大批太阳、月亮和星星一样的企业横空出世,一大批业界精英粉墨登场,一大批新技术、新思路、新理念、新思维风起云涌、叱咤风云……

1999年,腾讯公司推出腾讯QQ(简称QQ),同年新浪公司推出“新浪微博”。图1.4 TCP/IP大行其道

2001年,微软发布Windows XP操作系统。

2003年,淘宝网成立。

2011年,腾讯公司推出微信(WeChat)。

2012年,伦敦奥运会开幕式上,蒂姆·伯纳尔斯·李出现在场地中央,他在键盘上敲出一行字,此时大屏幕上显示“This is for everyone”,意喻万维网是送给世界上每一个人的礼物。

2016年,TCP/IP大行其道,它无所不在,无坚不摧,无往不利,战无不胜,攻无不克……1.2 TCP/IP是什么

IP世界的根本大法,是TCP/IP协议族。

IP世界是由通信实体构成的,而通信实体,是要分层的。

就如一个公司混乱的管理要进行改革一样。我们首先思考一下一个企业最可能出现的管理混乱有哪些表现。

员工“越界”:员工不经过部门经理直接向公司总经理汇报工作;秘书经常到总经理处指责其对公司的未来规划缺乏经验。

部门经理做“二传手”:提交给总经理的汇报,是员工汇报的简单叠加;总经理给部门经理分配的工作,部门经理不做思索地推给某个员工。

两个部门之间职责不清:市场部经理经常指责客服部员工A,因为A没有按照市场部经理的要求向某个客户提供服务,而是把有限的时间给了另外一个客户,而这个工作是由客服部经理指派的;采购部经理要求市场部员工B在某个项目中必须向客户提供联想品牌笔记本电脑,而实际情况是,客户要求必须使用SONY笔记本电脑但采购部经理并不知情。

总经理一抓到底:布置任务跳过部门经理直接与员工沟通,而部门经理也经常布置任务给员工,部门经理无从了解员工的工作量,总经理也无法把控任务的进度。

公司与客户接口混乱:任何人都可以向客户随意承诺,而承诺出来的东西又无法兑现。

不管你做多少培训、增加多少职业经理人,最终改变这种状况的,无非是以下几个举措。

分层:要把总经理——部门经理——员工的三层结构搞清晰,每层的职责范围明确定义。公司总经理负责公司战略和重大事务的处理;公司部门经理负责管理部门,向公司总经理汇报工作;公司员工负责具体事物处理,向部门经理汇报工作。

明确层之间的关系:需要明确任何一个层面的人员,其与上下层的关系;总经理将公司战略和要求部署给每个部门经理,每个部门经理细化后部署给每个员工。

对等层之间的关系:需要明确任何一个层面的人员,与对等部门或对等公司的关系(对等公司如客户和原材料供应方)。

这样,公司都形成了三个层次的机构,每个层次都与上下层次的权责清晰明了,对外业务接口统一,沟通渠道通畅,业务流程规范。

通信实体也必须分出层次,以保证各种网络技术能和谐地共存和良好地配合,并不断激励技术创新。通信网的分层,与公司的组织结构极其相似。加入通信网中的各个实体就好比一个个公司,比如路由器是一个通信实体,某个通信软件(如浏览器或者QQ)是一个通信实体,网络游戏的服务器软件和用户端软件都是通信实体。这些实体必须满足以下要求。

要分出若干层次,管理上类似的功能要放在同一层,在实现技术经常变化的地方增加层次,每个层次有自己的职责。

要明确每个层次与上下层的关系,层次之间的边界要合理,使层次间的信息流量尽量最小且容易规范。

两个实体之间要明确每个层面之间的关系。

1.OSI RM(开放系统互连参考模型)

基于上述要求,国际标准化组织(ISO)于1984年建立了一套非常抽象的分层结构,这就是著名的ISO/OSI(国际标准化组织的开放网络架构)。与其说这是一个通信标准,不如说这是一种管理哲学。任何事物之间的联系都可以用OSI表示出来,虽然不是所有的事物都必须具备其所有的层面(通信网本身大部分实体也不具备其所有层面),但是这对我们分析事物是非常有帮助的。

两个通信实体可以友好合作、充分信任,但是也可以不互相信,可以打架、骂人,但是它们必须能互相理解对方说的是什么。

就像两国冲突,他们可以打若干年的仗,但是必须都具有能互相理解的语言展开外交辞令,可以和谈、破裂,可以下战书、声明、抗议。如果没有统一的能互相理解的语言,那叫鸡同鸭讲。

为了让两个通信实体保持最基本的沟通,在“层”的基础上,专家们定义了“协议”、“标准”和“规范”。

我们把这7层OSI结构与实现生活中的“说话”联系起来,有助于大家对OSI的理解,如表1.1所示。表1.1 OSI参考模型(1)物理层

物理层就像人与人沟通中的能够互相听懂的“发音”。物理层解决最基础的传送通道,涉及问题主要是建立、维护和释放物理链路所需的机械的、电气的/光学的、功能的和规程的特性,如光缆如何抗衰耗,无线设备如何提高发射功率,为什么双绞线要有屏蔽层等。(2)数据链路层

有了发音,才能有“字”或者“词”,对于说错的话,要尽快予以纠正;如果不能很好地纠正,就要重新把话再说一遍。

接下来,我们开始考虑在物理层提供的按“位”服务的基础上,在相邻的网络节点之间提供简单的、传输以帧为单位的数据,同时它还负责数据链路的流量控制、差错控制。

首先,数据链路层为网络层提供“简单”的通信链路,通信实体所在的系统必须经过物理介质直接相连——当然,这物理介质可以是有线的铜缆或者光缆,也可以是无线的微波。

大家要理解,这条链路不具备任何路径选择和转发功能,你可以把它仅仅理解为“一条封闭的路”,除了两端,没有额外出入口。

数据链路层将物理层提供的比特流组成“帧”,也就是说,把发送方发出来的若干“位”的数据组成一组,加上“开始”“结束”标志和与检错有关的代码等,形成有固定格式的数据帧——这有点像把货物放入标准集装箱中,正因为集装箱的体积、尺寸都是标准的,最后所有的集装箱看起来非常整齐,搬运和船载过程也会变得有序和规范。

本层要提供一定的差错检验和纠正机制。信号会因机械、电气等原因,出现错误,如将“0”“1”颠倒,丢失一个“0”或“1”,或者因为外界干扰而多出一位数字。接收者根据检错代码就可以判断收到的数据帧是否有错误,并在可能的情况下纠正错误。不能纠正的错误可以选择重传。

这里面很有学问。发送的信息,接收方是不清楚的。但是如何让接收方知道发送过来的信息有错误呢?对付这种问题,数据链路层有应对策略。

假如我们运送的不是数据信息而是货物,运送工具不是帧而是车。这个问题怎么处理?

发货方出货前,将附带一张“装箱单”,单子上标明了这车货物的相关参数,比如重量、体积、品质,接收方只需要称重量、测体积以及检验品质,并和装箱单上的数据做对比,即可判断运送过程中是否出现错误或者失误。

数据帧传送也有类似装箱单一样的信息,存储在“纠错字节”中。当数据帧到达目的地,它会对自身进行计算,计算结果和纠错字节中的内容进行对比。如果一致,进行下一步操作。如果不一致呢?这个类似“装箱单”的纠错字节就能够很快将错误检测出来并进行相应处理(比如进行重传)。

以太网就属于这一层。所以你会经常听到“以太网帧”这一术语。(3)网络层

我们继续分析日常说话的方式。说话应该有目标、内容和语速,向谁说,通过谁转述,说什么,以多快的速度说。网络层所干的工作,就是进行路由选择、拥塞控制和网络互联。

网络层对自己的上级——传输层,可以提供两种服务,一种叫作“面向连接”的网络服务,一种叫作“无连接”的网络服务——这有点像有轨交通和无轨交通。

有轨交通的特点是,车辆沿着特定轨道行驶,自出发点到目的地,路线、速度基本确定。面向连接的服务也有类似特点。

无轨交通的特点是,车辆走一站看一站,线路、速度均不确定。无连接的服务与此惊人一致。图1.5 面向连接与无连接服务

这两者的区别,直接导致相关技术体制的巨大差异。面向连接的服务关注于如何建立链路,而无连接的服务则专注于在每一站建立一套详尽的路由表。

传统IP技术就是无连接服务,而改造为MPLS(多协议标签交换)网络后,就属于面向连接的服务了。

网络层担负着的四大任务如下。

路由选择。任何数据包都不可能在网络上像无头的苍蝇乱跑乱撞,而网络层的关键任务是发现路由、选择路径,有时,也负责地址转换。它就像一个警察,在网络节点这样的“十字路口”管理来来往往的数据包,数据包的路径选择就是我们经常提到的“路由选择”。各种路由协议、MPLS的流量工程都与路由选择有关。

拥塞控制。后文会专门介绍拥塞发生的原理。网络层可以采用拥塞控制机制,尽量避免拥塞的发生,如果真的发生拥塞,也要通过多种途径缓解拥塞状况(比如丢弃一些数据,或者进行缓存)。

局域网间互联。数据包在局域网间穿梭,会面临诸如包大小、网络速度,甚至协议的差异,这些都是网络层要解决的,就是通过一定的调整,让两个网络之间的数据包成功的传递。

统计和控制。如统计哪些用户需要的网络流量比较多,访问哪些站点比较频繁,或者禁止或控制用户访问某些站点;记账功能一般也在网络层解决。

网络层最知名的协议就是IP。(4)传输层

要保证别人听到你说的话,不能“想当然”。

传输层的任务是向用户提供可靠的、透明的端到端的数据传输,以及差错控制和流量控制机制。由于它的存在,网络硬件技术的任何变化对高层都是不可见的,也就是说会话层、表示层、应用层的设计不必考虑低层细节,因此传输层起到“承上启下”的作用。

所谓“端到端”是相对链接而言的。

各位读者要记住一个概念,OSI参考模型的四层到七层属于端到端的方式,而一到三层属于链接的方式。在传输层,通信双方的两机器之间,有一对应用程序或进程直接对话,它们并不关心低层的实现细节。低层的链接方式就不一样,它要负责处理通信链路中的任何相邻机器之间的通信。假如两台计算机A和B要通信,那么A和B之间可以进行直接的传输层的通信,而在A和B之间如果有若干网络节点,如路由器X、Y、Z,那么A与X、X与Y、Y与Z、Z与B之间都要进行低三层的通信。

传输层通过逻辑接口向高层提供服务。服务的类型是在连接建立时确定的,最重要的服务是端到端的、可靠的、面向连接的字节流服务——这里已经不是“位流”(也称“比特流”)了。

一般情况下,传输层为每一条传输连接生成一条第三层的网络链接,但也有例外:需要高吞吐率的传输连接可以同时占用多条网络链接。

传输层有一项很有趣的工作——流量控制,通过技术手段,使字节流均匀、稳定。当然,这不是必需的。

大名鼎鼎的TCP和UDP就属于传输层。(5)会话层

说话要有开始、过程和终止。在不同的机器之间提供会话进程的通信,如建立、管理和拆除会话进程。你可能要考虑这个话是在大庭广众之下说还是专门对某个人说,或者是说一句等对方答复后再说下一句。

会话层还提供了许多增值服务,如交互式对话管理,允许一路交互、两路交换和两路同时会话;管理用户登录远程分时系统;在两机器之间传输文件,进行同步控制等。(6)表示层

有些话要以悄悄话的形式,避免第三者听到;有些话,要简单明了,不要拖泥带水。表示层就处理通信进程之间交换数据的表示方法,包括语法转换、数据格式的转换、加密与解密、压缩与解压缩等。(7)应用层

有了上面所列的网络层次,你已经把要说的话通过声带的震动,一字一句、清晰明了地地告诉了你的某个好朋友,并且保证他听到了,没有让第三者听到。你明确地让对方知道,你的谈话何时开始以及何时结束。

应用层就负责管理应用程序之间的通信。

应用层是OSI参考模型的最高层,低层所有协议的最终目的都是为应用层提供可靠的传送手段,低层协议并没有直接满足用户的任何实际需求。我们日常使用的收发电子邮件、传送文件、浏览网页、交互即时信息、播放网络视频等都属于应用层的范畴,这是用户体验最直观的服务。

OSI是哲学,而不仅仅是技术!

通信“层”的概念,让各种协议、规范、标准变得有所不同——它们更灵活但可控,更开放但不混乱,更清晰但不拘束。上面的论述会让一些读者觉得乏味,但是如果你能够紧密结合通信网络的一些实际应用,并类比生活中的例子,你会发现其实枯燥中蕴含着无穷乐趣,你也会发现,其实分层是一种哲学而非技术。

2. TCP/IP(传输控制协议/网际协议)

在《倚天屠龙记》中,张无忌为什么做不成皇帝,而朱元璋却可以?那是张无忌心太软,他不爱江山爱美人的性格不适合当皇帝。“优胜劣汰,适者生存”是一条永恒不变的法则,OSI由于体系比较复杂,不太方便计算机软件实现,逐渐退出人们关注的视野,TCP/IP得到了广泛的应用。

TCP/IP是Internet的核心技术,是由IETF定义的。所有的系统、终端、线路、用户、开发者,都必须遵守TCP/IP协议族所规定的法则,否则,将不被IP世界所接受。图1.6 OSI与TCP/IP参考模型对照图

对比ISO/OSI的七层结构,看完上面的图,读者会奇怪了:怎么没有表示层和会话层呢?他们到哪里去了?

在TCP/IP分层结构中,的确没有表示层和会话层,也就是说OSI规定的这两层,在TCP/IP中并不是必需的。

还有一种五层的说法,将网络接口层分为物理层和数据链路层两层,这样有利于数据通信的分析。TCP/IP体系结构中最核心的部分是上面的三层:应用层、传输层和互联网层(也称网络层),互联网层以下的层次没有制定相关标准,萝卜咸菜各有所爱,至于最下面的是一层还是两层,这都不太重要。我们建议提到分层模型时按四层来分,在进行数据通信时按五层来分析。

说到《快乐大本营》,你会立刻想到何炅,谢娜,其实快乐大本营是一个节目组,不仅包括主持人,还有导演、摄像、录音等其他工作人员。TCP/IP也是一个组,是一个协议组,不仅包括TCP、IP,还包括HTTP、TELNET、FTP、RIP、OSPF、BGP、UDP、ARP、pop3等,只不过TCP/IP这个名字来源于协议族中最主要的两个协议——TCP(传输控制协议)和IP(网际协议)。各个层次分别对应着不同的协议,如图1.7所示。图1.7 TCP/IP分层协议

下面,分别介绍各层的主要功能。(1)网络接口层也称为数据链路层,TCP/IP并没有严格定义该层,它只是要求能够提供给其上层——网络层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。以太网是IP通信中数据链路层最常见的形式,除此之外还有PPP、HDLC等。10Gbit/s以下的以太网一般应用于局域网,而PPP、HDLC则应用于广域网范围内居多。(2)网络层(Internet Layer)俗称IP层,它处理机器之间的通信。IP是一个不可靠的、无连接协议,它接受来自传输层的请求,传输某个具有目的地址信息的分组。该层把分组封装到IP数据报中,填入数据报的首部(也称为报头),使用路由算法来选择是直接把数据报发送到目标机还是把数据报发送给路由器,然后把数据报交给下面的网络接口层中的对应网络接口模块。IP负责给互联网的每一台计算机或者终端分配一个地址,并将信息以IP包的形式传送到正确的目的地。这是TCP/IP的核心。IP协议族中最关键的是路由协议。除此之外还有ICMP,被用来传送IP的控制信息。我们熟知的Ping和Traceroute命令就出自ICMP。(3)传输层:传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)是该层的重要协议。TCP是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP还要处理端到端的流量控制。UDP是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。大家注意一下,在数通试题中,会经常涉及TCP、IP、UDP可靠不可靠,连接无连接的内容。图1.8 TCP/IP层的协议族

3.TCP报文格式

TCP报文包括首部(报头)和数据部分,其中首部的具体字段如下。图1.9 TCP报文(1)源端口和目的端口字段——各占16bit。端口是传输层与应用层的服务接口。(2)序号字段——SEQ序号,占32bit。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。(3)确认序号:ACK序号,占32 bit,是期望收到对方的下一个报文段的数据的第一个字节的序号。只有ACK标志位为1时,确认序号字段才有效,ACK=SEQ+1。(4)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下。

紧急比特 URG——当 URG=1 时,表明紧急指针(urgent pointer)字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

确认比特ACK——只有当ACK=1时确认号字段才有效。当 ACK=0时,确认号无效。

推送比特PSH(PuSH)——接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

复位比特 RST(ReSeT)——当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。

终止比特 FIN(FINal)——用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

需要注意的是:不要将确认序号ACK与标志位中的ACK搞混了;确认方ACK=发起方SEQ+1,两端配对。(5)数据偏移——占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。(6)窗口字段——占16bit。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。(7)检验和——占16bit。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。(8)紧急指针字段——占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。(9)选项字段——长度可变。TCP只规定了一种选项,即最大报文段长度MSS(Maximum Segment Size)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”(10)保留字段——占6bit,保留为今后使用,但目前应置为0。

4.TCP的三次握手和四次挥手

TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫作客户(Client)。被动等待连接建立的应用进程叫作服务器(Server)。

建立TCP需要三次握手才能建立,而断开连接则需要四次挥手。整个过程如图1.10所示。图1.10 TCP建立连接、传输数据、释放连接(1)三次握手

在TCP/IP中,采用三次握手建立一个连接,连接过程就像打电话的过程,如图1.11所示。图1.11 三次握手

第一次握手:Client(主机A)向Server(主机B)发送一个连接请求,在这个包中,标志位SYN=1,发送序号SEQ=x,上图中x=200,Client进入SYN_SEND状态,等待Server确认。

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,确认序号ACK=x+1=201,随机产生一个发送序号SEQ=y,上图中y=500,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查确认序号ACK是否为x+1=201,标志位ACK是否为1,如果正确,则将标志位ACK置为1,确认序号ACK=y+1=501,并将该数据包发送给Server,Server检查确认序号ACK是否为y+1=501,标志位ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态。

完成三次握手,客户端与服务器开始传送数据。(2)四次挥手

四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开,如图1.12所示。图1.12 四次挥手

第一次挥手:当客户A要断开TCP连接时,发送一个包,其中标志位fin=1,ACK=1,发送序号SEQ=x,确认序号ACK=y,上图中x=200,y=500。Client进入FIN_WAIT_1状态。

第二次挥手:客户B知道A要断开后,发送一个确认包,其中标志位ACK=1发送序号,SEQ=y确认序号ACK=x+1=201,Server进入CLOSE_WAIT状态。

第三次挥手:客户B也断开TCP连接,此时发送一个包,其中,标志位fin=1,发送序号SEQ=y+1=501,Server进入LAST_ACK状态。

第四次挥手:客户A收到B的断开请求后,Client进入TIME_WAIT状态,接着发送一个确认包,标志位ACK=1,发送序号SEQ=x+1=201,确认序号ACK=y+2=502;Server进入CLOSED状态。

由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。

5.TCP/IP协议体系常见术语(1)包

包(Packet)是网络上传输的数据片段,也称分组。包是一种统称,在不同的协议不同的层次,包有不同的名字,如TCP/IP中,数据链路层的包叫帧(Frame),IP层的包称为IP数据报,TCP层的包常称为TCP报文等。大多数包都由包头和信息组成:包头常常包括诸如源和目的地址、包的长度和类型指示符等信息;信息部分可以是原始数据,也可以包含另一个包。(2)封装

不同设备的对等层之间依靠封装和解封装来实现相互间的通信。封装就像洗完澡光着身子穿衣服,解封装就像洗澡前脱衣服,脱了一层又一层直到脱光。

TCP/IP也是一种计算机数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在互联网中几乎可以无差错地传送数据。

在通信过程中,TCP/IP每一层都让数据得以通过网络进行传输,这些层之间使用协议数据单元(Protocol Data Unit,PDU)彼此交换信息,确保网络设备之间能够通信。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。如图1.13所示,传输层在上层数据中加入TCP报头后得到的PDU被称为数据段(Segment);数据段被传递给网络层,网络层添加IP报头得到的PDU被称为数据包(Packet);数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为数据帧(Frame);最后,帧被转换为比特,通过网络介质传输。这种协议栈向下传递数据,并添加报头和报尾的过程称为封装。数据被封装并通过网络传输后,接收设备将删除添加的信息,并根据报头中的信息决定如何将数据沿协议栈上传给合适的应用程序,这个过程称为解封装。图1.13 主机通信过程1.3 TCP/IP与互联网

1.互联网和万维网的区别

在不同教材上,我们经常看到互联网、因特网和万维网这几个词语,到底它们有啥关系呢。总的来说,互联网包含因特网,因特网包含万维网。国际标准的互联网写法是internet,字母i一定要小写,国际标准的因特网写法是Internet,字母I一定要大写。凡是由能彼此通信的设备组成的网络就叫互联网,即使仅有两台机器(计算机、手机等),不论用何种技术使其彼此通信,都叫互联网。而因特网是互联网中的一种,它可不是仅由两台机器组成的网络,而是由上千万台设备组成的网络(该网络具备一定规模)。因特网使用TCP/IP让不同的设备可以彼此通信(使用TCP/IP的网络并不一定是因特网),前面讲了,TCP/IP由很多协议组成,不同类型的协议又被放在不同的层。其中,位于应用层的协议就有很多,比如FTP、SMTP、HTTP。所以,因特网提供的服务一般包括有:WWW(万维网)服务、电子邮件服务(Outlook)、远程登录(QQ)服务、文件传输(FTP)服务、网络电话等。只要应用层使用的是HTTP,就称为万维网(World Wide Web)。之所以在浏览器里输入百度网址时,能看见百度网提供的网页,就是因为您的个人浏览器和百度网的服务器之间使用的是HTTP进行交流。

虽然互联网和因特网的本意不一样,国际标准写法也有区别,不过平常大家都不怎么进行区分,而是混为一谈。

关于互联网还有一种说法,即狭义和广义之分。大家常说的互联网,是广义的互联网,由两层组成:一层是以TCP/IP为代表的网络层(也是狭义互联网概念);另一层是以万维网(WWW)为代表的应用层。

以TCP/IP为核心的狭义的互联网,实际上是广义互联网的下层,是网络基础,更一般地说就是TCP/IP网络。这一层的主要作用是通过计算机之间的互联,将各种信息的数据报文以极低的成本进行传输,俗称“管道”,所有信息和内容在这个管道里进行传送。互联网的设计理念是:网络是中立和无控制的,任何人都没有决定权;网络是应用无关的,它的任务就是如何更好地将数据包进行端到端传输。这个设计理念从互联网诞生之初到现在从未被撼动,任何针对某种(类型的)内容对互联网进行优化的尝试其最后效果都不甚理想。因此,我们可以认为互联网不会试图对任何内容进行传输优化。

以万维网(WWW)为代表的应用层,是广义互联网的上层。这一层包括很多种类型的流量和应用,邮件、软件、在线影视、游戏、电子商务、移动应用等,所有服务提供商(Service Provider,SP)提供的都是这些用户看得见、摸得着的应用,它们丰富和方便了人们的生活,构成了我们常说的互联网业务和信息经济。

2.互联网三次革命

互联网的诞生本就是一场革命。互联网的出现,极大地改变了人们的生活、生产方式。互联网使全球信息交互变得简单轻松,这可以谓之第一次互联网革命。

第二次互联网时代,则是移动互联网的兴起和发展,即“+互联网”。截至2015年8月底,我国移动互联网用户达到9.46亿户,手机上网总数超过9亿户。移动互联网使互联网变得更加立体,人们脱离了网线、计算机的束缚,通过移动设备,随时随地地享受信息时代带来的便利。所谓“+互联网”,是利用互联网技术打破原有业务中的信息不对称环节,从而实现效率重建。典型例子就是打车软件,一方面大大提升了乘客和司机对接效率,但另一方面,出租车供给量和乘客打车需求原本就在那里,互联网只是将这种存量的效率和体验发挥到极致,因此只是“+互联网”。

现在,第三次互联网革命正在汹涌来袭。所谓第三次互联网革命,其实是把互联网线上的信息资源与线下的实体经济结合一起,即互联网拥抱实体领域,也就是现在的“互联网+”。

相比“+互联网”,“互联网+”则做到了真正的重构供需。不只是改善效率,而是在供给和需求两端都产生增量,从而建立新的流程和模式:供给端是“点石成金”,将原本的闲散资源充分利用;需求端则是“无中生有”,创造了原本不存在的使用消费场景。例如专车软件,它将社会中的闲散车辆集中起来,成为商品资源进入商业流程,增加了供给;而乘客日常则在打车之余,多了专车的选择,需求也增加了。

3.互联网三阶段

互联网的发展总是让人瞠目结舌。互联网大致可以分为三个发展阶段:Web 1.0,Web 2.0和Web 3.0。如果要与互联网三次革命相对应的话,也可以这么认为,1.0时代是桌面互联网,2.0时代是移动互联网,3.0时代就是“互联网+”。(1)Web 1.0

Web1.0,是以编辑为特征,网站提供给用户的内容是网站编辑进行编辑处理后提供的,用户阅读网站提供的内容。这个过程是网站到用户的单向行为,Web1.0时代的代表站点为新浪、搜狐、网易三大门户。(2)Web 2.0

互联网具有高度的自我优化机制,庞大的用户群和信息量,使其具有自我修补和发展能力。虽然其动能来自于人类,但是我们始终相信,其原动力一定来源于互联网开放的机制本身。

Web 2.0不同于Web 1.0的最大之处在于它的交互性,加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与。Web 2.0的初衷,是互联网需要更高的速度和更多的参与。传统的互联网,浏览内容的人远远多于制造内容的人。如果说,上一代的WWW是以数据为核心的网,那么接下来就应该以人为中心。这个时期的典型代表有:新浪微博、腾讯空间等。

用什么方法能够让所有访问互联网的人都“忙”起来呢?也就是说,怎么样实现“全民织网”,然后用软件、机器的力量使这些信息更容易被需要的人找到和浏览?

Web 2.0,彻底颠覆了传统互联网的信息组织方式和发布方式。

网民再也抑制不住内心深处的狂热,他们自说自话建立博客(Blog)或者“围脖”[“微博(Microwave)”的谐音],他们共同合作建立维基(Wiki),他们装修自己的QQ空间,他们广交朋友玩SNS,偷菜、开餐厅或者钓鱼。

这是一场不大不小的革命。互联网却在这场革命中发生了微妙的物权变化。

传统的ICP(互联网内容提供商),都是由专业人士们提供信息内容。

Web 2.0时代,允许互联网充分利用用户的智慧,让用户自己组织自己的信息。从“大家点击我”变成“大家点击大家”!

Web 2.0不是某种技术而是一种更广泛利用社会资源的管理理念。这里面的代表业务是博客(Blog)、RSS、Podcasting、SNS、维基网(Wiki)和沃客(Work)。

博客和播客允许任何人在互联网标准平台上建立自己的管理区域并发布消息。最著名的博客,如国内的新浪博客,吸引了诸多名人和炒作名人的人士。博客又形成“博客圈”,具有相同或者相似志向的人组成博客圈,共享知识和感受。图1.14 微博

博客之风刚刚刮过,微博又来了!美国的Twitter推出了一款服务,用户可以通过Web、WAP以及各种移动客户端组建个人社区,以140字(中西有差异,不同媒体也不完全相同)左右的文字更新信息,并实现实时分享。

这种三言两语式的交流方式,被称为“碎片化”媒体,一经推出,就获得极大成功。截至2011年12月,Twitter用户数已经达到2亿多!

2009年8月,新浪推出了“新浪微博”内测版,成为门户网站中第一家提供微博服务的网站。微博,改变了传统媒体形式,成为互联网的新宠。

Wiki(维基网)更像是一部自由的大百科全书。任何人把自以为是的知识挂在网站上,会有对此感兴趣的人去审核。若审核通过,则进入条目。这种海量的条目就组成了一个百科全书式的万象世界。

RSS是站点用来和其他站点之间共享内容的一种简易方法,也叫“聚合内容”。一般用于人们订阅博客、Wiki更新、新闻、股票、天气等日常信息。

利用RSS,你无需一个网站一个网站、一个网页一个网页去逛,只要将这些你所需的内容订阅在一个RSS阅读器中,这些内容就会自动出现在阅读器里。

你也不必为了急切想知道的消息而不断刷新网页。因为一旦有了更新,RSS阅读器就会自动通知你。

除了博客、微博、播客,沃客、威客(Witkey,智慧的钥匙)也成为互联网领域创造的新名词。图1.15 WEB 1.0与2.0

沃客用于悬赏征集个体作者或团体工作者出售自己的知识、创意、科研成果,威客是沃客的工作主体,是一个智慧角色。他是在互联网上凭借自己的创造能力,以技能、知识、智慧索取报酬的人。最著名的威客网站是猪八戒网(zhubajie.com)。

从博客、播客、沃客的特点来看,Web 2.0强调的是互联网应用,只需建立基础框架,任何人、单位、团体都可以自行添加内容,并共享给公众,不像传统的互联网应用,由ICP提供内容,而用户更多的是浏览。

如果说传统的互联网内容是到饭店里点餐,那么Web 2.0更像是DIY的野炊,每个人发挥自己的聪明才智做出菜品供大家品尝,绝对原汁原味。

Web 2.0也像是一出自导自演的舞台剧,比起电视里播出的专业人士编剧、导演和演出的电视剧来说,自然是有另外一番风格。

Web 2.0和之前的传统互联网应用(称之为Web 1.0),将会长期共存。

下面,再让我们追溯一下Web 2.0的历史。

2004年3月,全球专业技术出版商O’Reilly组织的一个会议——“O’Reilly的朋友”中,组织了一次头脑风暴式的探讨。在探讨中,O’Reilly负责在线出版及研究的副总裁戴尔·多尔蒂和MediaLive公司的格瑞克·克莱共同提出了Web 2.0的概念。

2005年9月,O’Reilly公司的CEO提姆·奥来理在其公司网站的个人栏目中发表文章,《什么是Web 2.0——下一代软件设计模式和商业模式》,这成为Web 2.0理念的重要里程碑。

随后,就像所有热点区域即将开盘的房子一样,Web 2.0立刻成为互联网界最热门的关键词之一。

让人意想不到的是,各种新老媒体,纷纷将自身贴上Web 2.0的标签。YouTube、Myspace、Twitter、校内网等一大群带着Web 2.0思想或者印记的商业网站纷纷涌现出来。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载