计算机网络系列内容的学习目录 → \rightarrow →谢希仁计算机网络学习系列内容汇总。
计算机网络体系结构是指计算机网络层次结构模型,它是各层的协议以及层次之间的端口的集合。在计算机网络中实现通信必须依靠网络通信协议,目前广泛采用的是国际标准化组织(ISO)1997年提出的开放系统互联(Open System Interconnection,OSI)参考模型,习惯上称为ISO/OSI参考模型。
OSI从逻辑上,把一个网络系统分为功能上相对独立的7个有序的子系统,这样OSI体系结构就由功能上相对独立的7个层次组成,如下图左边所示。它们由低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
20世纪70年代初期,美国国防部高级研究计划局(ARPA)为了实现异种网之间的互联与互通,大力资助网络技术的研究开发工作。ARPANET开始使用的是一种称为网络控制协议(network control protocol,NCP)的协议。随着ARPANET的发展,需要更为复杂的协议。1973年,引进了传输控制协议TCP,随后,在1981年引入了网际协议IP。1982年,TCP和IP被标准化成为TCP/IP协议组,1983年取代了ARPANET上的NCP,并最终形成较为完善的TCP/IP体系结构和协议规范。
TCP/IP(transmission control protocol/internet protocol,传输控制协议/网际协议)由它的2个主要协议即TCP协议和IP协议而得名。TCP/IP是Internet上所有网络和主机之间进行交流时所使用的共同“语言”,是Internet上使用的一组完整的标准网络连接协议。通常所说的TCP/IP协议实际上包含了大量的协议和应用,且由多个独立定义的协议组合在一起,因此,更确切地说,应该称其为TCP/IP协议集。
TCP/IP共有4个层次,它们分别是网络接口层、网际层、传输层和应用层,如下图右边所示。
OSI标准失败的原因: 1. OSI的专家们缺乏实际经验,他们在完成OSI标准时没有商业驱动力;
2. OSI的协议实现起来过分复杂,而且运行效率很低;
3. OSI标准的制定周期太长,因而使得按OSI标准生产的设备无法及时进入市场;
4. OSI的层次划分也不太合理,有些功能在多个层次中重复出现。
对比两个体系结构可以看出,TCP/IP体系结构相当于将OSI体系结构的物理层和数据链路层合并为网络接口层,并去掉会话层和表示层。另外,由于TCP/IP在网路中使用的协议是IP协议,中文意思为网际协议,因此,TCP/IP体系结构的网络层常称为网际层。
当用户需要接入因特网,这就要求用户的主机必须使用TCP/IP协议。即使用户的网络不需要接入因特网,也可以使用TCP/IP协议。在用户主机的操作系统中,通常都带有符合TCP/IP体系结构标准的TCP/IP协议族。而用于网络互联的路由器中,也带有符合TCP/IP体系结构标准的TCP/IP协议族,只不过路由器一般只包含网络接口层和网际层。
TCP/IP体系结构的网络接口层并没有规定什么具体的内容,这样做的目的是可以互联全世界各种不同的网络接口。因此,本质上TCP/IP体系结构只有上面的三层,IP协议是TCP/IP体系结构网际层的核心协议,TCP和UDP是TCP/IP体系结构运输层的两个重要协议,TCP/IP体系结构的应用层包含了大量的应用层协议,例如HTTP、SMTP、DNS、RTP等。
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协议族常称为TCP/IP协议栈,这是因为TCP/IP协议体系的分层结构与数据结构中的栈在图形画法是类似的。
由于TCP/IP体系结构为了将不同的网络接口进行互连,因此它的网络接口层并没有规定什么具体的内容。当我们学习计算机网络的完整体系时,需要采取折中的方法,综合OSI和TCP/IP的优点,采用一种五层协议的原理体系结构。
五层协议的原理体系结构从下到上依次为物理层、数据链路层、网络层、运输层、应用层,如下图所示。
可以看出五层协议的原理体系结构将TCP/IP体系结构的网络接口层又重新划分为物理层和数据链路层。
1. OSI/RM体系结构、TCP/IP体系结构、原理体系结构的分层数量分别为( C )
A. 4,5,6 B. 5,6,7 C. 7,4,5 D. 7,6,5
分析: OSI/RM体系结构共有7层,TCP/IP体系结构共有4层,原理体系结构共有5层,分别如下图所示。
2. 在OSI/RM体系结构中,运输层的相邻上层为( B )
A. 数据链路层 B. 会话层 C. 应用层 D. 网络层
分析: OSI/RM体系结构依次为物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。
3. 在TCP/IP体系结构中,网际层的相邻下层为( B )
A. 数据链路层 B. 网络接口层 C. 运输层 D. 应用层
分析: TCP/IP体系结构依次为网络接口层、网际层、传输层和应用层。
4. 在原理体系结构中,应用层的相邻下层为( C )
A. 数据链路层 B. 网络接口层 C. 运输层 D. 应用层
分析: 原理体系结构依次为物理层、数据链路层、网络层、运输层和应用层。
5. 因特网采用的网络体系结构是( B )
A. OSI/RM体系结构 B. TCP/IP体系结构 C. 原理体系结构 D. 系统网络体系结构SNA
分析: 当前因特网体系结构采用的是TCP/IP参考模型(或者说体系结构)。
6. TCP/IP体系结构中的网络接口层对应OSI/RM体系结构的( A )
I. 物理层 II. 数据链路层 III. 网络层 IV. 运输层
A. I、II B. II、III C. I、III D. II、IV
分析: TCP/IP体系结构中的网络接口层对应OSI/RM体系结构的物理层和数据链路层。
⋄ \diamond ⋄ 计算机网络是个非常复杂的系统。早在最初的ARPANET设计时就提出了分层的设计理念。
⋄ \diamond ⋄ "分层"可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
⋄ \diamond ⋄ 下面,按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要的问题,以及如何将这些问题划分到相应的层次,层层处理。
最简单的情况:两台计算机通过一条网线连接起来
对于这种最简单的情况,我们要考虑以下问题:1. 采用怎样的传输媒体(介质);2. 在计算机上采用怎样的物理接口来连接传输媒体;3. 使用怎样的信号来表示比特0和1。
我们可以将这些问题划归到物理层。
要注意的是,严格来说,传输媒体并不属于物理层,它并不包含在体系结构之中。
主机A、B、C、D、E通过总线互连,构成了一个总线型网络
假设已经解决了物理层的问题,也就是说,主机间可以发送信号来传输比特0或1。当主机A要给主机C发送数据,表示数据的信号会通过总线传播到总线上的每一个主机。那么主机C如何知道该数据是发送给自己的,自己需要接受?而主机B、D、E又如何知道该数据并不是发送给自己的,自己应该拒绝? 此时需要解决的问题有:1. 如何标识网络中各主机的问题(即主机编址问题);2. 目的主机如何从信号所表示的一连串比特流中区分出地址和数据,即要解决分组的封装格式问题;3. 某个时刻总线是空闲的,没有主机使用总线来发送数据。片刻之后,主机B和D同时向总线发送数据,,这必然会造成信号碰撞。因此,如何协调各主机争议总线的问题。
我们可以将这些问题划归到数据链路层。
至此,我们解决了物理层以及数据链路层各自的问题,则可以实现分组在一个网络上的传输。
由3个路由器,4个网络互连起来的小型互联网
需要解决的问题有:1. 如何标识各网络以及网络中的各主机(网络和主机共同编址的问题);2. 如何进行路由选择的问题。
我们可以将这些问题划归到网络层。
至此,如果我们解决了物理层、数据链路层以及网络层各自的问题,则可以实现分组在网络间传输的问题。
假设这台主机中运行着两个与网络通信相关的应用进程,一个是浏览器进程,一个是QQ进程
需要解决的问题有:1. 如何标识与网络通信相关的应用进程,进而解决进程之间基于网络的通信问题;2. 若出现传输错误,应该如何处理?
我们可以将这些问题划归到运输层。
至此,如果我们解决了物理层、数据链路层、网络层及运输层各自的问题,则可以实现进程之间基于网络的通信。
在此基础上,只需制定各种应用层协议,并按协议层标准编写相应的应用程序,通过应用进程间的交互来完成特定的网络应用。
需要解决的问题有:通过应用进程间的交互来完成特定的网络应用的问题。
我们可以将这些问题划归到应用层。
至此,我们将实现计算机网络所需要解决的各种主要问题,分别划归到了物理层、数据链路层、网络层、运输层和应用层进而构成了五层协议体系的原理体系结构。
结论: 物理层解决使用何种信号来传输比特的问题;数据链路层解决分组在一个网络(或一段链路)上传输的问题;网络层解决分组在多个网络间传输(路由)的问题;运输层解决进程之间基于网络的通信问题;应用层解决应用进程间的交互来实现特定网络应用的问题。
1. 负责将比特转换成电信号进行传输的是( D )
A. 应用层 B. 网络层 C. 数据链路层 D. 物理层
分析: 物理层接收来自数据链路层的帧,将0和1编码成数字信号,以便在网络介质上传输。
2. MAC地址属于以下哪个层的范畴( C )
A. 物理层 B. 网络层 C. 数据链路层 D. 应用层
分析: MAC地址是一个十六进制数,表示了主机的物理连接,MAC地址在OSI 模型的第二层(数据链路层)使用。
3. IP地址属于以下哪个层的范畴( B )
A. 网络接口层 B. 网际层 C. 应用层 D. 运输层
分析: IP 地址可表示为二进制,也可以表示为十进制,是一种逻辑标识符,位于OSI 模型的第三层(网际层)。
区分MAC 地址和IP 地址,描述在网络中的使用这些地址的时机和方式。
MAC地址是一个十六进制数,表示了主机的物理连接,MAC地址在OSI 模型的第二层使用,IP 地址可表示为二进制,也可以表示为十进制,是一种逻辑标识符,位于OSI 模型的第三层。位于同一物理网段的主机使用MAC地址彼此寻找对方,而当主机位于不同的LAN网段或者子网时,将使用IP来地址来寻找对方。即使主机位于不同的子网中,分组通过路由选择到达目标网络后,也将把目标IP地址解析为MAC地址。
4. 实现进程间基于网络通信的是( D )
A. 物理层 B. 数据链路层 C. 网络层 D. 运输层
分析: 运输层实现进程之间基于网络的通信。两个主机进行通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称为端到端的通信,运输层为应用进程之间提供端到端的逻辑通信。
5. 通过应用进程间的交互来完成特定网络应用的是( C )
A. 物理层 B. 数据链路层 C. 应用层 D. 运输层
分析: 应用层的任务是通过应用进程间的交互来完成特定网络应用,应用层协议定义的是应用进程间通信和交互的规则。
通过一个具体的网络通信实例,来看看计算机网络体系结构分层处理方法。假设网络拓扑如下所示,主机属于网络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服务器。
物理层将信号变换成比特流,然后去掉前导码后将其交付给数据链路层,这实际上交付的是帧。数据链路层将帧的首部和尾部去掉后,将其交付给网络层,这实际上交付的是IP数据报。网络层将IP数据报的首部去掉后,将其交付给运输层,这实际上交付的是TCP报文段。运输层将TCP报文段的首部去掉后,将其交付给应用层,这实际上交付的是HTTP请求报文。应用层对HTTP请求报文进行解析,然后给主机发回HTTP响应报文。与之前的过程类似,HTTP响应报文需要在Web服务器层层封装,然后通过物理层变换成相应的信号,再通过媒体传输到路由器。路由器转发该响应报文给主机,主机通过物理层将收到的信号转换为比特流。之后通过逐层解封,最终取出HTTP响应报文。
1. 在数据从源主机传送至目的主机的过程中,不参与数据封装工作的是( D )
A. 数据链路层 B. 会话层 C. 应用层 D. 物理层
分析: 物理层以0、1比特流的形式透明地传输数据链路层递交的帧。网络层、应用层都把上层递交的数据加上首部,数据链路层把上层递交的数据加上首部和尾部。因此,当数据有端系统A传送到端系统B时,物理层不参与数据封装工作。
2. 假设五层协议原理体系结构的应用层欲发送500B的数据(无拆分),除物理层和应用层外,其他各层在封装PDU时均引入20B的首部,数据链路层还要引入10B的尾部,则应用层数据传输效率约为( D )
A. 96.2% B. 94.3% C. 89.3% D. 87.7%
分析: 五层协议原理体系结构共有5层,除去物理层和应用层,还剩余3层,这3层的每一层都会引入20B的额外开销,一共20B×3=60B的额外开销。数据链路层还要引入10B的尾部,所以一共60 + 10 = 70B的额外开销。应用层欲发送的数据长度为500B,但实际发送500B+70B=570B,因此传输效率为500B/570B=87.7%。
将计算机网络体系结构中的专用术语中最具代表性的三个作为分类名称:实体、协议、服务。
实体是指任何可发送或接收信息的硬件或软件进程。
对等实体是指收发双方相同层次中的实体。
例如,下图所示的是通信双方的五层原理体系结构,我们在各层中用标有字母的小方格来表示实体,实体A和实体F为对等实体,以此类推。
思考: 通信双方的网卡是不是对等实体?通信双方中的正在进行通信的应用进程是不是对等实体?
都是对等实体。
协议是指控制两个对等实体进行逻辑通信的规则的集合。
例如,应用层对等实体在应用层协议的控制下进行逻辑通信,运输层对等实体在运输层协议的控制下进行逻辑通信,网络层对等实体在网络层协议的控制下进行逻辑通信,以此类推。
需要注意的是,之所以称为逻辑通信,是因为这种通信其实并不存在,它只是我们假设出来的一种通信。目的在于方便我们单独研究体系结构某一层时,不用考虑其他层。例如,当我们研究运输层时,我们可以假设运输层的对等实体在进行逻辑通信,而不用顾及其他层。
计算机网络协议有三个要素:语法、语义、同步。
⋆ \star ⋆ 语法定义通信双方所交换信息的格式。例如,IP数据报的格式。
⋆ \star ⋆ 语义定义通信双方所要完成的操作。例如,主机HTTP的GET请求给Web服务器,Web服务器收到后执行相应的操作,然后给主机发回HTTP的响应。
⋆ \star ⋆ 同步定义收发双发的时序关系。例如,TCP的“三报文握手”建立连接的过程。
1. 在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。 例如,物理层对等实体在物理层协议的控制下向数据链路层提供服务。
2. 要实现本层协议,还需要使用下面一层所提供的服务。 例如,数据链路层对等实体享受物理层提供的服务,并在数据链路层协议的控制下进行逻辑通信,给网络提供服务;网络层对等实体享受数据链路层提供的服务,并在网络层协议的控制下进行逻辑通信,给运输层提供服务;运输层对等实体享受网络层提供的服务,并在运输层协议的控制下进行逻辑通信,给应用层提供服务;应用层对等实体享受运输层提供的服务,并在应用层协议的控制下进行逻辑通信,给其上层(也就是用户)提供服务。
3. 协议是水平的,而服务是垂直的。
4. 实体看得见下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是“透明”的。
5. 服务访问点是指在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。 例如,数据链路层的服务访问点为帧的“类型”字段;网络层的服务访问点为IP数据报首部中的“协议字段”;运输层的服务访问点为“端口号”。
6. 上层要使用下层所提供的服务,必须通过与下层交换一些命令,这些命令称为服务原语。
7. 把对等层次之间传送的数据包称为该层的协议数据单元(PDU)。 例如,物理层对等实体逻辑通信的数据包称为比特流;数据链路层对等实体逻辑通信的数据包称为帧;网络层对等实体逻辑通信的数据包称为分组,如果使用IP协议,也成为IP数据报;运输层对等实体逻辑通信的数据包一般根据协议而定,例如,使用TCP协议,则成为TCP报文段,使用UDP协议,则称为UDP用户数据报;应用层对等实体逻辑通信的数据包一般称为应用报文。上述各层数据包可以统称为协议数据单元PDU。
8. 把同一系统内,层与层之间交换的数据包称为服务数据单元(SDU)。
9. 多个SDU可以合成一个PDU,一个SDU也可以划分为几个PDU。
1. 物理层、数据链路层、网络层、运输层的传输单位(或称协议数据单元PDU)分别是( B )
I. 帧 II. 比特 III. 报文段 IV. 分组(数据报)
A. I、II、IV、III B. II、I、IV、III C. I、IV、II、III D. III、IV、II、I
分析: 协议数据单元(ProtocolData Unit )物理层的PDU是数据位(bit),数据链路层的 PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的PDU是数据段(segment),其他更高层次的PDU是数据(data)。
在网络传输中,报文是具有完整意义的二进制数据整体,报文在传输层被拆分成较小的可传输的数据单元并添加头部,形成包,到达网络层后再次被添加头部形成新的包。当数据经过网络节点时,在这里添加目的地址与源地址,包在到达数据链路层后被封装成帧,最后才是物理层的比特。
包、帧、数据报、段、消息这五个述语都用来表述数据的单位,大致区分如下:包可以说是全能性述语;帧用于表示数据链路层中包的单位;而数据包是IP和UDP等网络层以上的分层中包的单位;段则表示TCP数据流中的信息;消息是指应用协议中数据的单位。
2. 在OSI参考模型中,第N层与它之上的第N+1层的关系是( A )
A. 第N层为第N+1层提供服务 B. 第N+1层将给从第N层接收的报文添加一个报头 C. 第N层使用第N+1层提供的服务 D. 第N层使用第N+1层提供的协议
分析: 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,同时要实现本层协议,还需要使用下层所提供的服务。本层的服务用户只能看见服务而无法看见下面的协议,下层的协议对上层的服务用户是透明的。也就是下一层要为上一层提供服务,并为上一层数据进行封装,因此第N层为第N+1层提供服务,第N层将从第N+1层接收的报文添加一个报头,第N+1层使用第N层提供的服务。
3. 在OSI参考模型中,对等实体是指( C )
A. 任何可发送或接收信息的硬件 B. 任何可发送或接收信息的软件进程 C. 收发双方相同层次中的实体 D. 收发双方不同层次中的实体
分析: 对等实体是指收发双方相同层次中的实体。实体是指任何可发送或接收信息的硬件或软件进程。
4. 在OSI参考模型中,控制两个对等实体进行逻辑通信的规则的集合称为( B )
A. 实体 B. 协议 C. 服务 D. 对等实体
分析: 协议是指控制两个对等实体进行逻辑通信的规则的集合。