免费智能真题库 > 历年试卷 > 程序员 > 2014年上半年 程序员 上午试卷 综合知识
  第69题      
  知识点:   TCP/IP协议      AR   ARP   ARP协议   RARP协议   TCP   TCP/IP
  关键词:   TCP/IP   协议栈   TCP   协议        章/节:   常用数据结构   网络基础知识       

 
TCP/IP协议中,ARP协议的作用是(69),RARP协议的作用是(70)。
 
 
  A.  从MAC地址查找对应的IP地址
 
  B.  由IP地址查找对应的MAC地址
 
  C.  把全局IP地址转换为私网中的专用IP地址
 
  D.  用于动态分配IP地址
 
 
 

 
  第38题    2016年下半年  
   30%
设元素a、b、c、d依次进入一个初始为空的栈,则不可能通过合法的栈操作序列得到(38)。
  第36题    2020年下半年  
   27%
栈是后进先出的线性数据结构,其基本操作不包括( )。
  第37题    2018年上半年  
   27%
假设以S和X分别表示入栈和出栈操作,并且初始和终止时栈都为空,那么( )不是合法的操作序列。
 
  第68题    2013年下半年  
   55%
在TCP/IP网络体系中,ICMP协议的作用是什么? (68)。
  第69题    2016年上半年  
   32%
动态主机配置协议(DHCP)的作用是(69):DHCP客户机如果收不到服务器分配的IP地址,则会获得一个自动专用IP地址(APIPA),如1..
  第66题    2018年上半年  
   57%
