常用互联网协议的研究方法

2016-10-21 03:33宋扬
东方教育 2016年5期
关键词:命令编码信息

宋扬

【摘要】本文介绍了互联网的标准协议和分析方法。介绍互联网协议文件RFC,并作为举例分析了FTP协议

【关键字】RFC 互联网协议

前言

近年来,互联网正以令人眩目的速度增长,这个增长包括互联网这个网络规模和与之相关的技术,规模的增长带来互联网技术的广泛普及,使其中的如IP,TCP,HTTP,FTP,TELNET,HTML,NNTP等等毫无争议地成为事实的标准,同时又给以上技术提出新的要求和为其发展带来了直接的动力;技术的不断提高又克服了一个又一个网络相联出现的难题和障碍,技术和应用的相互促进,使人类文明能在事实上的迈入类信息社会。

随着互联网的不断扩大,发展的无序化日益严重,互联网的标准化无疑对保证互联网及相关技术健康发展起了决定性作用。

在这里作者对互联网标准组织,互联网标准化过程,互联网标准文件等做个简单的介绍,希望 能提供给读者一个直接快速地深入了解互联网的方法,同时鼓吹一种深入核心技术和融入世界规范的思想。

1 描述互联网协议的官方文件 RFC(Request For Comment)

在互联网的开发和研究中,产生了一系列技术协议(protocol),而其中一些被互联网的标准化机构采用,解析这些协议的文件被称为RFC(request for comments),中文意思是请求评注。由于RFC包含了一系列文件,所以下文用RFCs表示这一系列的文件。这些文件是关于互联网标准的最权威的定义,是互联网 OFFICIAL PROTOCOL STANDARDS,参见RFC-2400。

RFCs文档由互联网中的标准化机构-因特网活动委员会IAB(互联网 Activities Board)负责编辑管理和发表。这里不对IAB做详细介绍,有兴趣请参阅RFC-1160 "The 互联网 Activities Board"和RFC-1601 "Charter of the 互联网 Architecture Board(IAB)"。 IAB下属有因特网工程特别任务组IETF(互联网 Engineering Task Force)和因特网研究特别任务组IRTF(互联网 Research Task Force),这两个任务组各有一个领导组被称做IESG(互联网 Engineering Steering Group)和IRSG(互联网 Research Steering Group)。 大部分的互联网协议的开发和标准化活动在IETF的工作组中进行。

一篇RFC的发表必须得到IESG的同意,对于一些记录实验工作的文章,编辑者在发表前通知了IESG,由相关的IETF工作组或IRTF研究组检讨并向作者提供评价意见。

2 互联网协议的分析方法

第一寻找可以找到RFCs文件的地方

有关互联网的问题当然最好在互联网中找答案,RFCs文件在互联网的许多地方可以找到,根据本人实践,我发现以下站点对此组织得不错,资料查找起来非常方便。

http://www.cis.ohio-state.edu/hypertext/information/rfc.html

第二确定您所研究的协议的最新版本的RFC文件。

如前文所述,在RFC-2400中有协议的完整清单,按照清单找到的RFC一般是協议的最新版本,如果协议的STATE是Standard就更好了。如下文所分析的FTP协议的RFC文件是RFC-959。

第三,获取RFC文件

根据RFC文件编号查看以上站点的RFCs文件索引

http://www.cis.ohio-state.edu/htbin/rfc/INDEX.rfc.html

在里面您可以很快地找到您要找的RFC文件。

第四,阅读描述协议的RFC文件全文

这不用说了。

第五,实践

实践是检验真理的唯一标准,虽然互联网协议不是什么真理,但如果能实践一下对理解和掌握都有好处,许多互联网应用层的协议可视程度非常高,协议中许多控制和参数用英文短语来表示,所传输的数据如文本也是ASCII码,如HTTP,FTP等,这类协议单纯用Telnet就可以模拟一下客户端程序的运作,当然,编程实现是最好的锻炼。

第六,总结

总结确实是不错的学习方法,自己的文章是一面镜子。

