首页 理论教育计算机网络技术及应用:TCP/IP其他层的协议

计算机网络技术及应用:TCP/IP其他层的协议

【摘要】:TCP/IP协议设计人员采用一种创造性的方法,解决了诸如以太网这样具有广播能力物理网络的地址转换问题。ARP表放在内存储器ARP高速缓存中,其中的登录项是在第一次需要使用而进行查询时通过ARP协议自动填写的。ICMP也是在网络层中与IP一起使用的协议。ICMP的使用主要包括以下3种情形。

1.ARP协议

在TCP/IP体系结构中,除了IP地址这一重要的概念之外,还有另外一个重要的地址概念,即硬件地址MAC。IP地址与MAC地址的区别在于IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。网络层及其以上层次使用的是IP地址,而链路层以下使用的是硬件地址。

ARP(Address Resolution Protocol)称为地址解析协议,它与IP配套使用,其功能是将一个目的地IP地址映射到待求的物理网卡地址上。

由于IP地址有32位,而局域网的MAC地址是48位,因此它们之间不存在简单的转换关系。此外,在一个网络上可能经常会有新的主机加入进来,或者撤走一些主机,更换网卡也会使主机的硬件地址改变,而任何IP数据报又必须经过物理网络(如以太网)传送。于是就提出这样一个问题:假设计算机A要通过物理网络向计算机B发送一个IP分组,A只知道B的IP地址,如何把这个IP地址变成B的物理地址MAC呢?TCP/IP协议设计人员采用一种创造性的方法,解决了诸如以太网这样具有广播能力物理网络的地址转换问题。为了避免依赖一个映射表,选择了一种低层协议动态地映射地址,这就是所谓的地址解析协议ARP。使用ARP协议的每台主机都要维护一个IP地址到MAC的转换表,称ARP表。进行通信时,通过查ARP表,实现从IP地址到物理地址的变换。ARP表放在内存储器ARP高速缓存中,其中的登录项是在第一次需要使用而进行查询时通过ARP协议自动填写的。

当主机A欲向本局域网上的某个主机B发送IP数据报时,就先查看ARP表,如果有主机B的IP地址,就可以直接查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将MAC帧发往此硬件地址。如果IP模块在ARP表中找不到主机B的IP地址的登录项,而任何IP数据报又必须经过物理网络(如以太网)传送,在这种情况下,主机A就自动运行ARP,然后按以下步骤找出主机B的硬件地址。

(1)如果IP模块在ARP表中找不到主机B的IP地址的登录项,源主机A的ARP就使用广播以太网地址发一个ARP请求分组给网上每一台计算机(内含目的主机B的IP地址)。

(2)收到广播的每个ARP模块检查请求分组中的目标IP地址,当该地址和自己的IP地址相同时,目的主机B就向源主机A发送一个ARP响应分组,附上自己的硬件地址。

(3)源主机A收到目的主机B的ARP响应分组后,就在ARP高速缓存中写入目的主机B的IP地址到硬件地址的映射表中。

已知主机IP地址、主机MAC地址和服务器IP地址,需要请求服务器MAC地址,ARP的工作原理如图2-19所示。

图2-19 ARP的工作原理

使用ARP协议,一是不必预先知道连接到网络上的主机或网关的物理地址就能发送数据;二是当物理地址和IP地址的关系随时间的推移发生变化时,能及时给予修正。一般情况下,两个主机之间相互通信的情况是存在的,为了减少网络上的通信量,源主机A在发送到ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组中。收到广播的目的主机B一方面向源主机A发送一个ARP响应分组,附上自己的硬件地址,同时目的主机B也将源主机A的这一地址映射写入自己的ARP高速缓存中。这就为主机B以后向主机A发送数据报提供了方便。

2.RARP协议

RARP(Reverse Address Resolution Protocol)是反向地址解析协议。RARP协议可以实现MAC地址到IP地址的转换。反向地址解析协议RARP广泛用于获取无盘工作站的IP地址。

通常,一台计算机的IP地址保存在其外存储器(一般是磁盘)中,操作系统在启动时从这里找出这个地址。那么,无盘工作站如何确定自己的IP地址呢?反向地址解析协议RARP就是为这一目标而设计的。

(1)RARP允许在网上站点广播一个RARP请求分组(其格式与ARP数据报类似),无盘工作站将自己的硬件地址同时填写在发送方硬件地址段和目标硬件地址段中。