在TCP/IP体系结构中,(66)协议可将IP地址转化为MAC地址;(67)协议属于应用层协议。
   知识点讲解    
   · TCP/IP协议    ·     · AR    · ARP    · ARP协议    · RARP协议    · TCP    · TCP/IP
 
       TCP/IP协议
        TCP/IP是Internet的核心协议,广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP主要有5个方面的特点:逻辑编址、路由选择、域名解析、错误检测和流量控制以及对应用程序的支持。
               TCP/IP分层模型
               协议分层模型包括两方面的内容:一是层次结构;二是各层功能的描述。TCP/IP参考模型可以分为以下4个层次:应用层、传输层、互联层(网际层)、主机—网络层(网络接口层)。其中,应用层(Application Layer)与OSI应用层相对应,传输层(Transport Layer)与OSI传输层相对应,互联层(Internet Layer)与OSI网络层相对应,主机—网络层(Host-to-Network Layer)与OSI数据链路层及物理层相对应。在TCP/IP参考模型中,对OSI表示层、会话层没有对应的协议,如下图所示。
               
               TCP/IP参考模型与OSI参考模型
               TCP/IP参考模型各层的功能如下。
               1)应用层
               应用层处在分层模型的最高层,用户调用应用程序来访问TCP/IP互联网络,以享受网络上提供的各种服务。应用程序负责发送和接收数据。每个应用程序可以选择所需要的传输服务类型,并把数据按照传输层的要求组织好,再向下层传送,包括独立的报文序列和连续字节流两种类型。
               2)传输层
               传输层的基本任务是提供应用程序之间(端到端)的通信服务。传输层既要系统地管理数据信息的流动,还要提供可靠的传输服务,以确保数据准确而有序地到达目的地。为了达到这个目的,传输层协议软件需要进行协商,让接收方回送确认信息及让发送方重发丢失的分组。在传输层与互联层之间传递的对象是传输层分组。
               3)互联层
               互联层也称网际层或IP层,主要处理机器之间的通信问题。它接收传输层的请求,传送某个具有目的地址信息的分组。
               4)主机—网络层
               主机—网络层也称网络接口层,处于TCP/IP协议层之下,负责接收IP数据报,并把数据报通过选定的网络发送出去。该层包含设备驱动程序,也可能是一个复杂的使用自己的数据链路协议的子系统。
               网络接口层协议
               TCP/IP协议只定义了网络接口层作为物理层与网络层的接口规范,不包含具体的物理层和数据链路层。这个物理层可以是广域网,如X.25公用数据网,也可以是局域网,如Ethernet、Token-Ring、FDDI等。任何物理网络只要按照这个接口规范开发网络接口驱动程序,都能够与TCP/IP协议集成起来。网络接口层处在TCP/IP协议的最底层,主要负责管理为物理网络准备数据所需的全部服务程序和功能。
               网际层协议
               网际层是整个TCP/IP协议簇的重点。网际层定义的协议有IP、ARP、RARP、ICMP。
               1)IP协议
               IP(Internet Protocol)所提供的服务通常被认为是无连接的和不可靠的。事实上,在网络性能良好的情况下,IP传送的数据能够完好无损地到达目的地。所谓无连接的传输,是指没有确定目标系统是否已做好接收数据准备之前就发送数据。与此相对应的就是面向连接的传输(如TCP),在该类传输中,源系统与目的系统在应用层数据开始传送之前需要进行三次握手建立连接。至于不可靠的服务是指目的系统不对成功接收的分组进行确认,IP只是尽可能地使数据传输成功。但是只要保证传输成功的需要,上层协议可以实现用于保证分组成功提供的附加服务。
               由于IP只提供无连接、不可靠的服务,所以把差错检测和流量控制之类的服务授权给了其他各层协议,这正是TCP/IP能够高效率工作的一个重要保证。
               IP协议的主要功能包括:将上层数据(如TCP、UDP数据)或同层的其他数据(如ICMP数据)封装到IP数据报中;将IP数据报传送到最终目的地;为了使数据能够在链路层上进行传输,对数据进行分段;确定数据报到达其他网络中的目的地的路径。
               IP协议软件的工作流程:当发送数据时,源计算机上的IP协议软件必须确定目的地是在同一个网络上,还是在另一个网络上。IP通过执行这两项计算并对结果进行比较,才能确定数据到达的目的地。如果两项计算的结果相同,则数据的目的地确定为本地网络,否则,目的地应为远程的其他网络。如果目的地在本地网络,那么IP协议软件就启动直接通信;如果目的地是远程计算机,那么IP必须通过网关(或路由器)进行通信,在大多数情况下,这个网关应当是默认网关。当源IP完成了数据报的准备工作时,它就将数据报传递给网络接口层,网络接口层再将数据报传送给传输介质,最终完成数据帧发往目的计算机的过程。
               当数据抵达目的计算机时,网络接口层首先接收该数据。网络接口层要检查数据帧有无错误,并将数据帧送往正确的物理地址。假如数据帧到达目的地时正确无误,网络接口层便从数据帧的其余部分中提取有效数据,然后将它一直传送到帧层次类型域指定的协议。在这种情况下,可以说数据有效负载已经传递给了IP。
               2)ARP和RARP协议
               地址解析协议(Address Resolution Protocol, ARP)及逆向地址解析协议(Reverse Address Resolution Protocol, RARP)是驻留在网际层中的另一个重要协议。ARP的作用是将IP地址转换为物理地址,RARP的作用是将物理地址转换为IP地址。
               3)ICMP协议
               Internet控制信息协议(Internet Control Message Protocol, ICMP)是网际层的另一个比较重要的协议。由于IP协议是一种尽力传送的通信协议,即传送的数据报可能丢失、重复、延迟或乱序传递,所以IP协议需要一种在发生差错时报告的机制。ICMP就是一个专门用于发送差错报文的协议。ICMP定义了5种差错报文(源抑制、超时、目的不可达、重定向、要求分段)和4种信息报文(回应请求、回应应答、地址屏蔽码请求、地址屏蔽码应答)。IP在需要发送一个差错报文时要使用ICMP,而ICMP也是利用IP来传送报文的。ICMP是让IP更加稳固、有效的一种协议,它使IP传送机制变得更加可靠。ICMP还可以用于测试网络,以得到一些有用的网络维护和排错的信息。例如,ping工具就是利用ICMP报文进行目标可达性测试。
               传输层协议
               1)TCP协议
               传输控制协议(Transmission Control Protocol, TCP)是整个TCP/IP协议簇中最重要的协议之一。它在IP协议提供的不可靠数据服务的基础上,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。TCP采用了重发技术来实现数据传输的可靠性。具体来说,就是在TCP传输过程中,发送方启动一个定时器,然后将数据包发出,当接收方收到了这个信息就给发送方一个确认信息。若发送方在定时器到点之前没收到这个确认信息,就重新发送这个数据包。
               在源主机想和目的主机通信时,目的主机必须同意,否则TCP连接无法建立。为了确保TCP连接的成功建立,TCP采用3次握手的方式,使源主机和目的主机之间达成同步。
               2)UDP协议
               用户数据报协议(User Datagram Protocol, UDP)是一种不可靠的、无连接的协议,也可以进行应用程序进程间的通信。与同样处在传输层的面向连接的TCP相比较,UDP是一种无连接的协议,它的错误检测功能要弱得多。可以这样说,TCP有助于提供可靠性,而UDP则有助于提高传输的高速率。一般来说,必须支持交互式会话的应用程序(如FTP等)往往使用TCP协议,而自己进行错误检测或不需要错误检测的应用程序(如DNS、SNMP等)则往往使用UDP。
               应用层协议
               应用层协议主要有以下7个。
               .虚拟终端协议Telnet,用于实现互联网中远程登录功能。
               .文件传输协议FTP,用于实现互联网中交互式文件传输功能。
               .简单邮件协议SMTP,用于实现互联网中电子邮件传送功能。
               .域名服务DNS,用于实现网络设备名字到IP地址映射的网络服务。
               .路由信息协议RIP,用于网络设备之间交换路由信息。
               .网络文件系统NFS,用于网络中不同主机间的文件共享。
               .超文本传输协议HTTP,用于WWW服务。
 
       栈
               栈的定义
               栈是只能在表的一端进行插入、删除的线性表。栈中允许插入、删除的一端称为栈顶,相反,栈中不允许插入、删除的一端称为栈底。处于栈顶位置的数据元素称为栈顶元素,不含任何数据元素的栈称为空栈。栈的特点为后进先出(Last In First Out, LIFO)。
               下图是一个栈的示意图,通常用指针top指示栈顶的位置,用指针bottom指向桟底。栈顶指针top动态反映栈的当前位置。
               
               栈的出入示意图
               栈的基本操作
               栈的基本操作主要有以下6种。
               .InitStack(&S):初始化操作,构造一个空栈S。
               .StackEmpty(S):若栈S为空栈,返回1,否则返回0。
               .Push(&S, e):插入元素e为新的栈顶元素。
               .Pop(&S,&e):删除S的栈顶元素,并用e返回其值。
               .GetTop(S,&e):用e返回S的栈顶元素。
               .ClearStack(&S):将S清为空栈。
               栈的顺序存储结构
               栈的顺序存储用向量作为栈的存储结构,向量S表示栈,m表示栈的大小,用指针top指向栈顶位置,S[top]表示栈顶元素,当在栈中进行插入、删除操作时,都要移动栈指针;而当top=m-1时,则栈满,当top=-1时,表示栈空。同时为了避免浪费空间可以采用双栈机制,即向量的两端为栈底。
               栈的顺序存储结构的C语言描述如下:
               
               栈的说明如下。
               .由于C语言的数组下标的范围从0至StackSize-1,初始化设置sq.top=-1。
               .栈空条件为sq.top=-1,栈满条件为sq.top=StackSize-1。
               .栈顶元素为sq.data[sq.top]。
               .元素压栈的规则为:在栈不满时,先改变栈顶指针(top=top+1),再压栈。出栈时,在桟非空时,先取栈顶元素的值,再修改栈顶指针(top=top-1)。
               .栈中元素的个数为当前栈顶指针加1。
               在顺序栈上实现基本操作的有关函数如下。
               1)初始化InitStack(SqStack *S)
               
               2)判空StackEmpty(SqStack S)
               
               3)压栈Push(SqStack *S, ElemType e)
               
               4)出栈Pop(SqStack *S, ElemType *e)
               
               5)取栈顶GetTop(SqStack *S, ElemType*e)
               
               6)清栈ClearStack(SqStack *S)
               
               栈的链式存储结构
               栈的链式存储也叫链栈,我们把插入和删除均在链表表头进行的链表称为链栈。链栈也分有头节点和无头节点两种。带头节点的链栈操作比较方便。
               链栈的节点类型定义如下:
               
               链栈的约定与说明如下。
               .栈以链表的形式出现,链表(不带头节点)首指针为S,即栈顶为S,链表尾节点为栈底。
               .初始化时,S=NULL(不带头节点);S=(LStack *),malloc(sizeof(LStack)),S→next=NULL(带头节点)。
               .栈顶指针的引用为S(不带头节点)或S→next(带头节点),栈顶元素的引用为S→data(不带头节点)或S→next→data(带头节点)。
               .栈空条件为S==NULL(不带头节点)或S→next=NULL(带头节点)。
               .进栈操作和出栈操作与单链表在开始节点的插入和删除操作一致。
               对不带头节点的链栈,其基本操作函数如下。
               1)初始化initstack(LStack *S)
               
               2)压栈(入栈)push(LStack *S, ElemType x)
               
               3)退栈(出栈)pop(LStack *S, ElemType *x)
               
               4)读栈顶元素gettop(LStack *S, ElemType *x)
               
               5)判栈空isempty(LStack *S)
               
               栈的应用
               栈具有广泛的应用,例如,求表达式的值及递归到非递归等。
               1)表达式求值
               在源程序编译中,若要把一个含有表达式的赋值语句翻译成正确求值的机器语言,首先应正确地解释表达式。例如,对赋值语句X=4+8×2-3;,其正确的计算结果应该是17,但若在编译程序中简单地按自左向右扫描的原则进行计算,则为:X=12×2-3=24-3=21。这个结果显然是错误的。因此,为了使编译程序能够正确地求值,必须事先规定求值的顺序和规则。通常采用运算符优先法。
               2)递归到非递归
               将一个递归算法转换为功能等价的非递归算法有很多方法,可以使用栈保存中间结果。其一般形式如下:
               
               例如,求n!的递归函数如下:
               
               使用转换成等价的非递归算法如下:
               
               其中,st[top][0]用于存放n值,st[top][1]用于存放n!值,在初始时,设置st[top][1]为0,表不n!尚未求出。
 
       AR
        (1)AR的定义。增强现实技术(Augmented Reality,AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。这种技术1990年提出。随着随身电子产品CPU运算能力的提升,预期增强现实的用途将会越来越广。
        (2)AR的特点。
        ①真实世界和虚拟世界的信息集成;
        ②具有实时交互性;
        ③是在三维尺度空间中增添定位虚拟物体。
        (3)AR的营销价值。
        ①虚实结合,震撼体验。借助AR的虚实交互体验,增强产品发布会的趣味性和互动性。另外借助AR技术,可以展示模拟现实条件无法表现的细节和创意,使消费者更直观形象地感知产品,提升对企业品牌形象的理解,尤其适用于工艺复杂、技术含量高、价值相对较高的产品。
        ②体验营销。AR技术实现品牌和消费者零距离接触,在游戏或互动中潜移默化地传达产品内容、活动及促销信息,加深消费者对品牌的认可和了解。AR技术借助手机摄像头可以生动地再现产品使用场景,增强用户的购物体验,解决电子商务当下无法试用、试穿的瓶颈,给我们生活带来极大地便利和乐趣。
        ③与微博、SNS等社交媒体整合。利用AR技术与微博、SNS等社交媒体的融合打通,实现从体验营销到自营销,最终形成消费者对产品和品牌的信任和钟爱,满足了消费者购买咨询、体验和分享的需求,促成消费者形成良好的口碑并促进购买。
 
       ARP
        ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP。主机发送信息时会将包含目标IP地址的ARP请求广播到网络中的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。ARP是建立在网络中各个主机互相信任的基础上的,网络中的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性,会直接将其记入本机ARP缓存;因此,攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替ARP。
 
       ARP协议
        ARP(Address Resolution Protocol)的功能是通过目标主机的IP地址,查询目标主机的MAC地址,实现了IP地址MAC地址的映射,保证通信的顺利进行。
        ARP协议使用一种询问/回答机制。如果主机H1要发送一个IP数据报给主机H4,但它只知道H4的IP地址P4,而不知道它的MAC地址。则按照下图所示的过程发送数据报。
        
        TCP连接建立与释放
        (1)H1构造好IP数据报后,由于它不知道发放哪个MAC地址,还不能将其交给网卡处理。这时H1先构造一个ARP请求数据报,该数据报中包含了H4的IP地址P4,并留下一个空位表示H4的MAC地址。H1的ARP将该数据报交给网卡,让它将该数据报作为广播帧发送出去。
        (2)网络中的所有网卡收到该广播帧后将帧中的数据取出交给上层ARP处理。
        (3)ARP协议在收到这个请求数据报后将自己的IP地址与数据报中的IP地址进行比较,如果相同就表示对方在询问自己的MAC地址。如果发现不是询问自己的MAC地址,ARP协议会丢弃该数据报。
        (4)只有H4会处理这个ARP请求数据报。这时H4将自己的MAC地址填在MAC地址空位上,并将该数据报改为ARP响应数据报。由于H1在发送的请求数据报中填写了自己的MAC地址和IP地址,因此H4让网卡将ARP响应数据报以单播方式发送给主机H1。
        对于不在同一以太网的通信,该过程略有不同。例如,H1要与HB通信,H1知道自己与HB不在同一网络中,需要通过路由器将数据报发送给HB,因此H1将IP数据报发送给路由器RT。RT将数据报转发给HB时,如果它不知道HB的MAC地址,它也会使用ARP进行询问。
        如果每次发送一个IP数据报都需要进行一次ARP请求数据报的广播,那么发送一个IP数据报的代价是很高的。因此,通常在系统中维持一个ARP缓存,来减少地址解析所需的通信。
 
       RARP协议
        RARP(Reverse Address Resolution Protocol,反向地址解析协议)的作用是将MAC地址转换为IP地址。某些主机(通常是无盘工作站)只知道自己的MAC地址,但有时候需要知道其IP地址,这就需要RARP。为了使RARP正常工作,在局域网中至少有一台主机充当RARP服务器,并且要在RARP服务器中建立好MAC地址与IP地址的映射表。
 
       TCP
        TCP是面向连接的通信协议,通过三次握手建立连接,通信完成时要拆除连接,由于TCP是面向连接的,所以只能用于端到端的通信。
        TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口,实际表示接收能力,用以限制发送方的发送速度。
        如果IP数据包中有已经封装好的TCP数据包,那么IP将把它们向“上”传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路之间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包则可以被重传。
        TCP将它的信息发送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层、设备驱动程序和物理介质,最后传送到接收方。
        面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
 
       TCP/IP
        由于OSI协议的实现较为复杂,运行效率低,很少有厂商推出符合OSI标准的商用产品。目前,互联网上广泛使用的是TCP/IP。TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网络协议)是Internet上不同子网之间的主机进行数据交换所遵守的网络通信协议。TCP/IP一般泛指所有与Internet有关的一系列网络协议的总称,其中TCP和IP是其中最重要的两个协议。TCP/IP体系结构主要由四层构成,分别为网络接口层、网络层、传输层和应用层。
        TCP/IP采用的四层体系结构与OSI参考模型采用的七层体系结构是对应的,它们的结构对比如下图所示。
        
        TCP/IP与OSI体系结构的对比
               网络接口层
               网络接口层也称链路层(Link Layer)或数据链路层,相当于OSI/RM参考模型的第1层和第2层,负责与网络中的传输介质打交道。常用的链路层技术主要有以太网(Ethernet)、令牌环(Token Ring)、光纤数据分布接口(FDDI)、X.25、帧中继(Frame Relay)、ATM等。
               网络层
               网络层的作用是将数据包从源主机发送出去,并且使这些数据包独立地到达目标主机。数据包传送过程中,到达目标主机的顺序可能不同于它们被发送时的顺序。因为网络情况复杂,随时可能有一些路径发生故障或是网络中的某处出现数据包的堵塞。网络层提供的服务是不可靠的,可靠性由传输层实现。
               传输层
               传输层提供应用程序之间的通信。传输层提供了可靠的传输协议TCP和不可靠的传输协议UDP。TCP是一个可靠的、面向连接的协议,允许在因特网上的两台主机之间进行信息的无差错传输。在网络传输过程中,为了保证数据在网络中传输的正确、有序,要使用“连接”的概念,一个TCP连接是指在传输数据前先要传送三次握手信号,以使双方为数据的传送做准备。UDP是用户数据报协议,使用此协议时,源主机一有数据就发送出去,不管发送的数据包是否能到达目标主机、数据包是否会出错,收到数据包的主机都不会通知发送方其是否正确地收到了数据,因此UDP是一种不可靠的传输协议。
               应用层
               应用层直接为用户的应用进程提供服务,如支持万维网应用的HTTP,支持电子邮件的SMTP,支持文件传送的FTP等。
   题号导航      2014年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第69题    在手机中做本题