3.举例:FTP协议分析

FTP协议的定义在 RFC-959 "FILE TRANSFER PROTOCOL"(Standard,Recommended)。

3.1介绍

FTP 文件传输协议(File Transfer Protocol)

FTP协议是一个应用层协议,在TCP上实现的。

开发FTP的目的是

1)促进文件(计算机程序和/或数据)的共享。

2)鼓励对远程计算机间接或隐式(implicit)(通过程序)的使用。

3)对用户屏蔽不同主机系统中的文件储存的细节。

4)可靠和高效率地实现文件的传送。

用户虽然可以直接通过一个终端使用FTP协议,但FTP协议的设计主要是给程序使用的。

3.2常用的FTP命令解释

由于篇幅所限,这里不对以上每个FTP命令做解释,这里仅解释一下作者认为比较重要或常用的FTP命令,如果读者需要深入了解请参阅 RFC-959 "FILE TRANSFER PROTOCOL"。

USER NAME(USER〈sp〉〈username〉)

本命令的参数〈username〉标识用户名,服务器凭这个用户的权限使用文件系统。这个命令一般是在控制连接后的第一个命令。这个命令成功执行后,服务器会等待PASS命令,PASS也成功执行后,用户才算等录成功,可以存取Server-FTP中的文件。

PASSWORD(PASS〈sp〉〈password〉)

这个命令是USER命令的补充,向Server-FTP发送由〈password〉所表示的密码,该命令执行成功,USER命令所指示的〈username〉才算成功登录。这里的〈password〉是明文传送。

CHANGE WORKING DIRECTORY(CWD〈SP〉〈pathname〉)

令Server-FTP改变当前目录到〈pathname〉。

LOGOUT(QUIT)

这个命令表示用户停止使用FTP,Server-FTP会关闭控制连接。

DATA PORT(PORT 〈SP〉〈host-port〉)

User-FTP这个命令告诉Server-FTP,等待Server-DTP连接的DTP(可能是User-DTP或其他的Server-DTP)的地址,〈host-port〉所指示的就是这个地址,具体的PORT命令形式如下。

PORT h1,h2,h3,h4,p1,p2

以上六个参数都是小于256的数字。

h1,h2,h3,h4表示IP地址,如192,168,0,1 表示IP地址是192.168.0.1的主机。

p1,p2,表示端口号,注意p1和p2都是小于256,所以1000表示为3,232(1000=3*256+232)

RETRIEVE(RETR〈SP〉〈pathname〉)

这个命令请求Server-FTP通过数据连接向User-DTP传送由〈pathname〉指示的文件的数据。

STOR(RETR 〈SP〉〈pathname〉)

这个命令请求Server-FTP通过数据连接接收User-DTP传送的数据,数据保存在由〈pathname〉指示的文件中。注意〈pathname〉是在Server-FTP的主机上的。

PRINT WORKING DIRECTORY(PWD)

Server-FTP收到该命令后在回应中返回当前工作目录名。

LIST(LIST [〈SP〉〈pathname〉])

Server-FTP收到该命令后向User-DTP发送目录〈pathname〉的文件目录信息。如果没有〈pathname〉参数,则返回当前目录的文件目录信息。

STATUS(STAT [〈SP〉〈pathname〉])

这个命令的回应有两种情况,没有〈pathname〉参数和有〈pathname〉参数。

1)没有参数,Server-FTP会在回应中返回的一些状态信息,如以下是我Linux上的Server-FTP返回的信息:

211-zfm.home FTP server status:

Version wu-2.4.2-VR17(1)Mon Apr 19 09:21:53 EDT 1999

Connected to zfl_k6.home(192.168.0.1)

Logged in as fszfl

TYPE:ASCII,FORM:Nonprint;STRUcture:File;transfer MODE:Stream

No data connection

0 data bytes received in 0 files

0 data bytes transmitted in 0 files

0 data bytes total in 0 files

145 traffic bytes received in 0 transfers

4306 traffic bytes transmitted in 0 transfers

