一、 因特网概述
1.1 网络、互联网、因特网的基本概念
网络(Network):由若干节点(Node)和连接这些节点的链路(Link)组成。
互联网(Network of Networks):多个网络通过路由器互联起来,构成了互联网。
因特网(Internet):世界上最大的互联网。
注意internet与Internet的区别:
internet(互联网)是一个通用名词,泛指由多个计算机网络互联而成的网络。这些网络之间的通信协议可以是任意的。
Internet(因特网)是一个专用名词,指当前全球最大、开放的、由众多网络互联而成的特定计算机网络。它采用TCP/IP协议族作为通信的规则,其前身是美国的ARPANET。
1.2 因特网发展的三个阶段
第一阶段:从单个网络ARPANET向互联网发展
(1)1969年,第一个分组交换网ARPANET诞生;
(2)70年代中期,研究多种网络之间的互联;
(3)1983年,TCP/IP协议成为ARPANET的标准协议,将这一年定为因特网的诞生时间。
第二阶段:逐步建成三级结构的因特网
(1)1985年,美国国家科学基金会 NSF围绕六个大型计算机中心建设NSFNET(主干网、地区网和校园网/企业网);
(2)1990年,ARPANET任务完成,正式关闭;
(3)1991年,美国政府将因特网主干网交给私人公司经营,并开始对接入因特网的单位收费。
第三阶段:逐步形成了多层次ISP结构的因特网
(1)1993年,NSFNET逐渐被若干个商用因特网主干网替代,政府机构不再负责因特网运营,让各种因特网服务提供者ISP来运营;
(ISP:Internet Service Provider,因特网服务提供者,国内的三大ISP为中国电信,中国联通,中国移动;每个接入因特网的用户也可以成为ISP)
(2)1994年,万维网WWW技术促使因特网迅猛发展;
(3)1994年,NSFNET停止运作,因特网彻底商业化。
1.3 因特网的标准化工作
因特网协会ISOC是一个国际性组织,它负责对因特网进行全面管理以及在世界范围内促进其发展和使用。ISOC的组织结构如下:
因特网体系结构委员会IAB:负责管理因特网有关协议的开发;
因特网工程部IETF:负责研发中短期工程问题,主要针对协议的开发和标准化;
因特网研究部IRTF:从事理论方面的研究和开发一些需要长期考虑的问题。
因特网在其制定标准上的一个很大的特点是面向公众,体现在以下两点:
(1)因特网所有的RFC(Request For Comments)技术文档都可以从因特网上免费下载;
(2)任何人都可以随时用电子邮件发表对某个文档的意见或建议。
制定因特网的正式标准要经过4个阶段:
(1)因特网草案,这个阶段还不是RFC文档;
(2)标准建议,从这个阶段开始就成为RFC文档(并非所有的RFC文档都是因特网标准,只有一小部分RFC文档最后才变成因特网标准);
(3)草案标准;
(4)因特网标准。
1.4 因特网的组成
1.边缘部分:由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
2.核心部分:由大量网络和连接在这些网络的路由器组成。这部分是为边缘提供服务的(提供连通性和交换)。
二、 三种交换方式
2.1 电路交换(Circuit Switching)
电话交换机接通电话下的方式称为电路交换;
从通信资源的分配角度来看,交换就是按照某种方式动态的分配传输线路的资源;
电路交换的三个步骤:
(1)建立连接(分配通信资源)
(2)通话(一直占用通信资源)
(3)释放连接(归还通信资源)
2.2 分组交换(Packet Swtiching)
发送方的作用:
(1)构造分组:
先将报文划分为若干登场的数据段,每个数据段前加上由一些必要信息组成的首部,这样就构成了一个分组。
分组又可以称为“包”,首部又可以称为“包头”。
(2)发送分组
路由器(分组交换机)的作用:
(1)缓存分组
(2)转发分组:
各分组从源站到达目的站可以走不同的路径,即不同的路由;
分组到达目的站的顺序不一定与分组在源站的发送顺序相同;
分组丢失、误码、重复等问题暂不考虑。
接收方的作用:
(1)接收分组
(2)还原报文:去掉各分组的首部,还原出原始的报文。
2.3 报文交换(Message Switching)
不同于分组交换,报文交换不对报文进行分组,对报文的大小也没有限制,因此要求交换节点需要有较大的缓存空间;
报文交换用于早期的电报通信网,现在已经较少使用,通常被分组交换所取代。
2.4 三种交换方式的对比
三、 计算机网络的定义和分类
3.1 定义
计算机网络的精确定义并未统一,这里给出两个定义仅供参考:
(1)计算机网络最简单的定义:一些互相连接的、自治的计算机的集合。
互相连接:指计算机之间可以通过有线或无线的方式进行数据通信;
说明:
自治:指独立的计算机,他有自己的硬件和软件,可以单独运行;(终端机只有输入和输出,就不能算作独立的计算机)
集合:至少需要两台计算机;
(2)计算机网络较好的定义:计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(如传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同的数据,并能支持广泛和日益增长的应用。
说明:
计算机网络所连接的硬件,并不限于一般的计算机,而是包含了智能手机等智能硬件。
计算机网络并非专门用来传输数据,而是能够支持很多种的应用(包括今后可能出现的各种应用)。
3.2 分类
1.按交换技术分类
电路交换网络;
报文交换网络;
分组交换网络。
2.按使用者分类
公用网:任何人只要按照规定缴费,就可以使用。
专用网:为某特殊业务需要而建造的网络,不对外提供服务。
3.按传输介质分类
有线技术:双绞线网络,光纤网络等;
无线技术:目前比较普遍的WiFI技术等。
4.按网络的覆盖范围分类
广域网WAN(Wide Area Network):覆盖范围几十公里~几千公里,可以覆盖一个国家、地区甚至横跨几个州,是因特网的核心部分。
城域网MAN(Metropolitan Area Network):覆盖范围5~50公里,可覆盖整个城市。
局域网LAN(Local Area Network):覆盖范围1公里左右,通常由某个单位单独拥有、使用和维护。
个域网PAN(Personal Area Network):不同于上述三种网络,不是用来连接普通计算机的,而是将个人的设备如便携计算机、打印机、鼠标、键盘、耳机等通过无线技术连接起来的网络,覆盖范围约10m。
我们常用的Bluetooth就是实现PAN的一种技术。
如果中央处理机之间的距离非常近,如仅1m的数量级甚至更小,则一般称之为多处理机系统,而不称它为计算机网络。
5.按拓扑结构分类
可分为总线型网络、星型网络、环型网络、网状型网络四种。
四、 计算机网络的8个常用性能指标
4.1 速率
速率:连接在计算机网络上的主机在数字信道上传送比特的速率,也称为比特率或数据率。
比特是计算机中数据量的单位,也是信息论中信息量的单位。一个比特就是二进制数字中的一个1或0。
常用的数据量单位 | 常用的数据率单位 |
---|---|
1Byte = 8bit | b/s(bit/s、bps) |
1KB = 2^10B | 1kb/s = 10^3b/s |
1MB = 2^10KB = 2^10 * 2^10B = 2^20B | 1Mb/s = 10^3 * 1kb/s = 10^3 * 10^3b/s = 10^6b/s |
1GB = 2^10MB = 2^10 * 2^20B = 2^30B | 1Gb/s = 10^3 * 1Mb/s =10^3 * 10^6b/s = 10^9b/s |
1TB = 2^10GB = 2^10 * 2^30B = 2^40B | 1Tb/s = 10^3 * 1Gb/s =10^3 * 10^9b/s = 10^9b/s |
通过一个简单的例题来加深理解:
有一个待发送的数据块,大小为100MB,网卡的发送速率为100Mbps,则网卡发送完该数据块需要多长时间?
t = 100MB/100Mbps = 100 * 2^20 * 8b / (100 * 10^6 bps) = 2^20 * 8b / 10^6 bps = 8.388608s
生活中不仅数据量和数据率的单位有差异,数据量有时也会有差异。相信大家都遇到过这样的情况:自己买了一个硬盘,厂商给出的标注容量是500GB,但是实际连接到电脑上,操作系统给出的是容量是470左右,无法达到500GB。这是因为厂商为了方便,将1GB=1000MB,而操作系统将1GB=1024MB,于是便出现了偏差。
4.2 带宽
1.带宽在模拟信号系统中的意义
表示信号所包含的各种不同频率成分所占据的频率范围,单位Hz(kHz,MHz,GHz等)。
2.带宽在计算机网络中的意义
用来表示网络的通信线路传输数据的能力,因此网络带宽的值为:单位时间内从网络中的某一点到达另一点所能通过的“最高数据率”,单位:b/s(kb/s,Mb/s,Gb/s,Tb/s等)。
我们经常说的自家的带宽为200M,其实是不准确的,应该是200Mbps。
4.3 吞吐量
吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量。
吞吐量被经常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。
吞吐量受网络的带宽或额定速率的限制。
4.4 网络时延
网络时延包含三个部分:发送时延、传播时延和处理时延(此处将处理时延和排队时延归为一类)。
(1)发送时延
计算公式:分组长度(b)/发送速率(bps)
(2)传播时延
计算公式:信道长度(m)/ 电磁波传播速率(m/s)
电磁波在几种常见介质中的传播速率:
自由空间:3 * 10^8 m/s
铜 线:2.3 * 10^8 m/s
光 纤:2.0 * 10^8 m/s
(3)处理时延
一般不方便计算
4.5 时延带宽积
时延带宽积=传播时延*带宽
链路的时延带宽积又称以比特为单位的链路长度。
若发送端连续发送数据,则在所发送的第一个比特即将到达终点时,发送端就已经发送了时延带宽积个比特;
4.6 往返时间RTT
往返时间RTT(Round-Trip-Time)也是一个重要的性能指标。
很多情况下,因特网上的信息不仅仅单方向传输,而是双向交互。
4.7 利用率
利用率分为信道利用率和网络利用率。
(1)信道利用率
用来表示某信道有百分之几的时间是被利用的(有数据通过);
根据排队论,当某信道的利用率增大时,该信道引起的时延也会迅速增加。因此,信道利用率并非越高越好;
也不能使信道利用率太低,这样会使通信资源被浪费。应该使用一些机制,可以动态的调整输入到网络中的通信量,使网络利用率保持在一个合理的范围内;
如果令D0表示网络空闲时的时延,D表示网络当前时延,那么在适当的假定条件下,可以用简单的公式来表示D0、D和利用率U之间的关系:
D=D0/(1-U)
当网络的利用率达到50%时,时延就要加倍
当网络的利用率超过50%时,时延急剧增大
当网络的利用率接近100%时,时延就趋于无穷大
因此,一些拥有较大主干网的ISP通常会控制他们的信道利用率不超过50%。如果超过了就要准备扩容,增大线路的带宽。
(2)网络利用率:全网络信道利用率的加权平均。
4.8 丢包率
丢包率即分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。
丢包率可分为接口丢包率、节点丢包率、链路丢包率、网络丢包率等。
分组丢失主要有两种情况:
(1)分组在传输过程中出现误码,被结点丢弃;
(2)分组到达一台队列以满的分组交换机时被丢弃;在通信量较大时就可能造成网络通塞。
丢包率反映了网络的拥塞情况:
(1)无拥塞时路径丢包率为0
(2)轻度拥塞时路径丢包率为1%~4%
(3)严重拥塞时路径丢包率为5%~15%
五、 计算机网络体系结构
5.1 常见的计算机网络体系结构
1.法律上的国际标准:开放系统互连参考模型OSI七层体系结构
由上至下依次为:应用层、表示层、会话层、运输层、网络层、数据链路层、物理层。
2.实际上的国际标准:TCP/IP四层体系结构
由上至下依次为:应用层、运输层、网际层、网络接口层。
应用层:大量的应用层协议:HTTP、SMTP、DNS、RTP等。
运输层:两个重要协议:TCP和UDP。
TCP在享受IP协议提供的网络互联服务的基础上,向应用层的相应协议提供可靠传输的服务;
UDP在享受IP协议提供的网络互联服务的基础上,向应用层的相应协议提供不可靠传输的服务。
网际层:核心协议:IP协议。
IP协议可以互连网络接口层的不同网络接口,并向运输层的TCP和UDP协议提供网络互联服务。
网络接口层:没有规定具体内容,目的是互连全世界各种不同的网络接口。如有线的以太网接口,无线的WiFi接口等。
3.用来学习理解的:五层原理体系结构
由上至下依次为:应用层、运输层、网络层、数据链路层、物理层。
5.2 分层的必要性
遇到问题,将大事化小的解决方法屡试不爽,计算机网络也是如此。
首先来考虑最简单的情况,两个主机通过一个链路相连:
这个情况下我们需要考虑的问题:
(1)采用怎样的传输媒介?(如双绞线等)
(2)计算机采用什么物理接口来连接传输媒体?(如RJ45以太网接口)
(3)使用怎样的信号表示比特0或1?(假设使用数字信号,高电平为1,低电平为0)
把以上几个问题归为物理层需要解决的问题。
物理层的作用可总结为:解决使用何种信号来传输比特的问题。
这里有两点需要说明:
(1)严格来说,传输媒体并不属于物理层,它不在体系结构之内;
(2)计算机网络中传输的信号并不是数字信号,这里只是为了方便理解举个简单的例子。
一个网络一定不止有两个主机,因此我们接着需要考虑,一条总线上有多个主机的情况:
这种情况下我们需要考虑的问题:
(1)网络上有那么多主机,你总得知道要发给谁吧?这就产生了一个问题:如何识别网络中的各主机;(主机编址问题,如MAC地址)
(2)所传输的比特流除了包含数据本身的信息外,一定还有目标地址,那么如何从信号所表示的一连串比特流中区分出地址和数据又是一个问题;
(3)假如主机A和D想要发送数据,他们发现此时总线是空闲的,但都不知道对方也要发送数据,于是开始发送自己的数据,这就不可避免的造成了数据的冲突碰撞。因此,如何协调各主机争用总线也是一个问题。
(4)其实总线型网络早已淘汰,目前常用的是使用以太网交换机将多台主机互连形成的交换式以太网。那么以太网交换机又是如何实现的又是一个问题。
把以上几个问题归为数据链路层需要解决的问题。
数据链路层的作用可总结为:解决分组在一个网络(或一段链路)上的传输问题。
数据链路层结束后,我们已经可以在一个网络上传输分组,但这显然是不够用,我们需要在多个网络上传输分组:
这种情况下我们需要考虑的问题:
(1)不同于单网络,此时已经连接了很多网络,计算机之间的数据交换完全是可以跨网络的,因此如何标识各网络以及网络中的各主机(网络和主机共同编址的问题,例如IP地址) 就显得尤为重要。
(2)那对于起着连接不同网络的作用的路由器来说,目的地址已经知道了,接下来的任务就是转发这些数据,也就是路由器如何转发分组,如何进行路由选择 的问题。
把以上几个问题归为网络层需要解决的问题。
网络层的作用可总结为:解决分组在多个网络上传输(路由)问题。
到此为止,分组已经可以在多个网络上传输了,但是这只是能够解决主机与主机之间的数据交换,而不能够具体到某一个计算机网络的应用,举个例子:一台计算机上正在运行两个网络通信相关进程QQ和Chrom浏览器,此时计算机收到了来自服务器的分组,那么这个分组该交给QQ还是Chrom浏览器呢?
这种情况下我们需要考虑的问题:
(1)如何标识与网络相关的通信进程以解决进程之间基于网络的通信问题;
(2)出现传输错误时,如何处理。
把以上几个问题归为传输层需要解决的问题。
传输层的作用可总结为:解决进程之间基于网络的通信问题。
解决上述所有问题后,仅需要制定各种协议,并按照协议标准编写相应的应用程序,通过应用进程间的交互来完成特定的网络应用。简单来说,一个进程想要与其他的进程进行通信,是需要有对应的通信服务的,而这个通信服务的实现需要遵循一定的规则协议才能有效使用。其实就像语言一样,我们把普通话作为一种说话的协议,任何人只要说普通话,就可以和其他人交流。但是如果你只会说本地的方言,那很有可能其他地区的人完全不知道你在说什么,那还怎么交流。
因此,区分网络应用和应用层协议是很重要的。应用层协议只是网络应用的一部分(尽管从
我们的角度看,它是应用非常重要的一部分)。我们来看一些例子:
(1)我们熟知的Web是一种客-服务器应用,该Web应用其实有很多组成部分,包括文档格式的标准(即HTML) 、 Web 浏览器(如Firefox 和Microsoft Internet Explorer,可以看出,我们熟知的Web浏览器,仅仅是Web应用的一部分而已) 、Web 服务器(如Apache、Microsoft 服务器程序),以及一个应用层协议。 Web的应用层协议是HTTP,它定义了在浏览器和Web 服务器之间传输的报文格式和序列。因此,HTTP只是Web应用的一个部分(尽管是重要部分)。
(2)因特网电子邮件应用也有很多组成部分,包括能容纳用户邮箱的邮件服务器、允许用户读取和生成邮件的邮件客户程序(如Microsoft Outlook,这也是我们所熟知的部分) 、定义电子邮件报文结构的标准、定义报文如何在服务器之间以及如何在服务器与邮件客户程序之间传递的应用层协议、定义如何对报文首部的内容进行解释的应用层协议。 用于电子邮件的主要应用层协议就是SMTP (简单邮件传输协议[RFC5321]) 。因此,电子邮件的首要应用层协议SMTP也只是电子邮件应用的一个部分(尽管是重要的部分)。
出了上述的例子,应用层还有很多协议如文件传送FTP协议等等,无法一一列举。
把上述的问题归为应用层需要解决的问题。
应用层的作用可总结为:解决通过应用进程的交互来实现特定网络应用的问题。
5.3 分层思想举例
下面通过一个浏览器进程和Web服务器之间的网络通信实例,按照体系结构自顶向下的顺序来进一步理解计算机网络体系结构分层处理方法:
(1)应用层按照HTTP协议规定,构建一个HTTP请求报文,然后将报文交给运输层处理;
(2)运输层为收到的报文添加一个TCP首部,使之成为TCP报文段。该首部的作用是区分应用进程以及实现可靠传输。然后将TCP报文段交付给网络层处理;
(3)网络层为收到的TCP报文段添加一个IP首部,使之成为IP数据报。该首部的作用主要是使IP数据包可以在互联网上传输,即被路由器转发。然后将IP数据报交付给数据链路层处理;
(4)数据链路层为IP数据报添加一个首部和一个尾部,使之成为帧。假设网络N1为以太网,该首部的作用是能用让帧在一段链路或一个网络上传输,能够被相应的目的主机接收;帧尾部的作用是让目的主机检查所接收到的帧是否有误码。然后将帧交付给物理层;
(5)物理层将帧看作比特流,由于N1是以太网,因此物理层还会给改比特流前添加前导码,其作用是让目的主机做好接收帧的准备。然后将有前导码的比特流变换成相应的信号发送到传输媒体,信号通过传输媒体到达路由器;
(6)物理层将信号变换为比特流,去掉前导码后将比特流交付给数据链路层,这实际上交付的是帧;
(7)数据链路层去掉帧的首部和尾部,将其交付给网络层,实际上交付的是IP数据报;
(8)网络层解析IP数据报的首部,从中解析出目的网络地址,然后查找自身的路由表,确定转发端口,以便进行转发。然后交付给数据链路层;
(9)数据链路层为IP数据报添加一个首部和一个尾部使之成为帧。然后交付给物理层;
(10)物理层将帧看作是比特流,由于网络N2是以太网,因此物理层会在该比特流前添加前导码。然后变换成相应的信号发送到传输媒体,信号通过传输媒体到达Web服务器;
(11)物理层将信号变化为比特流,去掉其前导码后将其交付给数据链路层,实际上交付的是帧;
(12)数据链路层将帧的首部和尾部去掉后,将其交付给网络层,实际上交付的是IP数据报;
(13)网络层将IP数据报的IP首部去掉后,将其交付给运输层,实际上交付的是TCP报文段;
(14)运输层将TCP报文段的TCP首部去掉后,将其交付给应用层,实际上交付的是HTTP请求报文;
(15)应用层对HTTP请求报文进行解析,然后给主机发送HTTP响应报文;
接下来的过程与上述1~15类似,HTTP响应报文需要在Web服务器层层封装,然后通过物理层变换成相应的信号,再通过传输媒体传输到路由器;路由器转发该响应报文给主机;主机通过物理层将接收到的信号转换为比特流,之后通过逐层解封,最终取出HTTP响应报文。
5.4 专业术语
1.实体
实体:任何可发送或接收信息的硬件或软件进程。
对等实体:收发双方相同层次中的实体。
2.协议
协议是控制两个对等实体进行逻辑通信的规则的集合。
协议的三要素:
(1)语法:定义所交换信息的格式。
(2)语义:定义收发双发所要完成的操作。
(3)同步:定义收发双方的时序关系。
3.服务
在协议控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务;
要实现本层协议,还需要使用下面一层所提供的服务;
协议是“水平的”,服务是“垂直的”;
实体看得见相邻下层所提供的服务,但不知道实现该服务的具体协议。即下面的协议对上边的实体是透明的;
服务访问点:在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
数据链路层的服务访问点为帧的“类型”字段;
网络层的服务访问点为IP数据报首部中的“协议字段”;
运输层的服务访问点为“端口号”
服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
协议数据单元PDU:对等层次之间传送的数据包称为该层的协议数据单元。
服务数据单元SDU:同一系统中,层与层之间交换的数据包称为服务数据单元。
多个SDU可以和成为一个PDU;一个SDU也可以划分为几个PDU。(没有写反,不要怀疑)