TCP/IP是什么?

翻译:Click

TCP/IP是一组通过网络在计算机之间共享资源的协议.它是在ARPANet的基础上 由一些研究团体发展起来的.当然ARPANet是最著名的TCP/IP网络.到了87年6月底 ,至少有130多不同的厂家推出了支持TCP/IP的产品,并且有数以千计的不同的网络 使用它.

首先是一些基本的定义.对这一组协议最精确的描述是"Internet协议组". TCP和IP是这一组中的两个协议(它们将在下面说明).因为TCP和IP是这些协议中 最著名的协议,因此我们通常用TCP/IP或IP/TCP来指代整个协议组.这只是为了 不和习惯相冲突.但是有时这会令人感到困惑.例如,我发现我自己说NFS是基于 TCP/IP的,但实际上它并不用TCP.(NFS确实使用IP,但它用另外一个协议UDP,而 不是TCP.关于这些名词的说明将在下面给出)

Internet是各种网络的集合,包括ARPANet,NSFNet,象NYsernet之类的区域网, 大学和研究机构中的局域网以及一些军用网.Internet用来指代这整个网络. 而DDN(Defence Data Network)则是指由美国国防部管理的那部份.DDN包括一 些以研究为主的网络,如ARPANet,和一些纯军事的网络.(由于Internet的许多 协议开发的资金是通过DDN得到的,因此我们可以认为Internet和DDN有时是等价 的.)Internet的每个部分都是相互连接的.使用者可以从一个部分向另一部分发 消息,除非有机密或其他限制.正式的说,因特网协议文挡只是因特网组织为了他 自己的使用而采用的简单的标准。最近,美国国防部发布了一个TCP/IP的 MILSPEC定义。这是一个比较正规的定义,用于采购说明书。然而大多数的 TCP/IP组织依旧使用因特网标准.MILSPEC版本基本上和他一致.