(2)网上的所有机器收到这一请求,但只有那些被授权提供RARP服务的计算机才处理这个请求,并且发送一个回答,称这样的计算机为RARP服务器(为了运行无盘工作站,在每个以太网上必须有一个RARP服务器,广播帧是不能通过IP路由器转发的。RARP服务器上存放有一张事先做好的无盘工作站硬件地址和IP地址的映射表)。当RARP服务器收到RARP请求后,它就从此映射表中查找该无盘工作站的IP地址,然后写入RARP响应分组,并且将响应分组直接发送给请求的机器。

(3)请求的机器从所有的RARP服务器接收回答,尽管只需要一个回答就够了,从而获得自己的IP地址。

这一切都只在系统初启动时发生,RARP此后不再运行,除非该无盘设备重新设置或者重新启动。

3.ICMP协议

ICMP(Internet Control Message Protocol)是互联网控制报文协议。如果一个网关不能为IP分组选择路由,或者不能递交IP分组,或者这个网关测试到某种不正常状态,如网络拥挤影响IP分组的传递,那么就需要使用ICMP协议来通知源发主机采取措施,避免或纠正这类问题。因此,ICMP协议提供的服务有:测试目的地的可达性和状态、报告报文不可达的目的地、数据报的流量控制、路由器路由改变请求等。

ICMP也是在网络层中与IP一起使用的协议。ICMP是封装在IP数据报中传输的,通常由某个监测到IP分组中错误的站点产生。从技术上说,ICMP是一个差错报告机制,当发现数据报有错时,将ICMP报文置入IP数据报内,只向该数据报的原始报源发送差错报告,由源站点执行纠错。例如,如果IP分组无法到达目的地,那么就可能使用ICMP警告分组的发送方:网络、机器或端口不可到达。ICMP也能通知发送方网络出现拥挤。

ICMP的使用主要包括以下3种情形。

(1)IP分组不能到达目的地。

(2)在接收设备接收IP分组时,缓冲区大小不够。

(3)网关或目标主机通知发送方主机,应该选用较短的路径(如果这种路径确实存在)。

提示

ICMP数据报和IP分组一样,同样不能保证可靠传输,ICMP信息也可能丢失。为了防止ICMP信息无限地连续发送,对ICMP数据报传输的问题不能再使用ICMP传达。另外,对于被划分成报片的IP分组而言,只对偏置等于0的分组片(也就是第1个分 组片)才能使用ICMP协议。

ICMP报文需要如图2-20所示的两级封装。每个ICMP报文都在IP分组的数据段中通过互联网传输,而IP分组本身又在帧的数据段中穿过每个物理网。

图2-20 ICMP的两级封装

为标识ICMP,在IP分组协议段中包含的值是1。重要的是,尽管ICMP报文使用IP协议封装在IP分组中传送,但ICMP不被看成是高层协议的内容,它只是IP中要求的一部分。之所以使用IP递交ICMP报文,是因为这些报文可能要跨过几个物理网络才能够到达最终报宿。因此,ICMP报文不能依靠单个物理网络来递交。

ICMP报文有两种:一种是错误报文,另一种是查询报文。每个ICMP报文的开头都包含3个段:1字节的类型段、1字节的编码段和2字节的检验和段。8位的类型段标识报文,表示13种不同的ICMP报文中的一种。8位编码段提供关于一个类型的更多信息。16位的检验和的算法与IP头的检验和算法相同,但检查范围限于ICMP报文结构。

表2-5给出了ICMP 8位类型段定义的13种报文的名称,每一种都有自己的ICMP头部格式。如图2-21所示为回送请求和回送应答报文的格式范例。(www.chuimin.cn)

回送请求报文(类型=8)用来测试发送方通过互联网到达接收方的通信路径。在许多主机上,这个功能叫作“ping”。发送方发送一个回送请求报文,里面包含一个16位的标识符及一个16位的序列号,也可以将数据放在报文中传输。当目的地机器收到该报文时,把源地址和目的地址倒过来,重新计算检验和,并传回一个回送应答(类型=0)报文,数据段中的内容(如果有的话)也要返回给发送方。

表2-5 ICMP报文类型

图2-21 回送请求和回送应答报文

4.Telnet协议

