TCP/IP协议详解卷一:Chapter26-30 笔记

TCP/IP协议详解卷一:Chapter26-30 笔记

  • Chapter 26 Telnet和Rlogin:远程登录
  • Chapter 27 FTP:文件传送协议
    • 27.2 FTP协议
  • Chapter 28 SMTP:简单邮件传送协议
    • 28.2 SMTP协议
  • Chapter 29 网络文件系统
    • 29.2 Sun远程过程调用
    • 29.5 NFS协议
  • Chapter 30 其他的TCP/IP应用程序

Chapter 26 Telnet和Rlogin:远程登录

在TCP/IP网络上,有两种应用提供远程登录功能。

  1. Telnet是标准的提供远程登录功能的应用,几乎每个TCP/IP的实现都提供这个功能。它能够运行在不同操作系统的主机之间。Telnet通过客户进程和服务器进程之间的选项协商机制,从而确定通信双方可以提供的功能特性。
  2. Rlogin起源于伯克利Unix,开始它只能工作在Unix系统之间,现在已经可以在其他操作系统上运行。

远程登录采用客户-服务器模式。下图显示的是一个Telnet客户和服务器的典型连接图。
TCP/IP协议详解卷一:Chapter26-30 笔记_第1张图片
图中有以下要点需要注意:

  1. Telnet客户进程同时和终端用户和TCP/IP协议模块进行交互。通常我们所键入的任何信息的传输是通过TCP连接,连接的任何返回信息都输出到终端上。
  2. Telnet服务器进程经常要和一种叫做伪终端设备(pseudo-terminal device)打交道,至少在Unix系统下是这样的。这就使得对于登录外壳(shell)进程来讲,它是被Telnet服务器进程直接调用的,而且任何运行在登录外壳进程处的程序都感觉是直接和一个终端进行交互。
  3. 仅仅使用了一条TCP连接。由于客户进程必须多次和服务器进程进行通信(反之亦然),这就必然需要某些方法,来描绘在连接上传输的命令和用户数据。
  4. 图中用虚线框把终端驱动进程和伪终端驱动进程框了起来。在TCP/IP实现中,虚线框的内容一般是操作系统内核的一部分。Telnet客户进程和服务器进程一般只是属于用户应用程序。
  5. 把服务器进程的登录外壳进程画出来是为了说明:当我们想登录到系统的时候,必须要有一个帐号,Telnet和Rlogin都是如此。

下面的表格概括并比较了Rlogin和Telnet的不同特性。
TCP/IP协议详解卷一:Chapter26-30 笔记_第2张图片

Chapter 27 FTP:文件传送协议

FTP是用于文件传输的Internet标准。我们必须分清文件传送(file transfer)和文件存取(file access)之间的区别,前者是FTP提供的,后者是如NFS(Sun的网络文件系统)等应用系统提供的。由FTP提供的文件传送是将一个完整的文件从一个系统复制到另一个系统中。使用FTP需要有登录服务器的注册帐号,或者通过允许匿名FTP的服务器来使用。

与Telnet类似,FTP最早的设计是用于两台不同的主机,这两个主机可能运行在不同的操作系统下、使用不同的文件结构、并可能使用不同字符集。但不同的是,Telnet获得异构性是强制两端都采用同一个标准:使用7比特ASCII码的NVT。而FTP是采用另一种方法来处理不同系统间的差异。FTP支持有限数量的文件类型(ASCII,二进制,等等)和文件结构(面向字节流或记录)。

27.2 FTP协议

FTP采用两个TCP连接来传输一个文件。

  1. 控制连接以通常的客户服务器方式建立。服务器以被动方式打开FTP的知名端口(21),等待客户的连接。客户则以主动方式打开TCP端口21,来建立连接。控制连接始终等待客户与服务器之间的通信。该连接将命令从客户传给服务器,并传回服务器的应答。
    由于命令通常是由用户键入的,所以IP对控制连接的服务类型就是“最大限度地减小迟延”。
  2. 每当一个文件在客户与服务器之间传输时,就创建一个数据连接。
    由于该连接用于传输目的,所以IP对数据连接的服务特点就是“最大限度提高吞吐量”。

下图描述了客户与服务器以及它们之间的连接情况。
TCP/IP协议详解卷一:Chapter26-30 笔记_第3张图片从图中可以看出,交互式用户通常不处理在控制连接中转换的命令和应答。这些细节均由两个协议解释器来完成。正是这两个协议解释器根据需要激活文件传送功能。

FTP使用NVT ASCII码做跨越控制连接的所有远程登录命令和应答。数据传输的默认方式通常也是NVT ASCII码。较新的Unix客户进程会自动发送命令来查看服务器是否是8 bit字节的Unix主机,并且如果是,那么就使用二进制方式来传输所有文件,那将带来更高的效率。

Chapter 28 SMTP:简单邮件传送协议

