分类: BSD
2012-08-03 16:41:12
1、简要说明TCP/IP传输层的作用。它主要包含哪两个协议?它们的主要特点是什么?
解答:
TCP/IP传输层为应用进程提供一条端到端的逻辑信道,为应用进程提供数据传输服务。传输层的一个重要目的是进一步加强底层网络的数据传输服务,传输层在不可靠的IP服务基础上,提高传输的可靠性。
TCP/IP传输层有两个并列的协议,传输控制协议(TCP)和用户数据报协议(UDP)。一般,TCP和UDP共存于互联网的传输层。
TCP使用IP提供面向连接的可靠的传输服务。TCP在传输前要建立连接。一般TCP用于一次传输要交换大量报文的情形。为了提供可靠的传输服务,TCP采取了诸多措施,如差错控制、流量控制和拥塞控制等。
UDP使用IP提供无连接的不可靠但效率高的传输服务。UDP比TCP简单得多。UDP适用于一次传输少量信息的情况。它的可靠性由上层的应用程序提供。UDP的价值在于其效率高,当底层通信子网相当可靠时,就更为适宜。
2、简述协议端口及其作用。有哪两类协议端口?它们如何分配和管理?
解答:
和OSI类比,协议端口(简称端口)相当于传输层与上面应用层接口处的服务访问点TSAP。端口是一种抽象的软件结构,包括一些数据结构和输入、输出缓冲队列,容纳传输层和该端口所对应的应用程序之间交换的数据。为了标识不同的端口,每个端口都拥有一个叫做端口号的整数标识符。
TCP/UDP使用端口与上层的应用进程交互,端口标识了应用层中不同的进程。传输层的TCP/UDP要和应用层的多个进程交互,通过端口机制提供了复用和解复用的功能。
TCP/UDP将端口分为两大类:一类是保留端口,一类是自由端口。周知端口也称保留端口,以全局方式进行统一分配,并公之于众。保留端口保留给服务器进程使用,每一种标准的服务器都分配有一个全局公认的端口号,号码为0~1023的端口才能作为保留端口,由Internet名字和号码分配公司ICANN管理。自由端口以本地方式进行分配,用户可自由使用。当某一进程与远地的进程通信之前,首先要在本地申请一个自由端口,然后使用周知端口与远地服务器进行通信。号码为1024及以上的端口都能作为保留端口。
3、UDP用户数据报报头共几个字节?哪几个字段?为什么不包含目的地址和源地址?
解答:
UDP用户数据报格式非常简单,报头只有8个字节,包含4个字段:
源端口:发送端UDP端口,当不需要返回数据时,该域为0;
目的端口:接收端UDP端口;
长度:UDP数据报总长度,以字节为单位,最小值为8(报头长);
校验和:UDP校验和是一个可选域,如果此域为“0”就表示不计算校验和。
UDP数据报中不指定源站和目的站的IP地址,因为传输层只需识别端口,不用识别主机,识别主机的任务由网际层完成。
4、UDP用户数据报的伪报头的作用是什么?为什么称为伪报头?UDP提供了什么样的可靠性措施?
解答:
伪报头是UDP计算校验和使用的,计算校验和时,除UDP用户数据报本身进行计算外,伪报头也参与计算,它补充了目的站IP地址和源站IP地址。伪报头参与校验和的计算是为了验证UDP数据报是否传到正确的目的地(IP地址加端口号)。
伪报头并不是UDP数据报的有效成分,只是计算校验和临时与UDP用户数据报组合在一起,校验和计算之后就丢弃,并不被传送,所以称为伪报头。
UDP校验和是UDP提供的传输可靠性的唯一手段,而且它还是可选的。当选择进行UDP校验和计算时,若校验和出现差错,UDP也没有超时重传等差错控制机制,而只是交与上层处理。另外,UDP是无连接的,也没有流量控制和拥塞控制等可靠性措施。
5、什么是TCP的数据流和报文段?TCP对什么进行编号?TCP采用什么确认的方式?TCP的确认序号是什么意思?
解答:
TCP的数据流,指的是字节的无结构的序列,TCP提供的是面向连接的可靠的流传输。为了便于每次的传输,又把数据流划分为若干个段,称为报文段,每个报文段作为TCP的协议数据单元PDU封装到一个IP数据报中在网上传输,报文段到达目的地后,TCP再将它们组装为原来的数据流。
TCP对数据流按字节编上序号,而不是按报文段编序号。TCP将传输的报文段所携带数据的第一个字节的序号放在报文段首部的序号字段中。
TCP采用累计确认方式,收方确认已正确收到的、积累的连续数据流。在确认报文段首部的确认序号字段中,收方写入的确认序号比正确收到的字节序号的最高序号多1,表明了它前面的数据流已正确收到,指示了所期望接收的下一个报文段的起始序号。
6、设TCP的最大报文段生存时间MSL分别为120s和60s,均使用32比特的序号空间。问:同一TCP连接中在MSL内不出现相同序号的最大信息传输速率分别是多少?TCP采取什么措施避免同一连接上在MSL内出现相同的序号。
解答:
32比特的序号的空是,序号循环一周要发送2^32个字节,若TCP的最大报文段生存时间MSL为120s,则同一TCP连接上在MSL内不出现相同序号的最大信息传输速率是:(2^32×8)b/120s=286Mb/s。
同样方法可得:若TCP的最大报文段生存时间MSL为60s,则同一TCP连接中在MSL内不出现相同序号的最大信息传输速率是572Mb/s。
序号空间不变时,数据传输速度越高序号循环一周的时间越小,就可能小于TCP规定的MSL。为了同一TCP连接上在MSL内不产生相同的序号,TCP使用时间戳选项,发方TCP在每个发送的报文段首部插入32比特的时间戳,收方将收到的时间戳也插入到ACK报文段中作为确认。这样,32比特的时间戳和32比特的序号组合在一起就可以避免序号循环产生的问题。
7、理论上光纤可以达到75Tb/s的信息传输速率,如果TCP的最大报文段生存时间MSL仍取120s,问:为避免出现相同序号的问题而扩大序号空间,TCP应该使用至少多少的比特的序号空间?对于光纤的这一速率,如果仍使用32比特的序号空间,MSL最大有多大?
解答:
由(2^n×8)b/120s=75Tb/s,得2^n=1.125×10^12,n约等于40,为避免出现相同序号的问题,TCP应该使用至少40比特的序号空间。
如果仍使用32比特的序号空间,MSL最大只有(2^32×8)b/75Tb/s=0.46s
8、在TCP连接上,主机的发送窗口64k字节,线路的往返时间是50ms,问:
(1) 主机能达到的最大信息传输速率是多少?
(2) 若在此线路上使用窗口比例因子选项实现155Mb/s的信息传输速率,窗口比例因子至少应该选多大?扩展后的窗口可达多少字节?
解答:
在TCP连接上,发方只有经过一个往返时间RTT才能发出数据并收到确认,之后才能向前滑动发送窗口并继续发送;又因为主机的发送窗口最大值为64K字节,因此TCP最多只能在RTT时间内发送64K字节的数据,能达到的最大信息传输速率是:(65536×8)b/50ms=10.5Mb/s。
若在此线路上使用窗口比例因子选项实现155Mb/s的信息传输速率,设窗口比例因子为n,则:
(65536×2^n×8)b/50ms>=155Mb/s,因此2^n>=14.8,取窗口比例因子n=4。扩展后的窗口可达:64K×2^4=1024K字节。
9、通告窗口设置于何处?它表示什么意思?它反映了什么信息?在TCP起流量控制中它起什么作用?
解答:
通告窗口设置于收方报文段的窗口字段,单位为字节。通告窗口告诉发方:在收到收方的下一次确认之前,发方能够发送的数据的长度不能超过此窗口的大小。如果通告窗口为n,则发方能够发送的数据流是从确认序号开始的n个字节。
通告窗口实际上反映了收方目前可用的接收缓冲区的大小,即它的接收能力。
通告窗口在TCP流量控制中反馈了收方当前的接收能力,发方根据通告窗口反馈的值调节自己的发送窗口的大小,从而实现流量控制。
10、在TCP连接上,主机A向主机B传输1100字节的数据,双方TCP协商的MSS为300字节,主机B通告的窗口WIS为1200字节,又设主机A和B的初始序号ISN分别为1000和2000,试画出主机A和主机B建立连接——传输数据(A→B)——关闭连接的全过程示意图,图中标明根据协议参数。
解答:
11、什么是C/S模式?什么是B/S模式?为什么采用C/S模式作为互联网应用程序间相互作用的最主要形式?
解答:
C/S模式即客户-服务器模式,客户(client)和服务器(server)分别是两个应用进程,可以位于互联网的两台不同主机上。服务器被动地等待服务请求,客户向服务器主动发出服务请求,服务器做出响应,并返回服务结果给客户,这就是C/S模式。
B/S模式即浏览器-服务器模式,是一种基于Web的C/S模式。B/S模式中,客户是浏览器,服务器是Web服务器。客户向服务器发出信息浏览请求,服务器向客户发回客户所需的万维网文档,以页面的形式显示在客户的屏幕上。B/S模式的一个重要特点是平台无关性,Browser、Web Server及主流语言Java和HTML等都可以做到与软硬件平台无关。另外,B/S模式的客户端变瘦,其功能主要是一个多媒体浏览器。
采用C/S模式作为互联网应用程序间相互作用的最主要形式的原因如下:
从技术方面讲,互联网上不同主机进程之间进行通信,其重要特点是主机发起通信完全是随机的。因此需要一种机制,能够适应这种随机性。C/S模式很好地解决了上述技术问题,每次通信过程都由客户进程主动发起,而且是随机的,服务器进程从开机起就处于等待状态,随时准备对客户的请求做出及时的响应。
从实际应用方面讲,C/S模式的重要特点是非对等性相互作用,客户请求服务,服务器提供服务。一般提供服务的计算机要比请求服务的计算机拥有更好更多的硬、软件资源和更强的处理能力。C/S模式很好地适应了Internet上资源分布不均的客观现实。
C/S模式优化了网络计算,提高了网络的利用率。客户可以请求服务器进行大型计算,比如数据库查询等,客户接收用户的查询请求,形成查询报文传给服务器,服务器执行大型数据库的查询,之后将查询结果传回给客户,客户进行结果显示,提供友好的人机界面。因此,客户和服务器分工合作,协同完成计算,网络上传输的只是简短的查询请求和结果。
12、什么是域名?叙述Internet的域名结构。什么是域名系统DNS?
解答:
域名即主机名,它用来惟一地标识连在Internet上的主机,它采用层次结构,在应用层使用。
域名为层次结构,分为若干级,各级域名之间以小数点连接:…….三级域名.二级域名.顶级域名。每一级域名均由英文字母与阿拉伯数字组成,不超过63个字符,不区分字母大小写。各级域名自左向右级别越来越高,顶级域名TLD在最右边。一个完整的域名总字符数目不能超过255个。域名系统不规定一个域名必须包含多少个级别。这样,整个Internet层次结构的名字空间就构成一棵命名树,根结点是无名的,根下面就是顶级域结点。 DNS负责主机名和IP地址之间的转换,它是一个联机分布式数据库系统,采用客户-服务器模式。进行域名查询的机器称为域名解析器,需要时主动发起域名解析请求,域名服务器则随时准备作出响应。域名服务器的数据库中存放着它所管辖范围的主机名和IP地址之间的映射表,域名服务器之间又可以相互联络和协作,以便分布在Internet各个域名服务器数据库中的域名都能被有效地搜索。
13、叙述域名服务器系统的组织方式。
解答:
域名服务器系统基本上是按照域名的层次进行组织的,但域名器系统的层次并不与域名系统的层次严格对应。
Internet允许根据具体情况将某一域名空间划分为一个或多个域名服务器管辖区,在每个管辖区设置相应的授权域名服务器。管辖区内的主机必须在授权域名服务器处注册登记,授权域名服务器的DNS数据库中记录了辖区内主机的域名和IP地址的映射表,负责对本管辖区内的主机进行域名解析工作。
有两种授权域名服务器有特殊的名称。一种是本地域名服务器或默认域名服务器。对每个管辖区内的所有主机来说,该管辖区内的授权域名服务器称为本地域名服务器,辖区内的所有主机都知道它的IP地址。另一种是根域名服务器,是负责顶级域的授权域名服务器。
分散在世界各地的域名服务器形成了一个联合协作的系统,需要时域名服务器之间可以协作完成解析,为此,每个域名服务器都知道所有的根域名服务器的IP地址,根域名服务器知道其下属的二级域名服务器的IP地址,每个域名服务器又知道其下一级域名服务器的IP地址。
14、描述域名解析方式。
解答:
域名解析分为两步进行:
第一步:访问本地域名服务器。当某一应用需要将主机名映射为IP地址时,该应用使用域名解析器,首先请求本地域名服务器进行解析。本地域名服务器查找DNS数据库,如果能找到对应的IP地址,就放在应答报文中返回。如果本地域名服务器中不包含该域名和IP地址的映射,则需转入第二步;
第二步:访问非本地的其他域名服务器。先访问顶级域名对应的根服务器,根服务器不能解析时,再请求其下一级服务器,下一级服务器不能解析时,再请求下下一级服务器,……,如此进行一次自顶向下的搜索,最后找到其授权域名服务器,实现域名解析。
其中第二步域名解析又有两种方式,第一种方式称为递归解析,此时,域名服务器又是解析器,它不能解析时,就变为解析器请求其他域名服务器解析,如此递归,直至得到解析结果。第二种方式称为反复解析,由客户自己每次请求一个服务器,服务器不能解析则返回下一个服务器的IP地址给客户,客户反复进行解析,直至得到解析结果。
15、为提高域名解析的效率,DNS采取了什么措施?
解答:
为了提高域名解析的效率,域名解析中使用了域名缓存技术。域名缓存技术是在服务器中设置一个专用的内存缓冲区,用来存放近期解析过的域名及其对应的IP地址的映射。于是,在服务器域名解析过程中,如果在数据库中搜索不到相关记录,则可使用域名缓存进行解析,如果域名缓存也解析不到,再访问非本地的其他域名服务器。这显然提高了解析效率。
域名缓存机制不仅用于域名服务器,也用于主机。许多主机运行一种功能很强的解析器软件,系统启动时这种解析器软件从本地域名服务器获取一个完整的域名IP地址映射数据库的副本,并维护一个近期使用的域名IP地址映射的缓冲区,这样主机缓冲区中既有本地的域名映射也有非本地的部分域名映射。
16、主机名(域名)和计算机名有何不同?它们各来自什么体系?WINS的作用是什么?与DNS有何不同?
解答:
主机名和计算机名都用于标识网络中的一台计算机,但来自不同的规定,用于不同场合。主机名是Internet中使用的层次结构的名称,而计算机名是网络基本输入输出系统NetBIOS规范的名称,它是一个不超过15个字符长度的名称,没有层次结构。主机名和计算机名分别来自TCP/IP和Microsoft Windows两个最有影响的体系。
WINS用于Microsoft TCP/IP网络中计算机名到IP地址的解析,而DNS用于TCP/IP网络中主机名到IP地址的解析。
17、Telnet为用户提供什么应用服务?Telnet运行使用什么模式?Telnet采用什么样的服务器方案?
解答:
Telnet为用户提供访问远程系统的资源的服务,就像远地主机的本地用户一样使用这台主机的软、硬件资源。例如,远在异国就可以通过Telnet连接到华盛顿的国会图书馆,访问它的资源。
Telnet运行使用客户-服务器模式,在本地系统运行Telnet客户进程,而在远地主机则运行Telnet服务器进程。当用户在本地调用Telnet时,本地主机上的应用程序成为客户,Telnet客户通过操作系统内核的键盘驱动程序接收输入的信息并传送到远地的服务器,服务器发回的信息并显示在本地用户屏幕上。
Telnet的服务器方案是并发服务器,用主从服务器的方式解决并发请求的问题。先于客户启动的Telnet服务器用周知端口23监听并接收来自客户的TCP连接请求,每有一个来自客户的TCP连接请求,它就产生一个从服务器来处理这一连接,而原来的主服务器继续等待新的请求。
18、FTP为用户提供什么应用服务?什么是匿名FTP?FTP运行采用什么模式?
解答:
文件传输协议FTP为用户提供文件传输服务,通过网络进行文件的全文拷贝。
匿名FTP给用户提供了一种方便的访问方式,它是一种非严格访问控制,但服务器常常将匿名访问限制在某一个目录下的公共文件,如/usr/ftp,客户在支持匿名FTP的服务器上公共文件时,只需使用下述公开的帐号:登录名:anonymous,口令:guest,就可以与服务器建立会话。Guest是早期系统的匿名访问口令,如今许多FTP版本常常要求用户使用其电子邮件地址作为口令,这样,当发生问题时远程FTP程序可发送电子邮件通知用户。
FTP是基于客户-服务器模型而设计的,客户和服务器之间利用TCP连接传输信息。但与一般客户服务器模式有所不同的是,FTP的客户和服务器之间要建立双重连接,一个是控制连接,负责传输控制信息,一个是数据连接,负责传输文件。FTP服务器采用并发服务器方式,以满足多个客户的并发请求。
19、电子邮件系统中,用户代理(UA)和报文传送代理(MTA)的功能是什么?
解答:
UA包含一个在本地运行的用户接口,用户通过一个友好的接口来交付、读取和处理邮件,其主要功能如下:
发件撰写;给用户提供方便的编辑信件的环境;
收件显示:在计算机屏幕上显示来信内容,包括来信附上的声音和图像等;
收件处理:收信人应能根据情况按不同方式对来信进行处理,例如,删除、存盘、打印等;
交付和读取邮件:用户撰写好邮件后,UA使用SMTP将用户的邮件传送到它的邮件服务器。相反方向上,UA使用POP(或IMAP)从邮件服务器读取邮件到用户主机进行处理。
MTA运行在ISP的邮件服务器上,其主要功能如下:
邮件发送:接收本地用户发送的邮件,存于邮件缓存区待发,MTA定期(通常每30分钟)进行扫描并发送。如果到一定时间(比如几天)某个邮件仍发不出去,就将其从发送邮件缓存区删除,并通知发件人。
邮件接收:MTA接收发到本地用户的邮件,并将邮件存放在收信人的邮箱中。邮件发送和接收使用SMTP协议,另外,MTA还运行POP服务器协议,供用户随时读取邮箱中的邮件。可见,邮件服务器需要昼夜不停地运行,为用户转发和接收邮件。
邮件传输情况报告:将邮件传送的情况向发件人报告。
20、简述RFC822定义的电子邮件的格式,其信息使用什么编码?
解答:
电子邮件信息包括两个部分,中间用一个空行分隔。第一部分是一个首部,包括有关发送方、接收方、发送日期和信息格式等。第二部分是主体,包括信息主体的文本。
电子邮件首部保持标准形式。首部的每一行首先是一个关键字,接着是一个冒号,然后是附加的信息。有些关键字在电子邮件首部是必须的,另一些是可选的。每个首部必须包含以To开头的行,引出一个接收方的列表,可以包含一个或多个电子邮件地址。电子邮件的首部有一个以From开头的行,其后是发送方的电子邮件地址。以下列出主要的关键字。
To:接收方邮件地址;
From:发送方邮件地址;
Cc:发送副本的邮件地址
Date:发送的日期和时间;
Subject:邮件的主题;
X-Charset:使用的字符集;
Reply-To:回复邮件的地址。
RFC822电子邮件使用可打印的ASCII码。
21、操作系统包括哪两个层次?什么是应用程序编程接口(API)?它有哪两种实现方式?
解答:
操作系统包含内核和系统应用程序两个层次。系统启动后,内核总是常驻内存,它提供最基本的系统功能,比如设备驱动、进程调度、资源管理等。在内核之外是系统应用程序,包括外部命令、应用平台和软件开发环境等。
应用程序只有通过内核才能访问计算机的各种硬件资源。API是应用程序(包括用户自己开发的应用程序和系统应用程序)如何访问系统内核的接口。
API有两种实现方式:一种是系统内核的系统调用,另一种是以库函数方式,它在核外实现。在UNIX中用系统调用来实现,而在Windows中则用库函数来实现。
22、解析套接字(Socket)、Socket机制和套接字对。
解答:
套接字(Socket)的英文原意是孔、插口等,这里用来表示UNIX TCP/IP网络通信的接口,类似现实生活中的电话插口,提供了电话和电话网络之间的接口。
基于套接字概念形成了TCP/IP网络环境下应用程序之间通信的一套程序设计方法,一种TCP/IP网络通信API,称为Socket机制。
可以把套接字机制看成是网络环境下提供通信端口的UNIX文件访问机制的一般化。UNIX操作系统在文件读写之前调用open()时,系统返回一个文件描述字与某个文件或设备相关联,并用它作为读read()、写write()的参数来标识该文件或设备。套接字机制最早是由BSD UNIX引入的一种网络通信编程机制,这种机制继承了UNIX文件读写的思路。应用程序在进行网络读写时请求操作系统创建一个套接字,系统返回一个类似文件描述字的整数,可以称为Socket描述字,应用程序使用它标识创建的套接字,提供通信的端口。套接字机制的使用也和文件访问类似,一旦应用程序创建了一个套接字,并进行了地址绑定和外部地址的TCP连接,就可以利用Socket描述字作为参数使用write()在此连接上发送数据流,在连接的另一端则使用read()接收数据。
套接字对是表示TCP连接的两个端口听四元组:(本地IP地址,本地TCP端口号;远程IP地址,远程TCP端口号),通过Socket对连接了通信两端的应用程序。
23、什么是流套接字?什么是数据报套接字?
解答:
流套接字和数据报套接字是两种不同类型套接字,同一协议族可能提供多种不同的通信服务类型,创建Socket的应用程序使用不同类型套接字可以指定网络提供的通信服务类型。流套接字提供面向连接的数据流通信服务,数据报套接字提供无连接的数据报通信服务。TCP/IP协议族中,流套接字和数据报套接字分别对应TCP和UDP协议。
24、什么是套接字命名?套接字有了号,为什么还要命名?
解答:
套接字命名即是将本地Socket地址赋予Socket。本地Socket地址包括本地主机IP地址和本地端口号。
创建了一个Socket并有了Socket号,这个通信端口还不能使用,当它命名之后,将本地主机IP地址和本地端口号赋予它,它才能和特定主机上的特定的应用程序相关联,才能通过这个通信端口找到通信的端点。