如果计算机把我们从工业时代带到信息时代,那么计算机网络可以说把我们带到了网络时代。随着计算机数量的增加,计算机也经历了一系列快速发展,从大型通用计算机 -> 超级计算机 -> 小型机 -> 个人电脑 -> 工作站 -> 便携式电脑 -> 智能手机终端等都是这个过程的产物。计算机网络也逐渐从演变为了。
独立模式:计算机在互联网之前可以被视为独立模式,通常被称为单机模式。此时,计算机不会与其他计算机通信。
如图 1-1 可以看出,在独立模式下,每个人都需要排队等待其他用户在机器上完成工作。这些数据是单独管理的。
如图 1-2,从单机模式切换到网络互联网模式。在这种模式下,每个人都可以独立使用计算机,并为客户提供服务器 A、B、C 提供服务。在网络互联模式下,数据一般集中管理。
计算机网络由多个节点和链接节点组成。网络中的节点可以是计算机、交换器、集线器或路由器。计算机网络按规模和覆盖范围划分,可分为局域网、城市域网和广域网。
局域网:一般指数百至数公里的办公楼或校园计算机连接的计算机网络,一般用于狭窄区域的网络,社区、建筑、办公室经常使用局域网。
城市网络:由一个城市的计算机连接而成的计算机网络。城市网络是一种介于广域网和局域网之间的高速网络。城市网络设计的目标是满足数千米内大量企业、机构和公司的需求,实现数据、语音、图形、视频等信息的传输功能。
广域网:计算机在广域网中形成的连接范围较大,通常是一个国家或一个州。其目的是使分市较远的局域网相互连接。
计算机网络发展史
互联网的诞生
1946 2000年,世界上第一台计算机问世,目前还没有计算机网络,所以计算机只能单独工作。即使两台计算机非常接近,他们也只能像内向的孩子一样护自己的角落。
二战后,为了军事目的,美国成立了一个神秘的部门 ARPA,根据美国国防部的要求,该部门计划开发一个分散的指挥系统。该系统将有许多节点。每当其中一些节点被摧毁,其他节点仍然可以相互通信。该项目在 1966 年完成,ARPA 将其命名为 。ARPANET 它是最早的计算机网络之一,是互联网的前身。
ARPANET 是最早使用计算机网络之一,通过包交换系统通信的数据将格式化为带有目标机器地址的数据包,然后发送到下一台机器接收的网络。
一词是由 Donald Davies 在 1965 数据包在计算机网络中起着重要的作用,可以说数据包是互联网的主角。
ARPANET 于1969 年正式启动 1969 年,加州大学洛杉矶分校(UCLA)的 Steve Crocker 第一篇发表 RFC 论文被认为是互联网的开始。同年,第一台网络交换机实现了 ARPANET 第一次数据传输标志着。
我们经常在文章的结尾引用它.rfc 或者某人沟通,他提出他不求解 idea,然后你继续问他,他让你自己检查 RFC 文档(好像是的是我),说的是介个。 热4
一点官方解释 RFC 官方文件描述了互联网和互联网系统的方法、行为、研究或创新。
一般来说,互联网协议的官方文件。
TCP/IP 的诞生
虽然它现在可以在几个节点之间相互通信,但只有四个节点,而且仍然相对较少。当时,为了解决这个问题,阿帕网络有许多局限性,如不同的计算机网络不能相互通信,APPA 新的研究项目启动,试图连接不同的计算机局域网。
早期的 ARPANET 使用的是一种名称NCP但随着网络的发展,以及多节点接入和用户对网络需求的提高,NCP 协议已法完全支持 ARPANET 而且 NCP 另一个非常重要的缺陷是,它只能用于相同的操作系统环境,即,Windows 用户不能和 MacOS 用户以及 Android 用户通信。
所以,ARPANET 迫切需要一个新的协议来已经不能满足需求的协议 NCP 该任务的负担交给了协议 Robert E. Kahn 和 Vinton G. Cerf ,这两位大神的理论是前所未有的,那么这两位老教授做了什么呢?我只是轻描淡写地说:他们提出了新的传输控制协议——TCP(Transmission Control Protocol)。这是两位非常著名的计算机网络科学家,许多人把它放在一边 Robert E. Kahn 和 Vinton G. Cerf 被称为互联网之父。1974 年,这两个人在 IEEE 期刊发表了题为《关于分组交换的网络通信协议》的论文 TCP/IP,实现计算机网络之间的互联。
尽管我们认为 TCP/IP 协议是一项非常伟大的发明,但在当时的背景下,它并不乐观, TCP/IP 与四层模型相比 ISO 提出的七层模型也陋。但功夫不负有心人,经过 4 年复一年,TCP/IP 协议终于完成了基础设施的建设。终于在 1983 年,美国国防部高级研究计划局决定淘汰 NCP 用协议代替 TCP/IP 协议。从论文到出版再到采纳,花了十年时间。1985 年,TCP/IP 成为 UNIX 操作系统的组成部分。之后,几乎所有的操作系统都逐渐得到支持 TCP/IP,该协议成为主流。
进一步发展
80 年代初期,ARPANET 没有美国联邦机构合同的学校取得了巨大的成功。为了解决这个问题,美国国家科学基金会(NSF)开始为大学生建立计算机科学网络(CSNet)。CSNet 它使用其他网络提供的通信能力,从用户的角度来看,它也是一个独立的网络。CSNet 所有的信息交换都由一个中继器进行。
1986 年 NSF 投资分别在五所大学建立了超级计算机中心,并形成了 NSFNET,由于 NSF 许多大学、政府机构甚至私学、政府机构甚至私人研究机构都将自己的局域网与人相结合 NSFNET 中,从 1986 年至 1991 年,NSFNET 的子网从100 快速增加 3000 多个。
许多学术团体、企业、研究机构甚至个人、企业、研究机构甚至个人,Internet 用户不再局限于纯计算机专业人士。新用户发现计算机之间的通信对他们更有吸引力。因此,他们逐渐把它放在一边 Internet 作为交流和交流的工具,不仅仅是共享 NSF 巨型计算机的操作能力。
Internet 它由无数个子网组成,每个子网无数个子网组成,每个子网都有几台计算机。
进入 90 年代初期,Internet 有很多子网,每个子网都负责自己的架设和运营成本,这些子网都是通过的 NSFNET 互联起来。NSFNET 连接美国数千万台计算机,拥有数千万用户 Internet 主要成员网络。随着全球计算机网络的扩展和扩散,美国以外的网络也逐渐接入 NSFNET 主干或其子网。
1993 年是因特网发展过程中非常重要的一年,在这一年中 Internet 到目前为止,所有最重要的技术创新都已经完成,WWW - 万维网和浏览器的应用为因特网提供了一个令人耳目一新的平台:人们在 Internet 上面看到的不仅仅是文字,还有图片、声音、动画,甚至电影。因特网已经演变成一个文字、图像、声音、动画、电影等媒体相互辉映的新世界,以前所未有的速度席卷全世界。
Internet 快速崛起引起了全世界的关注。中国也非常重视信息基础设施的建设,重视和 Internet 连接。目前,已建成和正在建设的信息网络对中国科技、经济、社会的发展和与国际社会的信息交流产生了深远的影响。
中国互联网的发展
虽然中国的互联网起步不如美国早,但中国拥有世界上互联网增长最快的速度。
中国互联网的发展起源于中国互联网的发展 1987 - 1993 在此期间,国内科技工作者开始接触 Internet 资源。在此期间,以中国科学院高能物理研究所为首的一批科研机构与国外机构合作开展了一些工作 Internet 网络科研课题通过拨号使用Internet 的 E-mail 电子邮件系统为国内一些重点大学和科研机构提供国际服务 Internet 电子邮件服务。
1990 年 10 月,中国正式向国际因特网信息中心注册了最高域名 cn,从而打开使用自己域名的开放 Internet 电子邮件。
1994 年 1 美国国家科学基金会接受了中国的正式访问 Internet 的要求。1994 年 3 月,我国获准加入 Internet。4月初,代表中国政府向美国国家科学基金代表中美科技合作联委会(NSF)正式提出要求连入 Internet,并得到认可。至此,我国终于打通了最后的环节,在 4 月 20 日,以 NCFC 工程连入 Internet 国际专线为标志,我国与 Internet 全面接触。同年 5 月,我国联网工作全部完成。我国政府对 Internet 进入我国表示认可。我国网络的域名也最终确定为 cn。此事被我国新闻界评为 1994 年我国十大科技新闻之一,被国家统计公报列为我国 1994 年重大科技成就之一。
从 1994 年开始至今,我国实现了和因特网的 TCP/IP 连接,从而逐步开通了因特网的全功能服务;大型电脑网络项目正式启动,因特网在我国进入了飞速发展时期。1995 年,我国电信分别在北京和上海设立专线,并通过电话线、DDN 专线以及 X.25 网面向社会提供 Internet 接入服务。1995 年 5 月,开始筹建 CHINANET 全国骨干网,1996 年 1 月,CHINANET 骨干网建成并正式开通,全国范围的公用计算机互联网络开始提供服务。标志着我国互联网进入快速发展阶段。
我国陆续建造了多个全国范围内的公共计算机网络,其中最大的就是下面这几个
- 中国电信互联网 CHINANET
- 中国联通互联网 UNINET
- 中国移动互联网 CMNET
- 中国教育和科研计算机网 CERNET
- 中国科学技术网 CSTNET
可以发现,我国互联网建设主要分为三个阶段。
- 第一阶段为1987—1993年,这个阶段称为启蒙阶段,或者说试验阶段,我国在这个阶段开始接触 Internet,并开展了科研课题和科技合作工作,不过阶段的网络应用仅限于小范围内的电子邮件服务。
- 第二阶段为 1994 年 - 1996 年,这个阶段为启动阶段,或者说铺设阶段,这个阶段我国开始架设、铺设骨干网,并接入 Internet,从此我国被国际上正式承认为有 Internet 的国家。然后 ChinaNet、CERnet、CSTnet等多个 Internet 络项目在全国范围相继启动。
- 第三个阶段为 1997 年至今,这个阶段面向全国范围内接入 Internet,这个阶段是我国互联网快速发展的阶段。
进入 21 世纪后,CERNET2 试验网开通,CERNET2 试验网是以 2.5 Gbit/s - 10 Gbit/s 的速度连接北京、上海和广州三个 CERNET 核心节点,这标志着我国互联网已经迈入了国际先进水平。
CNNIC(中国互联网络信息中心)每年都会公布我国互联网发展情况,感兴趣的小伙伴可以通过 www.cnnic.cn 查询到相关信息。
计算机网络发展历程
批处理
和早期的计算机操作系统一样,最开始都要先经历批处理 Batch Processing阶段,批处理的目的也是为了能让更多的人使用计算机。
批处理就是先将数据装入卡带或者磁带,并且由计算机按照一定的顺序进行读入,如下图 1-3 所示。
这种计算机的价格比较昂贵,并不是每个人都能够使用的,这也就客观暗示着,只有专门的操作员才能使用计算机,用户把程序提交给操作员,由操作员排队执行程序,等一段时间后,用户再来提取结果(API 程序员的早期原型。。。。。。)
这种计算机的高效性并没有很好的体现,因为涉及到各种操作不断切换,让计算机计算甚至不如手动运算快。
分时系统
在批处理之后出现的就是分时系统了,分时系统指的是多个终端与同一个计算机连接,允许多个用户同时使用一台计算机。分时系统的出现实现了一人一机的目的,让用户感觉像是自己在使用计算机,实际上这是一种的特性,如图 1-4。
分时系统出现以来,计算机的可用性得到了极大的改善。分时系统的出现意味着计算机越来越贴近我们的生活。
还有一点需要注意:分时系统的出现促进了像是 BASIC 这种人机交互编程语言的诞生。
分时系统的出现,同时促进者计算机网络的出现。
计算机通信
在分时系统中,每个终端与计算机相连,这种独占性的方式并不是计算机之间的通信,因为每个人还是在独立的使用计算机。
到了 20 世纪 70 年代,计算机性能有了高速发展,同时体积也变得越来越小,使用计算机的门槛变得更低,越来越多的用户可以使用计算机。
这个理念促使着计算机网络的出现和发展。
计算机网络的诞生
20 世纪 80 年代,一种能够互连多种计算机的网络随之诞生。它能够让各式各样的计算机相连,从大型的超级计算机或主机到小型电脑。
20 世纪 90 年代,虽然实现了一人一机的环境,但是这种环境的搭建仍然价格不菲。与此同时,诸如电子邮件、万维网等信息传播方式如雨后春笋般迎来了前所未有的发展,使得互联网从大到整个公司小到每个家庭内部,都得以广泛普及。
计算机网络的高速发展
现如今,越来越多的终端设备接入互联网,使互联网达到了前所未有的盛世,近年来 3G、4G、5G 通信技术的发展更是互联网高速发展的产物。
许多发展道路各不相同的网络技术也都逐渐向互联网靠拢。例如曾经一直作为通信基础设施、支撑通信网络的电话网。随着互联网的发展,其地位也随着时间的推移被 IP 网所取代,IP 也是互联网发展的产物。
网络安全
互联网也具有两面性,它的出现虽然方便了用户,但同时也方便了一些不法分子。互联网的便捷也带来了一些负面影响,计算机病毒的侵害、信息泄漏、网络诈骗层出不穷。
在现实生活中,通常情况下我们挨揍了会予以反击,因为这种行为完全是动物本能驱动的。但是在互联网中,你被不法分子攻击通常情况下是无力还击的,只能防御,因为还击需要你精通计算机和互联网,这通常情况下很多人办不到。
通常情况下公司和企业容易被作为不法分子获利的对象,所以,作为公司或者企业,要想不受攻击或者防御攻击,需要建立安全的互联网连接。
互联网协议
协议这个名词不仅局限于互联网范畴,也体现在日常生活中,比如情侣双方约定好在哪个地点吃饭,这个约定也是一种,比如你应聘成功了,企业会和你签订劳动合同,这种双方的雇佣关系也是一种协议。注意自己对自己的约定不能成为协议,协议的前提条件必须是多人约定。
那么网络协议是什么呢?
。
没有网络协议的互联网是混乱的,就和人类社会一样,一个个体不能想怎么样就怎么样,你的行为是受到法律约束的。那么网络中的每台计算机也不能自己想发什么发什么,也是需要受到通信协议约束的。
我们一般都了解过 HTTP 协议, 。
但是互联网又不只有 HTTP 协议,它还有很多其他的比如 IP、TCP、UDP、DNS 协议等。下面是一些协议的汇总和介绍。
网络体系结构 | 协议 | 主要用途 |
---|---|---|
TCP/IP | HTTP、SMTP、TELNET、IP、ICMP、TCP、UDP 等 | 主要用于互联网、局域网 |
IPX/SPX | IPX、NPC、SPX | 主要用于个人电脑局域网 |
AppleTalk | AEP、ADP、DDP | 苹果公司现有产品互联 |
ISO 在制定标准化 OSI 模型之前,对网络体系结构相关的问题进行了充分的讨论,最终提出了作为通信协议设计指标的 OSI 参考模型。这一模型将通信协议中必要的功能分为了 7 层。通过这 7 层分层,使那些比较复杂的协议简单化。
在 OSI 标准模型中,每一层协议都接收由它下一层所提供的特定服务,并且负责为上一层提供服务,上层协议和下层协议之间通常会开放接口,同一层之间的交互所遵守的约定叫做协议。
OSI 标准模型
上图只是简单的介绍了一下层与层之间的通信规范和上层与下层的通信规范,并未介绍具体的网络协议分层,实际上,OSI 标准模型将复杂的协议整理并分为了易于理解的 7 层。如下图所示
互联网的通信协议都对应了 7 层中的某一层,通过这一点,可以了解协议在整个网络模型中的作用,一般来说,各个分层的主要作用如下
应用层
:应用层是 OSI 标准模型的最顶层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。包括文件传输、电子邮件远程登录和远端接口调用等协议。表示层
: 表示层向上对应用进程服务,向下接收会话层提供的服务,表示层位于 OSI 标准模型的第六层,表示层的主要作用就是将设备的固有数据格式转换为网络标准传输格式。会话层
:会话层位于 OSI 标准模型的第五层,它是建立在传输层之上,利用传输层提供的服务建立和维持会话。传输层
:传输层位于 OSI 标准模型的第四层,它在整个 OSI 标准模型中起到了至关重要的作用。传输层涉及到两个节点之间的数据传输,向上层提供可靠的数据传输服务。传输层的服务一般要经历传输连接建立阶段,数据传输阶段,传输连接释放阶段 3 个阶段才算完成一个完整的服务过程。网络层
:网络层位于 OSI 标准模型的第三层,它位于传输层和数据链路层的中间,将数据设法从源端经过若干个中间节点传送到另一端,从而向运输层提供最基本的端到端的数据传送服务。数据链路层
:数据链路层位于物理层和网络层中间,数据链路层定义了在单个链路上如何传输数据。物理层
:物理层是 OSI 标准模型中最低的一层,物理层是整个 OSI 协议的基础,就如同房屋的地基一样,物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。
TCP/IP 协议簇
TCP/IP 协议是我们程序员接触最多的协议,实际上,TCP/IP 又被称为,它并不特指单纯的 TCP 和 IP 协议,而是容纳了许许多多的网络协议。
OSI 模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了四个层次
和 OSI 七层网络协议的主要区别如下
- 应用层、表示层、会话层三个层次提供的服务相差不是很大,所以在 TCP/IP 协议中,它们被合并为应用层一个层次。
- 由于通信(数据)链路层和物理层的内容很相似,所以在 TCP/IP 协议中它们被归并在网络接口层一个层次里。
我们的主要研究对象就是 TCP/IP 的四层协议。
下面我就和你聊一聊 TCP/IP 协议簇中都有哪些具体的协议。
IP 协议
IP 是网际互联协议,英文 Internet Protocol,位于网络层。IP 协议是整个 TCP/IP 协议簇的核心,也是构成互联网的基础。IP 能够为运输层提供数据分发,同时也能够组装数据供运输层使用。它将多个网络连接成为一个互联网,这样能够提高网络的可扩展性,实现大规模网络互联。二是分割顶层网络和底层网络之间的耦合关系。
ICMP 协议
ICMP 协议是 Internet 报文控制协议,英文Internet Control Message Protocol, ICMP 协议主要用于在 IP 主机、路由器之间传递控制消息。ICMP 属于网络层的协议,当遇到 IP 无法访问目标、IP 路由器无法按照当前传输速率转发数据包时,会自动发送 ICMP 消息,从这个角度来说,ICMP 协议可以看作是错误侦测与回报机制,让我们检查网络状况、也能够确保连线的准确性。
ARP 协议
ARP 协议是地址解析协议,英文 Address Resolution Protocol,它能够根据 IP 地址获取物理地址。主机发送信息时会将包含目标 IP 的 ARP 请求广播到局域网络上的所有主机,并接受返回消息,以此来确定物理地址。收到消息后的物理地址和 IP 地址会在 ARP 中缓存一段时间,下次查询的时候直接从 ARP 中查询即可。
TCP 协议
TCP 是传输控制协议,英文Transmission Control Protocol,它是一种面向连接的、可靠的、基于字节流的传输协议,TCP 协议位于传输层,TCP 协议是 TCP/IP 协议簇中的核心协议,它最大的特点就是提供可靠的数据交付。TCP 的主要特点有 。
UDP 协议
UDP 协议是用户数据报协议,英文 User Datagram Protocol,UDP 也是一种传输层协议,与 TCP 相比,UDP 提供一种不可靠的数据交付,也就是说,UDP 协议不保证数据是否到达目标节点。当报文发送之后,是无法得知其是否安全完整到达的。UDP 是一种无连接的协议,传输数据之前源端和终端无需建立连接,不对数据报进行检查与修改,无须等待对方的应答,会出现分组丢失、重复、乱序等现象。但是 UDP 具有较好的实时性,工作效率较 TCP 协议高。
FTP 协议
FTP 协议是文件传输协议,英文File Transfer Protocol,应用层协议之一,是 TCP/IP 协议的重要组成之一,FTP 协议分为 FTP 服务器和 FTP 客户端两部分,FTP 服务器用来存储文件,FTP 客户端用来访问 FTP 服务器上的文件,FTP 的传输效率比较高,所以一般使用 FTP 来传输大文件。
DNS 协议
DNS 协议是域名解析协议,英文 Domain Name System,它也是应用层的协议之一,DNS 协议是一个将域名和 IP 相互映射的分布式数据库系统。DNS 缓存能够加快网络资源的访问。
SMTP 协议
SMTP 协议是邮件传输协议,英文 Simple Mail Transfer Protocol,应用层协议之一,SMTP 主要是用作邮件收发协议,SMTP 服务器是遵循 SMTP 协议的发送邮件服务器,用来发送或中转用户发出的电子邮件
SLIP 协议
SLIP 协议是指串行线路网际协议,英文 Serial Line Internet Protocol,是在串行通信线路上支持 TCP/IP 协议的一种点对点式的链路层通信协议。
PPP 协议
PPP 协议是点对点协议,英文Point to Point Protocol,是一种链路层协议,是在为同等单元之间传输数据包而设计的。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
网络核心概念
传输方式
网络根据传输方式可以进行分类,一般分为。
- 面向连接型中,在发送数据之前,需要在主机之间建立一条通信线路。
- 面向无连接型则不要求建立和断开连接,发送方可用于任何时候发送数据。接收端也不知道自己何时从哪里接收到数据。
分组交换
在互联网应用中,每个终端系统都可以彼此交换信息,这种信息也被称为报文(Message),报文是一个集大成者,它可以包括你想要的任何东西,比如文字、数据、电子邮件、音频、视频等。为了从源目的地向端系统发送报文,需要把长报文切分为一个个小的数据块,这种数据块称为分组(Packets),也就是说,报文是由一个个小块的分组组成。在端系统和目的地之间,每个分组都要经过通信链路和分组交换机,分组要在端系统之间交互需要经过一定的时间,如果两个端系统之间需要交互的分组为 L 比特,链路的传输速率问 R 比特/秒,那么传输时间就是 L / R秒。
一个端系统需要经过交换机给其他端系统发送分组,当分组到达交换机时,交换机就能够直接进行转发吗?不是的,交换机可没有这么无私,你想让我帮你转发分组?好,首先你需要先把整个分组数据都给我,我再考虑给你发送的问题,这就是。
存储转发传输
下面是一个存储转发传输的示意图。
由图 1-9 可以看出,分组 1、2、3 向交换器进行分组传输,并且交换机已经收到了分组 1 发送的比特,此时交换机会直接进行转发吗?答案是不会的,交换机会把你的分组先缓存在本地。这就和考试作弊一样,一个学霸要经过学渣 A 给学渣 B 传答案,学渣 A 在收到答案后,它可能直接把卷子传过去吗?学渣 A 说,等我先把答案抄完(保存功能)后再把卷子给你,当然一个及其有素质的学渣就另说了。
排队时延和分组丢失
什么?你认为交换机只能和一条通信链路进行相连?那你就大错特错了,这可是交换机啊,怎么可能只有一条通信链路呢?
所以我相信你一定能想到这个问题,当多个端系统同时给交换器发送分组,一定存在顺序到达和排队问题。事实上,对于每条相连的链路,该分组交换机都会有一个输出缓存(output buffer) 和 输出队列(output queue) 与之对应,它用于存储路由器准备发往每条链路的分组。如果到达的分组发现路由器正在接收其他分组,那么新到达的分组就会在输出队列中进行排队,这种等待分组转发所耗费的时间也被称为,上面提到分组交换器在转发分组时会进行等待,这种等待被称为,所以我们现在了解到的有两种时延,但是其实是有四种时延。这些时延不是一成不变的,其变化程序取决于网络的拥塞程度。
因为队列是有容量限制的,当多条链路同时发送分组导致输出缓存无法接受超额的分组后,这些分组会丢失,这种情况被称为丢包(packet loss),到达的分组或者已排队的分组将会被丢弃。
下图说明了一个简单的分组交换网络。
下面来一个情景模拟: 假定主机 A 和 主机 B 要向主机 E 发送分组,主机 A 和 B 首先通过 100 Mbps 以太网链路将其数据包发送到第一台路由器,然后路由器将这些数据包定向到 15 Mbps 的链路。如果在较短的时间间隔内,数据包到达路由器的速率(转换为每秒比特数)超过 15 Mbps,则在数据包在链路输出缓冲区中排队之前,路由器上会发生拥塞,然后再传输到链路上。例如,如果主机 A 和主机 B 背靠背同时发了 5 包数据,那么这些数据包中的大多数将花费一些时间在队列中等待。实际上,这种情况与许多普通情况完全相似,例如,当我们排队等候银行出纳员或在收费站前等候时。
转发表和路由器选择协议
我们刚刚讲过,路由器和多个通信线路进行相连,如果每条通信链路同时发送分组的话,可能会造成排队和丢包的情况,然后分组在队列中等待发送,现在我就有一个问题问你,队列中的分组发向哪里?这是由什么机制决定的?
换个角度想问题,路由的作用是什么? 。在因特网中,每个端系统都会有一个 IP 地址,当主机发送分组时,会在分组的首部加上主机的 IP 地址。每台路由器都会有一个转发表(forwarding table),当一个分组到达路由器后,路由器会检查分组中目的地址的一部分,并用目的地址搜索转发表,以找出适当的传输链路,然后映射成为输出链路进行转发。
那么问题来了,路由器内部是怎样设置转发表的呢?详细的我们后面会讲到,这里只是说个大概,路由器内部也是具有路由选择协议的,用于自动设置转发表。
电路交换
在计算机网络中,另一种通过网络链路和路由进行数据传输的另外一种方式就是电路交换(circuit switching)。电路交换在资源预留上与分组交换不同,什么意思呢?
就是分组交换不会预留每次端系统之间交互分组的缓存和链路传输速率,所以每次都会进行排队传输;而电路交换会预留这些信息。一个简单的例子帮助你理解:这就好比有两家餐馆,餐馆 A 需要预定而餐馆 B 不需要预定,对于可以预定的餐馆 A,我们必须先提前与其进行联系,但是当我们到达目的地时,我们能够立刻入座并选菜。而对于不需要预定的那家餐馆来说,你可能不需要提前联系,但是你必须承受到达目的地后需要排队的风险。
下面显示了一个电路交换网络
在这个网络中,4条链路用于4台电路交换机。这些链路中的每一条都有4条电路,因此每条链路能支持4条并行的链接。每台主机都与一台交换机直接相连,当两台主机需要通信时,该网络在两台主机之间创建一条专用的端到端的链接(end-to-end connection)。
分组交换和电路交换的对比
分组交换的支持者经常说分组交换不适合实时服务,因为它的端到端时延时不可预测的。而分组交换的支持者却认为分组交换提供了比电路交换更好的带宽共享;它比电路交换更加简单、更有效,实现成本更低。但是现在的趋势更多的是朝着分组交换的方向发展。
分组交换网的时延、丢包和吞吐量
因特网可以看成是一种基础设施,该基础设施为运行在端系统上的分布式应用提供服务。我们希望在计算机网络中任意两个端系统之间传递数据都不会造成数据丢失,这是一个极高的目标,实践中难以达到。所以,在实践中必须要限制端系统之间的吞吐量用来控制数据丢失。如果在端系统之间引入时延,也不能保证不会丢失分组问题。所以我们从时延、丢包和吞吐量三个层面来看一下计算机网络。
分组交换中的时延
计算机网络中的分组从一台主机(源)出发,经过一系列路由器传输,在另一个端系统中结束它的历程。在这整个传输历程中,分组会涉及到四种最主要的时延:。这四种时延加起来就是节点总时延(total nodal delay)。
如果用 dproc dqueue dtrans dpop 分别表示处理时延、排队时延、传输时延和传播时延,则节点的总时延由以下公式决定: dnodal = dproc + dqueue + dtrans + dpop。
时延的类型
下面是一副典型的时延分布图,让我们从图中进行分析一下不同的时延类型。
分组由端系统经过通信链路传输到路由器 A,路由器 A 检查分组头部以映射出适当的传输链路,并将分组送入该链路。仅当该链路没有其他分组正在传输并且没有其他分组排在该该分组前面时,才能在这条链路上自由的传输该分组。如果该链路当前繁忙或者已经有其他分组排在该分组前面时,新到达的分组将会加入排队。下面我们分开讨论一下这四种时延。
节点处理时延分为两部分,第一部分是路由器会检查分组的首部信息;第二部分是决定将分组传输到哪条通信链路所需要的时间。一般高速网络的节点处理时延都在微秒级和更低的数量级。在这种处理时延完成后,分组会发往路由器的转发队列中。
在队列排队转发过程中,分组需要在队列中等待发送,分组在等待发送过程中消耗的时间被称为排队时延。排队时延的长短取决于先于该分组到达正在队列中排队的分组数量。如果该队列是空的,并且当前没有正在传输的分组,那么该分组的排队时延就是 0。如果处于网络高发时段,那么链路中传输的分组比较多,那么分组的排队时延将延长。实际的排队时延也可以到达微秒级。
队列是路由器所用的主要的数据结构。队列的特征就是先进先出,先进食堂的先打饭。传输时延是理论情况下单位时间内的传输比特所消耗的时间。比如分组的长度是 L 比特,R 表示从路由器 A 到路由器 B 的传输速率。那么传输时延就是 L / R 。这是将所有分组推向该链路所需要的时间。正是情况下传输时延通常也在毫秒到微秒级。
从链路的起点到路由器 B 传播所需要的时间就是传播时延。该比特以该链路的传播速率传播。该传播速率取决于链路的物理介质(双绞线、同轴电缆、光纤)。如果用公式来计算一下的话,该传播时延等于两台路由器之间的距离 / 传播速率。即传播速率是 d/s ,其中 d 是路由器 A 和 路由器 B 之间的距离,s 是该链路的传播速率。
传输时延和传播时延的比较
计算机网络中的传输时延和传播时延有时候难以区分,在这里解释一下,传输时延是路由器推出分组所需要的时间,它是分组长度和链路传输速率的函数,而与两台路由器之间的距离无关。而传播时延是一个比特从一台路由器传播到另一台路由器所需要的时间,它是两台路由器之间距离的倒数,而与分组长度和链路传输速率无关。从公式也可以看出来,传输时延是 L/R,也就是分组的长度 / 路由器之间传输速率。传播时延的公式是 d/s,也就是路由器之间的距离 / 传播速率。
排队时延
在这四种时延中,人们最感兴趣的时延或许就是排队时延了 dqueue。与其他三种时延(dproc、dtrans、dpop)不同的是,排队时延对不同的分组可能是不同的。例如,如果 10 个分组同时到达某个队列,第一个到达队列的分组没有排队时延,而最后到达的分组却要经受最大的排队时延(需要等待其他九个时延被传输)。
那么如何描述排队时延呢?或许可以从三个方面来考虑:。即流量是周期性到达还是突发性到达,如果用 a 表示分组到达队列的平均速率( a 的单位是分组/秒,即 pkt/s)前面说过 R 表示的是传输速率,所以能够从队列中推出比特的速率(以 bps 即 b/s 位单位)。假设所有的分组都是由 L 比特组成的,那么比特到达队列的平均速率是 La bps。那么比率 La/R 被称为流量强度(traffic intensity),如果 La/R > 1,则比特到达队列的平均速率超过从队列传输出去的速率,这种情况下队列趋向于无限增加。所以,。
现在考虑 La / R <= 1 时的情况。流量到达的性质将影响排队时延。如果流量是周期性到达的,即每 L / R 秒到达一个分组,则每个分组将到达一个空队列中,不会有排队时延。如果流量是突发性到达的,则可能会有很大的平均排队时延。一般可以用下面这幅图表示平均排队时延与流量强度的关系
横轴是 La/R 流量强度,纵轴是平均排队时延。
丢包
我们在上述的讨论过程中描绘了一个公式那就是 La/R 不能大于1,如果 La/R 大于1,那么到达的排队将会无穷大,而且路由器中的排队队列所容纳的分组是有限的,所以等到路由器队列堆满后,新到达的分组就无法被容纳,导致路由器*丢弃(drop)*该分组,即分组会丢失。
计算机网络中的吞吐量
除了丢包和时延外,衡量计算机另一个至关重要的性能测度是端到端的吞吐量。假如从主机 A 向主机 B 传送一个大文件,那么在任何时刻主机 B 接收到该文件的速率就是瞬时吞吐量(instantaneous throughput)。如果该文件由 F 比特组成,主机 B 接收到所有 F 比特用去 T 秒,则文件的传送*平均吞吐量(average throughput)*是 F / T bps。
单播、广播、多播和任播
在网络通信中,可以根据目标地址的数量对通信进行分类,可以分为 。
单播(Unicast)
单播最大的特点就是 1 对 1,早期的固定电话就是单播的一个例子,单播示意图如下。
广播(Broadcast)
我们一般小时候经常会跳广播体操,这就是广播的一个事例,主机和与他连接的所有端系统相连,主机将信号发送给所有的端系统。
多播(Multicast)
多播与广播很类似,也是将消息发送给多个接收主机,不同之处在于多播需要限定在某一组主机作为接收端。
任播(Anycast)
任播是在特定的多台主机中选出一个接收端的通信方式。虽然和多播很相似,但是行为与多播不同,任播是从许多目标机群中选出一台最符合网络条件的主机作为目标主机发送消息。然后被选中的特定主机将返回一个单播信号,然后再与目标主机进行通信。
物理媒介
网络的传输是需要介质的。一个比特数据包从一个端系统开始传输,经过一系列的链路和路由器,从而到达另外一个端系统。这个比特会被转发了很多次,那么这个比特经过传输的过程所跨越的媒介就被称为物理媒介(phhysical medium),物理媒介有很多种,比如双绞铜线、同轴电缆、多模光纤榄、陆地无线电频谱和卫星无线电频谱。其实大致分为两种:引导性媒介和非引导性媒介。
双绞铜线
最便宜且最常用的引导性传输媒介就是双绞铜线,多年以来,它一直应用于电话网。从电话机到本地电话交换机的连线超过 99% 都是使用的双绞铜线,例如下面就是双绞铜线的实物图。
双绞铜线由两根绝缘的铜线组成,每根大约 1cm 粗,以规则的螺旋形状排列,通常许多双绞线捆扎在一起形成电缆,并在双绞馅的外面套上保护层。一对电缆构成了一个通信链路。无屏蔽双绞线一般常用在局域网(LAN)中。
同轴电缆
与双绞线类似,同轴电缆也是由两个铜导体组成,下面是实物图。
借助于这种结构以及特殊的绝缘体和保护层,同轴电缆能够达到较高的传输速率,同轴电缆普遍应用在在电缆电视系统中。同轴电缆常被用户引导型共享媒介。
光纤
光纤是一种细而柔软的、能够引导光脉冲的媒介,每个脉冲表示一个比特。一根光纤能够支持极高的比特率,高达数十甚至数百 Gbps。它们不受电磁干扰。光纤是一种引导型物理媒介,下面是光纤的实物图。
一般长途电话网络全面使用光纤,光纤也广泛应用于因特网的主干。
陆地无线电信道
无线电信道承载电磁频谱中的信号。它不需要安装物理线路,并具有穿透墙壁、提供与移动用户的连接以及长距离承载信号的能力。
卫星无线电信道
一颗卫星电信道连接地球上的两个或多个微博发射器/接收器,它们称为地面站。通信中经常使用两类卫星:同步卫星和近地卫星。
原文链接:好家伙!计算机网络基础知识发布!
欢迎关注公众号【程序员cxuan】有更多硬核文章等着你。。。。。。