下图显示了一个用TCP/IP交换电子邮件的示意图。
TCP/IP协议详解卷一:Chapter26-30 笔记_第4张图片用户与用户代理(user agent)打交道,可能会有多个用户代理可供选择。常用的Unix上的用户代理包括MH,Berkeley Mail, Elm和Mush。用TCP进行的邮件交换是由报文传送代理(Message Transfer Agent, MTA)完成的。用户通常不和MTA打交道,由系统管理员负责设置本地的MTA。通常,用户可以选择它们自己的用户代理。

本章研究在两个MTA之间如何用TCP交换邮件。我们不考虑用户代理的运行或实现。RFC 821 [Postel 1982] 规范了SMTP协议,指定了在一个简单TCP连接上,两个MTA如何进行通信。

28.2 SMTP协议

两个MTA之间用NVT ASCII进行通信。客户向服务器发出命令,服务器用数字应答码和可选的人可读字符串进行响应。客户只能向服务器发送很少的命令:不到12个(相比较而言, FTP超过40个)。

SMTP命令
最小SMTP实现支持8种命令。

  • HELO,MAIL,RCPT,DATA和QUIT用于发送邮件。
  • RSET命令异常中止当前的邮件事务并使两端复位。丢掉所有有关发送方、接收方或邮件的存储信息。
  • VRFY命令使客户能够询问发送方以验证接收方地址,而无需向接收方发送邮件。通常是系统管理员在查找邮件交付差错时手工使用的。
  • NOOP命令除了强迫服务器响应一个OK应答码(200)外,不做任何事情。

还有附加和可选命令。

  • EXPN扩充邮件表,与VRFY类似,通常是由系统管理员使用的。
  • TURN命令使客户和服务器交换角色,无需拆除TCP连接并建立新的连接就能以相反方向发送邮件(Sendmail不支持这个命令)。
  • 还有三个很少被实现的命令( SEND、SOML和SAML)取代MAIL命令。这三个命令允许邮件直接发送到客户终端(如果已注册)或发送到接收方的邮箱。

信封、首部和正文
电子邮件由三部分组成:

  1. 信封(envelope)是MTA用来交付的。在我们的例子中信封由两个SMTP命令指明:
MAIL From: <[email protected]>
RCPT To: <[email protected]>
  1. 首部由用户代理使用。在我们的例子中可以看到9个首部字段: Received、Message-Id、From、Data、Reply-To、X-Phone、X-Mailer、To和Subject。每个首部字段都包含一个名,紧跟一个冒号,接着是字段值。
  2. 正文(body)是发送用户发给接收用户报文的内容。RFC 822 指定正文为NVT ASCII文字行。当用DATA命令发送时,先发送首部,紧跟一个空行,然后是正文。用DATA命令发送的各行都必须小于1000字节。

用户接收正文的部分,加上一些首部字段,并把结果传到MTA。MTA加上一些首部字段,加上信封,并把结果发送到另一个MTA。

中继代理
在28.2.1节的例子中,本地MTA的信息输出的第1行是:“Connecting to mailhost via ether”(即通过以太网连接到邮件主机)。这是因为作者的系统已被配置成把所有非本地的向外的邮件发送到一台中继机上进行转发。
这样做的原因有两个。首先,简化了除中继系统MTA外的其他所有MTA的配置(配置一个MTA并不简单)。第二,它允许某个机构中的一个系统作为邮件集线器,从而可能把其他所有系统隐藏起来。

NVT ASCII
SMTP的一个特色是它用NVT ASCII表示一切:信封、首部和正文。正如在26.4节中提到的,这是一个7 bit的字符码,以8 bit字节发送,高位比特被置为0。

重试间隔
当用户把一个新的邮件报文传给它的MTA时,通常立即试图交付。如果交付失败, MTA必须把该报文放入队列中以后再重试。Host Requirements RFC推荐初始时间间隔至少为30分钟。发送方至少4~5天内不能放弃。

Chapter 29 网络文件系统

网络文件系统(Network File System, NFS),它为客户程序提供透明的文件访问。NFS的基础是Sun RPC:远程过程调用Remote Procedure Call)。客户程序使用NFS不需要做什么特别的工作,当NFS内核检测到被访问的文件位于一个NFS服务器时,就会自动产生一个访问该文件的RPC调用。

29.2 Sun远程过程调用

一般来说,客户发送命令给服务器,服务器向客户发送应答。目前为止,我们讨论过的所有应用程序——Ping,Traceroute,选路守护程序、以及DNS、TFTP、BOOTP、SNMP、Telnet、FTP和SMTP的客户和服务器—都是采用这种方式实现的。