4501 traffic bytes total in 0 transfers

211 End of status

2)如果有〈pathname〉参数,则在回应中返回〈pathname〉的目录信息,如以下是我发送STAT . 的结果:

213-status of .:

total 64

drwxrwxr-x 2 fszfl fszfl 1024 Nov 25 01:37 .

drwx------ 12 fszfl fszfl 1024 Nov 29 00:35 ..

213 End of Status

這个功能好象和LIST有点相似,但LIST中的目录信息在数据连接中返回的。

HELP [〈SP〉〈string〉]

这是帮助命令,如果没有参数则返回FTP命令列表,如果有参数则返回〈string〉表示的命令的语法。

3.3 FTP回应

3.3.1 回应的格式

FTP回应有3位数字编码和有关信息的文本组成,编码后一个分隔符,如果回应中返回信息的长度大于一行,则编码后跟减号(-),否则跟空格(〈sp〉)。多于一行的信息可以参考上面的例子。注意最后还有"213 End of Status"表示信息的结束。FTP回应使用的编码是约定好的,信息文本可以由具体的Server-FTP设计。显然,编码为了方便程序设计,文本信息可以方便阅读。

为了叙述方便,下文把这3位编码称为回应码。

3.3.2 回应码含义

3位回应码的每一位都有确定的含义。第一位表示命令的执行结果,表示成功,失败,或命令没有完成。第二位表示回应的类型,第三位一般指第二位的进一步细化,预留给将来的发展。

第1位可能的取值:

1yz 初步确认(Positive Preliminary reply)

表示请求的命令已经开始,请等待进一步的回应,在此之前不要发送新的FTP命令。

2yz 完成确认(Positive Completion reply)

表示请求的命令已经成功完成,可以发送新的请求。

3yz 中间状态确认(Positive Intermediate reply)

请求的命令已经被接受,等待下一条相关的命令提供进一步的信息。这个回应用于一些命令序列中,如USER和PASS,如果USER被接受则可以得到这个回应,表明还需要密码来完成用户的登录。

4yz 暂时否认(Transient Negative Completion reply)

Server-FTP由于一些暂时的原因没有接收命令,User-FTP最好重新请求这个命令。如果是命令序列,则需要从该序列的第一条指令开始。

5yz 命令有错(Permanent Negative Completion reply)

命令没有被接收,具体的拒绝原因由回应码第二位指出。

第2位可能的取值,描述回应的分类:

x0z 语法(Syntax)- 命令语法不正确,或Server-FTP没有实现这个功能。

x1z 信息(Information)- 描述如STAT或HELP等命令要求Server-FTP信息的返回。

x2z 连接(Connections)- 描述有关控制和数据连接。

x3z 帐户和认证(Authentication and accounting)- 登录过程的回应。

x4z 现在还没有指定。

x5z 文件系统(File system)- 这个回应反映服务器的文件系统的状态。

第3位的的含义需要根据第1,2位的值再细化。

3.3.3 回应举例

3位回应码的不同组合产生了许多不同的含义,篇幅所限不一一列举,具体请查 RFC-959。下面是几个例子:

200 Command okay.

500 Syntax error,command unrecognized.

501 Syntax error in parameters or arguments

3.4 實践

有条件的读者可以按以上例子实践一下,在win98的user-FTP程序中有debug命令,可以打开调式模式,调式模式中会显示使用中的FTP命令和回应,读者可以很清晰地验证FTP的使用过程。

如果还有条件可以用TCP编程技术,按FTP的原理和约定编制一个简单的User-FTP或Server-FTP程序,应该不是非常困难的事,但非常有利于理解。

猜你喜欢
命令编码信息
住院病案首页ICD编码质量在DRG付费中的应用
管理Windows10的PowerShell命令行使用记录
命令操作Windows 10回退的秘密
订阅信息
高效视频编码帧内快速深度决策算法
解析Windows10的内部命令
宝箱4
展会信息
不断修缮 建立完善的企业编码管理体系
健康信息