远程登录是互联网提供的一个服务。远程登录就是用户通过网络登录到远程计算机系统中,使用远程计算机系统的资源。远程登录的根本目的在于访问远程系统的资源。Telnet(Telephone Network)是一个简单的远程终端协议。用户用Telnet就可在其本地通过TCP连接登录到远程的另一个主机上(使用主机名或IP地址)。Telnet能把用户的击键传输到远程主机,同时也能把远程主机的输出通过TCP连接返回到用户屏幕。这种服务是透明的,用户感觉好像键盘和显示器是直接连在远程主机上的。

Telnet也使用客户/服务器模式。当用户使用Telnet登录到远程计算机时,事实上启动了两个程序:一个叫作Telnet客户程序,它运行在本地机上;另一个叫作Telnet服务器程序,它运行在远程计算机上。本地机上客户程序完成如下功能。

(1)建立与服务器的TCP连接。

(2)将本地终端上的键盘输入传送到远程系统。

(3)从远程系统接收输出的信息,并把该信息显示在本地终端屏幕上。

Telnet服务器程序完成如下功能。

(1)通知本地机远程计算机系统已经准备好了。

(2)等候用户输入命令,并对用户命令做出反应(如显示目录内容或执行某个程序等)。

(3)远程系统将结果送回本地终端。

由此可知,远程登录过程分为3个步骤:Telnet允许某台机器上的用户与远程计算机上的登录服务器建立TCP连接;然后通过该连接将用户键入的命令直接传送到远程计算机上;远程计算机执行命令,并将结果返回到用户机器的屏幕上。

在以上过程中,输入/输出均对远程系统内核透明,远程登录服务本身对用户也是透明的,用户好像直接连入了远程系统中。这种透明性是Telnet的重要特点,也是Telnet内部机制的重要部分。

Telnet协议实现了如下三大功能。

(1)它定义了一个网络虚拟终端协议,为远程系统提供一个标准终端接口

(2)Telnet允许客户进程与登录服务器进行选项协商,并且Telnet协议还提供一组标准选项。

(3)Telnet对称处理连接的两端。

应用层的许多其他服务一样,远程登录也采用客户/服务器方式。远程登录的工作过程如图2-22所示。首先,本地机器上的Telnet客户程序与远程登录服务器建立TCP连接;然后,客户程序将从用户终端接收键盘输入命令,并将其通过TCP传送给Telnet服务器,同时它会接收服务器返回的字符数据,并通过本地操作系统将它显示在用户终端上。

图2-22 远程登录的工作过程

5.FTP协议

FTP(File Transfer Protocol)是文件传输协议。FTP是Internet上最早出现的服务功能之一,到目前为止,它仍然是Internet上最常用的也是最重要的服务之一。文件传输协议FTP是一个通用协议,用于主机间传送文件,主机类型可以相同,也可以不同;可以传送不同类型的文件,如计算机软件、声音文件、图像文件等。

FTP采用的是客户机/服务器模型。当用户启动FTP进行文件传输时,事实上启动了两个程序:一个是本地机上的FTP客户程序,它向FTP服务器提出下载文件的请求;另一个是远程计算机上的FTP服务器程序,它响应用户的请求,把用户指定的文件下载到用户的计算机上。客户机与服务器之间建立两条TCP连接;一条用于传送控制信息,一条用于传送文件内容。FTP的控制连接使用了Telnet协议,主要用于利用Telnet提供的简单身份认证系统,供远程系统鉴别FTP用户的合法性。

FTP是一种功能很强的协议,除了从服务器和客户机传送文件外,还可以进行第三方传送。这时客户机必须分别开通两个主机(比如A和B)之间的控制连接。如果客户机获准从A机传送出文件,并向B机传入文件,则A服务器程序就建立一条到B服务器程序的数据连接。客户机保持文件传送的控制权,但不参与数据传送。

6.SMTP协议

SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议。当邮件传输程序与远程服务器通信时,它构造了一个TCP连接并在此上面进行通信。一旦连接存在,这两个程序就遵循简单邮件传输协议,它允许发送方说明自己、指定接收方及传输电子函件信息。

尽管邮件传输看起来很简单,但SMTP协议仍需处理许多细节。例如,SMTP要求可靠的传递——发送方必须保存一个信息的副本直到接收方将一个副本放至不易丢失的存储器(如磁盘)上。另外,SMTP允许发送方询问一个给定的邮箱在服务器所在的计算机上是否存在。

SMTP的最大特点就是简单。SMTP只定义了邮件如何在邮件传输系统中通过发送方和接收方之间的TCP连接进行传输,但它没有规定邮件服务器与用户之间的接口以及邮件的存储、邮件系统多长时间发送一次邮件等操作。