正如它的名字所示,TCP/IP是一组协议.一些低层的服务函数提供给了应用程 序.这包括IP,TCP以及UDP.(在下面我们将讲的更详细.)其他的协议完成特定的任 务,例如,计算机间文件的传输,发送邮件和列出登陆在别的计算机上的用户.最初 TCP/IP主要是用在微机间或主机间.这些机器有它们自己的磁盘,而且一般是设备 齐全的.因此一般最主要的TCP/IP服务有:

  • 文件传输.文件传输协议(FTP)允许一台计算机上的用户从另一台计算机上取得 文件,或向另一台计算机传送文件.出于安全性考虑,用户需向另一台计算机提供 用户名及口令.服务者负责处理文件在不同计算机间传输时的字符集和回车等问 题.这和网络文件系统以及netbios协议不是同一回事.进一步说,FTP是一个当你 想存取别的系统上的文件时可用的一个工具.你用FTP拷贝文件到你的系统上. (详细见RFC959)
  • 远程登陆.网络终端协议(telnet)允许用户从网络上登陆到别的计算机上.你通过 确定一个计算机名开始一个远程会话过程.从那时直到你结束会话,你所输入的任 何东西将被送往远程系统.实际上你依旧同你的计算机进行交互.但telnet使的你 的计算机对你来说是透明的.你所输入的每一个字符都直接送往远程系统.通常与 远程系统的连接同拨号上网非常类似.远程系统将会问你登陆名以及口令,在某种 意义上如同一个用户拨号上网一样.当你退出登陆时,telnet将会终止,你将会发 现你直接同你的计算机交谈.微机上telnet的实现通常还包括对一些通用终端的 模拟.(RFC 854和855中可以找到对telnet的描述.顺便说一下,不要把telnet协议 和Telnet相混扰,一个商业网络服务.
  • 计算机邮件.这允许你 向别的计算机上的用户发信息.最初,人们倾向于使用一台 或两台特定的计算机.它们将用于存放邮件文件.计算机邮件系统只是简单的为你 把信息加到别人的邮件文件中.在微机使用的环境中这样做碰到了一些问题.最严 重的问题是微机不适合接受邮件.当你发送邮件时,邮件软件希望能和目的地上的 机器建立连接,以便发送邮件.如果是微机,则微机可能已经关了或正运行另外一 个程序.因此,邮件通常由一些大型系统来处理,在这些系统上通常有邮件服务器 一直在运行.微机的邮件软件只是一个从邮件服务器上接受邮件的用户界面.( 有关邮件传送协议的细节在RFC 821和822中.微机从服务器读取邮件(POP)的协议在RFC937中)
  • 这些服务应该在TCP/IP的任何实现中提供,除了微机上可以不实现邮件邮件传 送协议.这些通用程序依旧在基于TCP/IP的网络上起着重要作用.然而最近,计算机 网络的使用方式已经发生了很大变化.那种老的,大型的,自我完善的计算机已经开 始改变.许多服务都有好几种计算机组成,包括大型机,小型机,工作站和微机.这些 计算机通常被确定用来完成一些特定的任务.虽然人们依旧习惯于同特定的计算机打交道,这些计算机通过网络提供一些特定的服务.这导致了"客户/服务器"的网络模式.服务器是一个向网络的其余部分提供特定服务的系统.客户是使用服务的其他系统.(客户和服务器不必在不同的机器上.他们可以是同一机器上的不同程序.)以下是在现代计算机上通常存在的服务.这些服务都可以在TCP/IP的框架上实现. 网络文件系统.这允许用户通过比FTP更方便快捷的方式存取别的机器上的文件.为 了得到别的机器上的文件不需要特别的网络工具.你的机器只是简单认为有一个 额外的磁盘.这些额外的"虚拟"磁盘指向别的系统上的磁盘.这个用途对一些不同 的目的特别有用.你可以把大磁盘放在一些机器上,但是别的人依旧能存取磁盘.

    除了明显的经济用途外,还使得工作在不同计算机上的人们可以共享文件.它使 得维护系统和备份更容易.因为你不用担心在许多不同机器上的备份和升级.现在 一些厂家提供高性能无盘计算机.这些计算机没有任何磁盘驱动器.它们完全依靠 "文件服务器"上的磁盘.(见RFC1001和1002, 基于TCP面向PC的NetBIOS.在工作站和小型机领域,Sun的网络文件系统更为通用.协议的描述可以从Sun Microsystems得到) 远程打印.这允许你操作在别的计算机上的打印机,好象它们直接连到你的计算机 上一样.(最通用的协议是Berkeley Unix中的远程行式打印机协议.不幸的是对 此没有文挡描述.然而C代码很容易从Berkeley得到,因此很容易实现.)

    远程执行.这允许你要求在别的计算机上运行一个特定的程序.当你在一台微 机上完成了大部分的工作,但一些工作需要大型系统的资源时就显的特别有用.当 前有很多种远程执行.一些在命令级上执行。也就是你确定一条或一组在特定机 器上运行的命令。(有经验的厂商会让系统可以自由选择。)还有就是 "remote procedure call"系统可以让一个程序调用在别的计算机上的子程序。 (有很多关于这种的协议.Berkeley包含两种远程执行命令的服务器:rsh和 rexec.你可以man中找到协议的描述。

    名字服务。在大型系统中,有很多不同的名字的集合需要被管理。这包括用户 名和他们的密码,计算机名及网络地址和帐号.在所有的计算机上日复一日保持 这些是很乏味的.然而数据库则保持在很小数目的系统上。别的计算机通过网络 来得到数据。(RFC822和RFC823描述了名字服务协议在因特网上以保持主机的名 字及因特网地址。现在这是任何TCP/IP的实现上必须的部分。IEN116描述了旧 的名字服务协议,这曾被一些终端服务和另外一些寻找主机名的厂品使用过。 Sun的黄页系统被设计为一个通用的系统以便处理用户名,文件共享组和通常被 其他Unix系统使用的数据库.它在商业上广泛的使用。可以从Sun得到他的协议)

    终端服务。很多装置不再直接把终端连接到计算机上。相反把它们连接到终 端服务器上。一个终端服务器只是一个简单的懂得运行telnet(或其他可以远程 登陆的协议)的计算机.如果你的终端是与这些中的一个相连,你只需简单的输入 计算机的名字,然后你就和他相连了。通常可以在同一时间保持多个活动的连 接.终端服务器将在不同的连接之间快速切换,或通知你当输出需等待另一个连 接时.(终端服务器使用telnet协议。然而一些终端服务器将支持名字服务和一定 数量的其他协议。

    面向网络的窗口系统。直到最近,高性能的图形程序只能在位图到屏幕能直 接映射的计算机上运行。网络窗口系统允许程序使用别的计算机的显示器.完全 的网络窗口系统提供了一个接口,使得你可以把任务发放到最适合处理他们的系 统上,但这依旧只是一个单一的图形用户接口.(最广泛的窗口系统是X.可以从 MIT的雅典娜工程中得到对协议的描述。可以从MIT得到公开的描述实现。 一些厂商也支持News,由Sun定义的窗口系统。所有的这些系统都被设计为使用 TCP/IP.

    以上所说的一些协议是由Berkeley,Sun或其他一些组织设计的。因此他们不 是因特网协议组的正式成分。然而他们通过TCP/IP实现,就象普通的TCP/IP协议 程序一样。由于协议的定义并不是私有的,以及广泛的可用性,有理由认为这些 协议是因特网协议组的有效一部分。上面的列表只是可用服务的一个例子.然而 他包含了“主要”程序的主要部分。其他通用的协议倾向于用在特殊的用途上, 以得到各种各样的信息,例如谁在线上,时间等等。如果你需要的并没有列在这 里,我们建议你查找因特网的当前协议(当前RFC1011),在其中列出了当前可用 的所有协议,或查找一些主要的TCP/IP实现,看看是否有厂商增加了.