远程过程调用RPC是一种不同的网络程序设计方法。客户程序编写时只是调用了服务器程序提供的函数。这只是程序员所感觉到的,实际上发生了下面一些动作:

  1. 当客户程序调用远程的过程时,它实际上只是调用了一个位于本机上的、由RPC程序包生成的函数。这个函数被称为客户残桩(stub)。客户残桩将过程的参数封装成一个网络报文,并且将这个报文发送给服务器程序。
  2. 服务器主机上的一个服务器残桩负责接收这个网络报文。它从网络报文中提取参数,然后调用应用程序员编写的服务器过程。
  3. 当服务器函数返回时,它返回到服务器残桩。服务器残桩提取返回值,把返回值封装成一个网络报文,然后将报文发送给客户残桩。
  4. 客户残桩从接收到的网络报文中取出返回值,将其返回给客户程序。

网络程序设计是通过残桩和使用诸如插口或TLI的某个API的RPC库例程来实现的,但是用户程序——客户程序和被客户程序调用的服务器过程——不会和这个API打交道。客户应用程序只是调用服务器的过程,所有网络程序设计的细节都被RPC程序包、客户残桩和服务器残桩所隐藏。

一个RPC程序包提供了很多好处:

  1. 程序设计更加容易,因为很少或几乎没有涉及网络编程。应用程序设计员只需要编写一个客户程序和客户程序调用的服务器过程。
  2. 如果使用了一个不可靠的协议,如UDP,像超时和重传等细节就由RPC程序包来处理。这就简化了用户应用程序。
  3. RPC库为参数和返回值的传输提供任何需要的数据转换。例如,如果参数是由整数和浮点数组成的, RPC程序包处理整数和浮点数在客户机和服务器主机上存储的不同形式。这个功能简化了在异构环境中的客户和服务器的编码问题。

29.5 NFS协议

使用NFS,客户可以透明地访问服务器上的文件和文件系统。这不同于提供文件传输的FTP。FTP会产生文件一个完整的副本。NFS只访问一个进程引用文件的那一部分,并且NFS的一个目的就是使得这种访问透明。

NFS是一个使用Sun RPC构造的客户服务器应用程序。NFS客户通过向一个NFS服务器发送RPC请求来访问其上的文件。访问一个NFS文件必须对客户透明。因此, NFS的客户调用是由客户操作系统代表用户进程来完成的。出于效率的考虑, NFS服务器在服务器操作系统中实现。下图显示了一个NFS客户和一个NFS服务器的典型配置。
TCP/IP协议详解卷一:Chapter26-30 笔记_第5张图片
文件句柄
NFS中一个基本概念是文件句柄(file handle)。它是一个不透明(opaque)的对象,用来引用服务器上的一个文件或目录。不透明指的是服务器创建文件句柄,把它传递给客户,然后客户访问文件时,使用对应的文件句柄。客户不会查看文件句柄的内容——它的内容只对服务器有意义。每次一个客户进程打开一个实际上位于一个NFS服务器上的文件时, NFS客户就会从NFS服务器那里获得该文件的一个文件句柄。每次NFS客户为用户进程读或写文件时,文件句柄就会传给服务器以指定被访问的文件。

安装协议
客户必须在访问服务器上一个文件系统中的文件之前,使用安装协议安装那个文件系统。一般情况下,这是在客户主机引导时完成的。最后的结果就是客户获得服务器文件系统的一个文件句柄。

NFS过程
NFS服务器提供的15个过程:

  • GETATTR
  • SETATTR
  • STATFS
  • LOOKUP
  • READ
  • WRITE
  • CREATE
  • REMOVE
  • RENAME
  • LINK
  • SYMLINK
  • READLINK
  • MKDIR
  • RMDIR
  • READDIR

这些过程都有一个前缀NFSPROC_。

NFS最初是用UDP写的,所有的厂商都提供了这种实现。最新的一些实现也支持TCP。TCP支持主要用于广域网,它可以使文件操作更快。NFS已经不再局限于局域网的使用。

Chapter 30 其他的TCP/IP应用程序

其他常见的TCP/IP应用程序包括:

  • Finger协议:返回一个指定主机上一个或多个用户的信息。它常被用来检查某个人是否登录了,或者搞清一个人的登录名以便给他发送邮件。
  • Whois协议:一种信息服务。
  • Archie:提供了Internet上几千个FTP服务器的目录。
  • WAIS(Wide Area Information Servers,广域信息服务系统):知道几百个包含了有关计算机主题的和其他一般性主题信息的数据库。
  • Gopher:其他Internet资源服务如Archie、WAIS和匿名FTP的一个菜单驱动的前端程序。
  • Veronica:一个Gopher标题的索引。
  • 万维网WWW
  • X窗口系统(X Window System):简称为X,是一种客户-服务器应用程序。它可以使得多个客户(应用)使用由一个服务器管理的位映射显示器。服务器是一个软件,用来管理显示器、键盘和鼠标。客户是一个应用程序,它与服务器在同一台主机上或者在不同的主机上。

你可能感兴趣的:(读书笔记)