概述
1.1 计算机网络在信息时代的应用
1.2 因特网概述
1.1.1网络、互连网(互联网)和因特网
网络(Network):由若干结点(Node)和连接这些结点的链路(Link)组成。
比如下图中,笔记本电脑是一个结点,台式电脑也是一个结点,网络打印机也是一个结点,而将它们互连起来的交换机也是一个结点,然后结点与结点之间需要链路互连起来,可以是有线链路也可以是无线链路:
上图所展示的就是一个简单的网络。
多个网络还可以通过路由器互连起来,这样就构成了一个更大的网络,即互联网(或者互连网)。因此互联网是“网络的网络(Network of Network)”。
如下图所示,这些简单的网络可以通过路由器进行互连,形成一个更大的互联网:
因特网(Interner)是世界上最大的互连网络(用户以数亿记,互连的网络以数以百万记)
在后面的课程中,因特网常常用一朵云来表示,连接在因特网上的计算机称为主机,而因特网内部的细节,也就是路由器是怎样把许多网络连接起来的,往往省略不用给出:
这里我们需要区分一下两个英文单词的含义:
1.1.2 因特网发展的三个阶段
因特网的基础结构大体上经历了三个阶段的演进:
- 啥是因特网服务提供者ISP(Internet Service Provider)?
想想看,普通用户是如何接入到因特网的呢?实际上是通过ISP接入因特网的,ISP可以从因特网管理机构申请到成块的IP地址,同时拥有通信线路以及路由器等连网设备,任何机构和个人只要向ISP缴纳规定的费用,就可以从ISP得到所需要的IP地址。这一点很重要,因为因特网上的主机都必须有IP地址才能进行通信。这样就可以通过该ISP接入到因特网。
我国主要的ISP是我们大家都比较熟知的中国电信、中国联通和中国移动这三大电信运营商:
- 基于ISP的三层结构的因特网:
首先是第一层:
首先是最高级别的第一层ISP的服务面积最大,第一层ISP通常也被称为因特网主干网,一般都能够覆盖国际性区域范围,并拥有高速链路和交换设备,第一层ISP之间直接互连。
然后是第二层:
第二层ISP和一些大公司都是第一层ISP的用户,通常具有区域性或国家性覆盖规模,与少数第一层ISP相连接。
最后是第三层:
第三层ISP又被称为本地ISP,它们是第二层ISP的用户,且只拥有本地范围的网络,一般的校园网或者企业网,以及住宅用户和无限移动用户,都是第三层ISP的用户。
从上述图中可以看出,因特网逐渐演变成基于ISP的多层次结构网络。
但今天的因特网由于规模太大,已经很难对整个网络的结构给出细致的描述,但下面这种情况是经常遇到的,就是相隔较远的两台主机间的通信可能需要经过多个ISP:
顺便提一下,一旦某个用户能够接入到因特网,那么他也可以成为一个ISP,所需要做的就是购买一些如调制解调器或者路由器这样的设备,让其他用户可以和他互连。
因此,该图所示的仅仅是个示意图,一个ISP可以很方便地在因特网上拓扑上增添新的层次和分支。
1.1.3 因特网的标准化工作
1.1.4 因特网的组成
因特网的拓扑结构虽然非常复杂,并且在地理上覆盖了全球,但从功能上看可以划分为以下两个部分,边缘部分和核心部分。
在网络核心部分起特殊作用的是路由器,它是一种专用计算机,但我们不称它为主机,路由器是实现分组交换的关键构件。其任务是转发收到的分组,这是网络核心部分最重要的功能。
总结
我们需要对第一和第四部分内容做到理解,对第二和第三部分内容了解即可。
1.3 三种交换方式
电路交换(Circuit Switching)
首先是电路交换,在电话问世不久之后,人们就发现,要让所有的电话机都两两相连接是不现实的。
例如两部电话只需要用一对电线就能够互相连接起来:
但若有五部电话要两两相连,则需要十对电线:
当电话机的数量很大时,这种连接方法需要的电线数量就太大了。
于是人们认识到,要使得每一部电话能够很方便的和另一部电话进行通信,就应当使用一个中间设备将这些电话连接起来,这个中间设备就是电话交换机,每一部电话都连接到电话交换机上,可以把电话交换机简单地看成是一个有多个开关的开关器,可以将需要通信的任意两部电话的电话线路按需接通,从而大大减少了连接的电话数量:
当电话机的数量增多时,就要使用很多彼此连接起来的电话交换机来完成全网的交换任务。用这样的方法,就构成了覆盖全世界的电信网。
电话交换机接通电话线的方式称为电路交换,从通信资源的分配角度来看,交换就是按照某种方式动态地分配传输线路的资源。
我们来看下面这个电路交换示意图:
应当注意的是,用户线归电话用户专用:
而电话交换机之间拥有大量话路的中继线则是许多用户共享的:
电路交换有以下三个步骤:
- 1、建立连接(分配通信资源)
例如,在使用电路交换打电话之前,必须先拨号请求建立连接:
当被叫用户听到电话交换机送来的拨号音并摘机后,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路。这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用。 - 2、通话(一直占用通信资源)
第二步是通话,也就是主叫和被叫双方互相通电话,在整个通话期间,第一步建立连接所分配的通信资源始终被占用。 - 3、释放连接(归还通信资源)
第三部释放连接,也就是通话完毕挂机后,电话交换机释放刚才使用的这条专用的物理通路,换句话说,是把刚才占用的所有通信资源归还给电信网。
那么如果使用电路交换来传送计算机数据,是否可行?
应该说尽管采用电路交换可以实现计算机之间的数据传送,但是线路的传输速率往往很低。这是因为计算机数据是突发式地出现在传输线路上的,试想一下一种情况,当用户正在输入和编辑一份待传输的文件时,用户所占用的通信资源暂时未被利用,该通信资源也不能被其他用户利用,宝贵的通信线路资源白白被浪费了。
因此,计算机网络通常采用分组交换,而不是电路交换。
- 分组交换
假设下图是因特网的一部分:
在因特网中,最重要的分组交换机就是路由器,它负责将各种网络互连起来,并对接收到的分组进行转发,也就是进行分组交换。
比如,主机H6的用户要给主机H2的用户发送一条信息,通常我们把表示该消息的整块数据称为一个报文:
在发送报文之前,先把较长的报文划分成一个个更小的等长数据段,在每个数据段前面加上一些由必要的控制信息组成的首部后,就构成了一个分组:
也可简称为“包”,相应地,首部也可称为“包头”,请大家思考一下,添加首部的作用是什么?这不是额外加大了待传输的数据量吗?实际上,首部起着非常关键的作用。相信大家至少能想到首部中肯定包含了分组的目的地址。否则分组传输路径中的各分组交换机(也就是各路由器)就不知道如何转发分组了,分组交换机收到一个分组后,先将分组暂时存储下来,再检查其首部,按照首部中的目的地址进行查表转发,找到合适的转发接口,通过该接口将分组转发给下一个分组交换机,,在本例中主机H6将所构造出的各分组依次发送出去:
各分组经过途中各分组交换机的存储转发,最终到达主机H2,主机H2收到这些分组后,去掉它们的首部,将各数据段组合还原出原始报文。需要说明的是,为了初学者容易理解,在本例中,我们只演示了分组传输过程中的两种情况:
一种是各分组从源站到达目的站可以走不同的路径(也就是不同的路由);
另一种是分组乱序,也就是分组到达目的站的顺序不一定与分组在源站的发送顺序相同。
对于可能出现的分组丢失、误码、重复等问题并没有演示,这些内容后面会说的。
分组交换总结如下:
- 报文交换
与分组交换类似,报文交换中的交换节点也采用存储转发方式,但报文交换对报文的大小没有限制,这就要求交换结点需要有较大的缓存空间。需要注意的是,报文交换主要用于早期的电报通信网,现在较少使用,通常被较先进的分组交换方式所取代,因此这里不再详细介绍报文交换了。
总结对比
假设ABCD是分组传输路径上所要经过的4个结点交换机,纵坐标为时间,对于电路交换,通信之前首先要建立连接:
连接建立之后,就可以使用已建立好的连接进行数据传送:
数据传送结束之后,需要释放连接以归还之前建立连接所占用的通信线路资源:
对于报文交换,可以随时发送报文,而不需要事先建立连接,整个报文先传送到相邻结点交换机:
全部存储下来之后进行查表转发:
转发到下一个结点交换机:
对于分组交换,可以随时发送分组,而不需要事先建立连接,构成原始报文的一个个分组,依次在各结点交换机上存储转发。各结点交换机在发送分组的同时,还缓存接收到的分组:
当使用电路交换时,一旦建立连接,中间的各结点交换机就是直通形式的,比特流可以直达终点:
当使用报文交换时,整个报文需要在各结点交换机上进行存储转发,由于不限制报文的大小,因此需要各结点交换机都具有较大的缓存空间:
当使用分组交换时,构成原始报文的一个个分组,在各结点交换机上进行存储转发,相比报文交换,减少了转发时延,还可以避免过长的报文长时间占用链路,同时也利于进行差错控制。
最后总结如下:
1.4 计算机网络的定义和分类
- 计算机网络的定义
- 计算机网络的分类
本小节内容了解即可。
1.5 计算机网络的性能指标
-
速率
在知道什么是速率以前,我们先了解什么是比特:
而上图中还告诉了我们为什么平常我们买内存其实际的大小往往小于我们明面上标注的大小,用上面的公式可以看到确实是小于的。
-
带宽
-
吞吐量
-
时延
有些教材中还有一个时延叫排队时延,这里一并计入处理时延中了。
那么在处理时延忽略不计的情况下,是发送时延栈主导还是传播时延占主导呢?
下面的两个例子可以告诉我们答案:
可以看出,我们不能想当然的就是谁谁谁占主导,得具体问题具体分析,不一定的。
- 时延带宽积
- 往返时间RTT
- 利用率
- 丢包率
1.6 计算机网络体系结构
1、常见的计算机网络体系结构
TCP/IP体系结构的网络层通常称为网际层,大多数用户每天都有接入因特网的需求,这就要求用户主机必须使用TCP/IP协议,当然了,即使用户的网络不需要接入因特网,也可以使用TCP/IP协议。在用户主机的操作系统中,通常都带有符合TCP/IP体系结构标准的TCP/IP协议族。而用于网络互连的路由器中,也带有符合TCP/IP体系结构标准的TCP/IP协议族。只不过路由器一般只包含网络接口层和网际层。
TCP/IP体系结构的网络接口层并没有规定什么具体的内容,这样做的目的是可以互连全世界各种不同的网络接口。例如有线的以太网接口,无线局域网的WIFI接口,而不限定仅适用一种或几种网络接口。
因此本质上,TCP/IP体系结构只有上面的三层,IP协议是TCP/IP体系结构网际层的核心协议。TCP和UDP是TCP/IP体系结构运输层的两个重要协议,TCP/IP体系结构的应用层包含了大量的应用层协议,例如HTTP、SMTP、DNS、RTP等。
即便大家是计算机网络的初学者,对HTTP这个缩写词也不会陌生,因为浏览器地址中每天都能看见它。
IP协议可以将不同的网络接口进行互连,并向其上的TCP协议和UDP协议提供网络互连服务。而TCP协议在享受IP协议提供的网络互连服务的基础上,可向应用层的相应协议提供可靠传输的服务。UDP协议在享受IP协议提供的网络互连服务的基础上,可向应用层的相应协议提供不可靠传输的服务。
IP协议作为TCP/IP体系结构中的核心协议,一方面负责互连不同的网络接口,也就是IP over everything;另一方面为各种网络应用提供服务,也就是Everything over IP;
在TCP/IP协议体系中包含有大量的协议,IP协议和TCP协议是其中非常重要的两个协议,因此用TCP/IP协议来表示整个协议大家族,常常称为TCP/IP协议族。
由于TCP/IP体系结构为了将不同的网络接口进行互连,因此它的网络接口层并没有规定什么具体的内容。然而这对于我们学习计算机网络的完整体系而言,就会缺少一部分内容,因此在学习计网原理时常常采用折中的方法,也就是总和OSI和TCP/IP的优点,采用一种五层协议的原理体系结构:
2、计算机网络体系结构分层的必要性
首先来看最简单的情况,两台计算机通过一条网线连接起来:
对应这种最简单的情况我们需要考虑以下问题:
一个是采用怎样的传输媒体?(介质)
例如常见的双绞线网线:
另一个是在计算机上采用怎样的物理接口来连接传输媒体?
例如使用RJ45以太网接口:
还有一个需要考虑的问题是使用怎样的信号来表示比特0和1:
例如使用方波信号,低电平表示0高电平表示1
解决这些问题我们就可以通过信号来传输比特0和1了,我们可以将这些问题划归到物理层:
这里需要说明两点,第一严格来说,传输媒体并不属于物理层,它并不包含在体系结构之中,第二计算机网络中传输的信号,并不是我们举例的方波信号,我们之所以举例成方波信号是为了让初学者容易理解,在学习本身就不容易理解的、概念抽象的计算机网络体系结构时,不让其他技术细节再给大家造成学习障碍。
实用的计算机网络,一般都由多台主机构成,例如,主机ABCDE通过总线相连,构成了一个总线型网络,假设,我们已经解决了物理层的问题,也就是说,主机间可以发送信号来传输比例0和1了。我们来看看,在这样一个总线型的网络上,还面临着什么需要解决的问题:
如图所示,主机A要给主机C发送数据,但是表示数据的信号会通过总线传播到总线上的每一个主机:
那么问题来了,主机C如何知道该数据是发送给自己的,自己要接收?而主机BDE又如何知道该数据并不是发送给自己的,自己应该拒绝呢?
这就很自然地引出了如何标识网络中各主机的问题,也就是主机编址的问题。大家可能听说过网卡上的MAC地址,其实它就是主机在网络中的地址。主机在发送数据时,应该给数据附加上目的地址,当其他主机收到后,根据目的地址和自身地址,来决定是否接收数据。
这就又引出了另一个问题:目的主机如何从信号所表示的一连串比特流中区分出地址和数据,也就是需要解决分组的封装格式问题。另外,对于总线型的网络,还会出现下面这种典型的问题。例如,某个时刻总线是空闲的,也就是没有主机使用总线来发送数据。片刻之后,主机B和D同时向总线发送数据,这必然会造成信号碰撞。
因此,如何协调各个主机争用总线,也是必须要解决的问题。需要说明的是,这种总线型的网络早已淘汰。现在常用的是使用以太网交换机将多台主机互连形成的交换式以太网,那么以太网交换机是如何实现的呢?我们把上述问题全部划归到数据链路层:
到这里我们会发现,其实只要解决了物理层和数据链路层各自所面临的问题,我们就可以实现分组在一个网络上传输了。没错确实是这样,但是我们每天都会使用的因特网,是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层的问题,还是不能正常工作。
我们来看下面这个例子:
这是一个由三个路由器四个网络互连起来的小型互联网,我们可以把它看做是因特网中很小的一部分。在之前的例子中,仅有一个网络我们不需要对网络进行标识,而在本例中具有多个网络,很显然我们面临着如何标识各网络已经网络中各主机的问题。换句话说也就是网络和主机共同编址的问题,相信同学们一定听过IP地址,例如下图中标识了网络N1中各设备的IP地址:
该类IP地址的前三个十进制数用来标识网络,第四个十进制数用来标识主机。在本例中,网络N1的网络号为192.168.1,该网络上的笔记本电脑,服务器以及路由器接口的IP地址的前三个数应该都是192.168.1。因为它们都在网络N1上。而第四个十进制数分别为1,2,254,各不相同,用来标识它们自己。同理下图是网络N2上各设备的IP地址:
我们再来看另一个问题,源主机与目的主机之间的传输路径往往不止一条,分组从源主机到目的主机可走不同的路径。这样就引出了路由器如何转发分组的问题,以及如何进行路由选择的问题。我们将这些问题全部划为网络层:
解决以上所有的问题以后,则可以实现分组在网络间进行传输的问题,但是对于计算机网络应用而言,这仍然不够。例如假设这台主机中运行着两个与网络通信相关的应用进程,一个是浏览器进程另一个是QQ进程:
这台服务器中运行着与网络通信相关的服务器进程:
某个时刻,主机收到了来自服务器的分组,那么,这些分组应该交给浏览器进程处理呢还是交给QQ进程处理呢?这就引出了我们如何标识与网络通信相关的应用进程,进而解决进程之间基于网络的通信问题。另外,如果某个分组在传输过程中出现了误码,或者由于路由器繁忙,导致路由器丢弃分组,换句话说若出现传输错误,应该如何处理。误码将这些问题全部划归到运输层:
在以上基础上,我们只需要制定各种应用层协议,并按协议标准编写相应的应用程序。通过应用进程间的交互来完成特定的网络应用。例如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等,我们将这些问题全部划归到应用层:
这就是五层协议体系的原来体系结构。
总结一下:
3 计算机网络体系结构分层思想举例
假设网络拓扑如下图所示:
主机属于网络N1,Web服务器属于网络N2,N1和N2通过路由器互连,我们使用主机中的浏览器来访问Web服务器:
当输入网址后,主机会向Web服务器发送请求:
Web服务器收到请求后,会发回相应的响应。主机的浏览器收到响应后,将其解析为具体的网页内容显示出来:
主机和Web服务器之间基于网络的通信,实际上是主机中的浏览器应用进程与Web服务器应用进程之间基于网络的通信:
那么体系结构的各层在整个过程中起到怎样的作用呢?从主机端按体系结构自顶向下的顺序来看,应用层按HTTP协议的规定构建一个HTTP请求报文:
应用层将HTTP请求报文交付给运输层处理,运输层给HTTP请求报文添加一个TCP首部,使之成为TCP报文段,下面有TCP报文段的首部格式,该首部的作用主要是为了区分应用进程以及实现可靠传输:
运输层将TCP报文段交付给网络层处理,网络层给TCP报文段添加一个IP首部,使之成为IP数据报,下图是IP数据报的首部格式,该首部的作用主要是为了使IP数据报可以在互联网上传输,也就是被路由器转发:
网络层将IP数据报交付给数据链路层处理,数据链路层给IP数据报加一个首部和一个尾部使之成为帧,假设网络N1是以太网,这是以太网帧首部格式,该首部的作用主要是为了让帧能够在一段链路上或一个网络上传输,能够被相应的目的主机接收,这是以太网帧尾部的格式,其作用是为了让目的主机检查,所接收到的帧是否有误码:
数据链路层将帧交付给物理层,物理层将帧看做是比特流,由于网络N1是以太网,因此物理层还会给该比特流前面添加前导码,其作用是为了让目的主机做好接收帧的准备,物理层将添加有前导码的比特流变换成相应的信号发送到传输媒体,信号通过传输媒体到达路由器,我们来看路由器的处理过程。
物理层将信号转换为比特流:
然后去掉前导码之后将其交付给数据链路层,这实际上交付的是帧:
数据链路层将帧的首部和尾部去掉后,将其交付给网络层,这实际上交付的是IP数据报:
网络层解析IP数据报的首部,从中提取出目的网络地址,然后查找自身的路由表确定转发端口,以便进行转发,网络层将IP数据报交付给数据链路层:
数据链路层给IP数据报添加一个首部,和一个尾部使之成为帧,数据链路层将帧交付给物理层:
物理层将帧看做是比特流,由于网络N2是以太网,因此物理层还会给该比特流前面添加前导码,物理层将添加有前导码的比特流变换成相应的信号发送到传输媒体,信号通过传输媒体到达web服务器,然后执行的就是和之前相反的操作啦,这里不再赘述。
然后应用层对HTTP请求报文进行解析,然后给主机发挥HTTP响应报文,与之前的过程差不多啦,就不细说了:
4、计算机网络体系结构中的专业术语
这些专用术语来源于OSI的七层协议体系结构,但也适用于TCP/IP的四层体系结构和五层协议原理体系结构。我们将这些专用术语中最具代表性的三个作为分类名称。它们分别为:
首先是实体。
实体是指任何可发送或接收信息的硬件或软件进程,如下图中,我们用标有字母的小方格来表示实体,有了实体的概念我们再来看对等实体,对等实体是指通信双方相同层次的实体,例如下图中的A与F就为对等实体,比如通信双方的网卡,实则就是一对对等实体:
再来看看协议:
为啥叫逻辑通信?是因为这种通信实际上并不存在,它只是我们假设出来的一种通信,目的在于方便我们单独研究体系结构的某一层时,不用考虑其他层。
协议具有三要素:
最后是服务。
在计算机网络体系结构中,对通信双方所交互的数据包有专门的术语,我们把对等层次之间传送的数据包称为该层的协议数据单元,英文缩写词为PDU。
例如,物理层对等实体逻辑通信的数据包称为比特流,数据链路层对等实体逻辑通信的数据包称为帧,网络层对等实体逻辑通信的数据包称为分组,如果使用IP协议,也称为IP数据报,运输层对等实体逻辑通信的数据包一般根据协议而定,例如使用TCP协议则称为TCP报文段,使用UDP协议则称为UDP用户数据报,用户层对等实体逻辑通信的数据包一般称为应用报文,上述各层数据包可以统称为协议数据单元PDU,我们把同一系统内,层与层之间交换的数据包称为服务数据单元,英文缩写词为SDU,多个服务数据单元可以合成为一个协议数据单元;一个服务数据单元也可划分为几个协议数据单元:
第一章总结
最后
以上就是强健保温杯为你收集整理的计算机网络学习:第一章概述1.1 计算机网络在信息时代的应用1.2 因特网概述1.3 三种交换方式1.4 计算机网络的定义和分类1.5 计算机网络的性能指标1.6 计算机网络体系结构第一章总结的全部内容,希望文章能够帮你解决计算机网络学习:第一章概述1.1 计算机网络在信息时代的应用1.2 因特网概述1.3 三种交换方式1.4 计算机网络的定义和分类1.5 计算机网络的性能指标1.6 计算机网络体系结构第一章总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复