张靖笙,张靖笙讲师,张靖笙联系方式,张靖笙培训师-【讲师网】
张靖笙 2019年度中国50强讲师
数字化转型、大数据、工业4.0、人工智能、智能制造、区块链
53
鲜花排名
0
鲜花数量
扫一扫加我微信
张靖笙:对互联网协议标准的分析
2016-01-20 50504

Internet协议的分析方法

张靖笙旧作

       

  摘要:本文介绍了Internet的标准协议和分析方法。介绍Internet协议文件RFC,并作为举例分析了FTP协议

  关键字:RFC Internet协议

   前言

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

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

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

 

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

    1.1 什么是RFC

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

    RFCs原本是Internet研究和开发社团--"网络工作组"(Network Working Group)的工作笔记,一篇文件可能是关于计算机通讯技术的一些话题的论文,也可能是关于确定一个标准的会议的报告。虽然所有标准以RFC的形式公布,但并不是说,所有的RFC文件所描述的协议都是已经确定的Internet标准。下文会讨论到协议的不同分类。

     由于许多RFC文件本身就是技术文档,所以它们的技术参考价值非常高,而且由于用语规范,可读性也非常强。

    RFCs是按编写的时间顺序编号的,当一篇文件成为RFC后,被分配一个RFC编号后,这个编号不会被其他文件使用,即使文件修改和重新发表也不会使用同一个RFC编号,所以当一个Internet协议(FTP)被改进后,可能因而产生RFCs中的许多不同版本的文件,所以当您研究一个协议时,注意它在RFCs中的最新版本。

    

    1.2 RFCs是如何产生的

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

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

   

 2 协议的分类(categorization)

     这里有两个Internet协议的分类依据,其中一个根据是协议的成熟程度(maturity level)或在标准化程序中的阶段(STATE ofstandardization),分为标准(standard),草案标准(draft standard),被提议的标准(proposed standard),实验(experimental),情报(informational),历史(historic)。另外一个根据协议的需求程度(requirement level)或协议的地位(STATUS),分为必需(required),推荐(recommended),可选(elective),限制使用(limited use),不推荐(not recommanded)

     在所有情况中,一个协议处于以下组合中的一种情况,表格中的X个数表示一种组合的可能性大小。一个新的协议一般从提议标准,可选(proposedstandard,elective)或实验,限制使用(experimental,  limited use)开始。

           

Required

Recommended

Elective

Limited

Not

Standard

X

XXX

XXX

 

 

Draft standard

X

X

XXX

 

 

Proposed std

 

X

XXX

 

 

Experimental

 

 

 

XXX

 

Informational

 

 

 

 

 

Historic

 

 

 

 

XXX

 

2.1协议STATE的定义

    1)标准协议(StandardProtocol)

     IESG同意这些协议作为Internet中正式标准协议,具体包括两组(1)IP协议和通用于整个Internet的其他协议。(2)特定网络协议(network-specific protocol),一般是如何在特定网络实现IP的说明书。

    2)草案标准协议(DraftStandard Protocol)

     IESG正积极地考虑把这些协议提升为标准协议(Standard Protocol)。这些协议还需要严格和广泛的测试和评价,评价和测试结果会被提交给IESG,协议在成为标准协议时可能需要修改。

    3)被提议标准化的协议(ProposedStandard Protocol)

      这是一些被IESG考虑纳入标准化程序的协议。

    4)实验协议(ExperimentalProtocol)

     一般地,实验协议指那些作为一个研究中项目的一部分,除了一些与该研究有关的场合,一般不提倡使用,如果后来它们被提议标准化,才进入标准化程序。

    5)情报性协议(InformationalProtocol)

     这是一些由其他标准化组织或厂商制定,或由于某种原因协议的内容超出IESG权限(purview),RFC的形式发表只是为了Internet团体的检索方便。

    6)历史协议(HistoricProtocol)

     这是一些因为被新技术淘汰或缺乏兴趣发展而不能成为标准的协议,保留在RFC中只是作为历史的见证。

       

2.2  协议Status的定义

   1)必需协议(RequiredProtocol)

     一个Internet上的系统(主机或网关)必需实现的协议。

   2)推荐协议(RecommendedProtocol)

     一个Internet上的系统最好能实现推荐协议

   3)可选协议(ElectiveProtocol)

     一个Internet上的系统可以实现也可以不实现可选协议,取决于你自己是否愿意实现。这里可能有几个可选协议在同一个普通领域,如几个电子邮件协议和几个路由协议。

   4)限制使用协议(LimitedUse Protocol)

     这些协议只在一些限定的环境内应用,可能由于他们属于实验阶段,或只适用在特殊的自然环境下,或因为其功能有限,或已经被淘汰,如历史协议。

   5)不推荐使用协议(NotRecommanded Protocol)

     这些协议不被推荐使用。

 

 3 协议的标准化过程

         |

        +<----------------------------------------------+

         V   0                                         |    4

   +-----------+                                  +===========+

   |  enter  |-->----------------+-------------->|experiment |

   +-----------+                   |               +=====+=====+

                                   V    1                |

                             +-----------+               V

                             | proposed  |-------------->+

                       +--->+-----+-----+              |

                        |          V   2                |

                       +<---+-----+-----+              V

                             | draft std|-------------->+

                        +--->+-----+-----+               |

                        |          V   3                |

                       +<---+=====+=====+              V

                             | standard  |-------------->+

                             +=====+=====+               |

                                                        V    5

                                                  +=====+=====+

                                                  | historic  |

                                                   +===========+

     一个协议是否进入标准化程序或在标准化程序中由一个阶段(STATE)提升到另一个阶段取决于IESG的推荐。图中的单线框表示临时过渡阶段,双线框表示长期阶段,一个协议一般保留在一个临时阶段数个月时间,proposed standard最少六个月,draft standard最少四个月,如果是长期阶段则可能保持数年。

     图中从(1)proposed standard阶段到(2)draft standard阶段,这行动只能由IESG决定并且协议成为proposed standard至少六个月。

     (2)draft standard(3)standard也是只能由IESG决定并且协议成为draft standard至少四个月。

     如果协议不打算进行标准化就会被放置到(4)experimental阶段,该协议将脱离标准化程序,协议经过进一步完善后,需要重新提交加入标准化程序的申请。

     有时一个协议被其他协议取代,或感觉到将要被其他协议替代,于是成为(5)historic     

 

 4 Internet协议的分析方法

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

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

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

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

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

     第三,获取RFC文件

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

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

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

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

     这不用说了。

     第五,实践

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

     第六,总结

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

 

 5.举例:FTP协议分析

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

 5.1介绍  

   FTP 文件传输协议 (FileTransfer Protocol)      

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

     开发FTP的目的是

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

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

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

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

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

         

 5.2 FTP模型图

       

                                            -------------

                                           |/---------\|

                                           ||   User  ||   --------

                                           ||Interface|<--->| User |

                                            |\----^----/|    --------

                  ----------                |     |    |

                  |/------\|  FTP Commands |/----V----\|

                 ||Server|<---------------->|  User  ||

                  ||  PI ||   FTP Replies  ||   PI   ||

                  |\--^---/|                |\----^----/|

                  |   |   |                |     |    |

      --------    |/--V---\|      Data     |/----V----\|    --------

      | File |<--->|Server|<---------------->|  User  |<--->| File |

      |System|    || DTP ||   Connection   ||  DTP   ||    |System|

      --------    |\------/|                |\---------/|    --------

                  ----------                -------------

 

                  Server-FTP                   USER-FTP

 

        : 1. 图中的 data connection 可以被双向使用。

            2. data connection不需要任何时间都存在。

     

5.3 术语解析 

    为了描述上的准确,有关FTP术语出现的地方基本引用其英文原文,这里给出相应的中文解释,仅仅为了方便读者的理解。为了检索方便,这里的术语是按照其原英文顺序排列,一些前面没有解析的术语请在后面找。

  control connection 控制(信息)连接

    USER-PISERVER-PI之间交换FTP命令和回应的通信通道,连接中传送的信息符合Telnet协议(RFC-854)中的约定,在整个FTP使用过程中,控制连接是一直保持的。

  data connection 数据连接

     数据传送中使用的全双工连接,数据传送有特定模式(mode)和类型(type)。这里所说的数据可能是一个文件的一部分,或一整个文件或多个文件。连接可能是Server-DTPUser-DTP之间,或两个Server-DTPs之间,数据连接在需要传送数据时才需要建立。 

  data port 数据端口

     当有一个数据传送的要求时,DTP在数据端口监听,等待对方发来的连接请求以建立连接。

  data structures 数据结构

     除了数据类型(TYPE)外,FTP允许指定一个传送中文件的结构,以便决定Server-FTP对文件的处理方式。在FTP中定义有三种文件结构。

    file structure:文件没有内部结构,是一个连续的数据字节序列。

    record structure:文件数据按记录形式组织,文件由连续的记录组成。

    page structure:文件由独立的含索引的数据页组成。

  DTP data transfer process) 数据传送进程

     数据传送进程建立数据连接(data connection)和进行文件数据的传送。        

  FTP commands FTP命令集

    FTP命令集是由User-FTP发给Server-FTP的请求命令组成的集合。        

  mode(传输)模式

    数据通过数据连接(data connection)传输数据的模式,模式定义了数据在传输中的格式,有以下三种。

     stream mode 流模式

      文件以字符流的形式传输,数据在表示类型上没有限制。

     block mode 块模式

      文件以数据块的模式按顺序传输,每个块的开头的含表达控制信息的字节。

     compressed mode 压缩模式

      传输的数据按照一定的格式被压缩。      

    模式用MODE命令设置,一般缺省情况是stream

 PI (protocolinterpreter)协议解释器

    如上图所示,PI是用户端和服务器端实现和解释FTP协议的部分,具体在用户端(User-PI)实现FTP命令(FTP command)的发送和回应的解释,在服务器端实现FTP命令的解释执行和回应(reply)的返回。一般的常见FTP客户端软件(User-PI)上还有用户界面(User-Interface),普通用户不用直接面对FTP命令和回应。实际例子中,简单的用户界面如现在各种操作系统提供的ftp程序的命令交互,复杂如诸如Bullet FTP,Cute FTP等产品的图形界面。最简单的情况可用Telnet程序来使用,但缺点是没法产生User-DTP,所以实际上无法直接实现数据的传送。

reply回应

    一个回应是一个从服务器传送到客户端的对FTP命令执行情况的反馈(肯定或否定)。回应的一般格式是一个3位数字编码后面跟着一句文字串。        

server-DTP

    服务器端的数据传送进程,User-FTPServer-FTP之间数据连接建立过程中,Server-DTP一般充当请求连接的一方。在两个Server-FTP之间则其中一个充当被动监听,另外一个充当主动请求连接。具体由与它们相连的User-FTP发来的FTP命令决定。

server-PI

   服务端的协议解释器,在端口21监听等待User-PI请求建立控制连接(control connection)。和User-PI建立连接后,Server-PI接收user-PI发来的FTP命令,解析执行命令,发送回应,和有数据传送要求时管理server-DTP

type类型

   由于不同类型的主机的数据表达方式不同,如IBM S390EBCDIC码,普通PCASCII码,为了使不同类型的主机能实现文件的交换,在传送过程中的数据类型应该是确定的,类型的设置暗示了数据由储存中到传送的转换规则(transformation)FTP中有以下类型。

     ASCII TYPE 

     这是比较通用的类型,表示发送的是字符文件,且在文件传送过程中数据使用ASCII码表示。发送者会把按内部字符表表示的数据转换成标准的八位NVT-ASCII码。         

    EBCDIC TYPE

     文件传送过程中使用EBCDIC码。

    IMAGE TYPE

     传送的数据按照连续的位流传送,为了传输上的方便,数据被封装为八位的字节单位,不足8位的补零。比较常见的称呼是二进制数据(binary data)

    LOCAL TYPE

     传送的数据按照发送方所在主机的字符表示传送,在一些主机中一个字可能是大于8位的,则对齐成8的倍数,如一个36位字符转换64位,即8个字节,两个36位字符转换成72位,即9个字节。

user-DTP

   当有数据传送要求时,用户端的数据传送进程在数据端口监听,等待服务器端DTP的连接请求。

user-PI

   用户端的协议解释器,负责向Server-PI请求建立控制连接,发送FTP命令,在文件传输过程中管理user-DTP        

  

5.4常用的FTP命令解释

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

USER NAME(USERsp〉〈username)

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

PASSWORD(PASSsp〉〈password)

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

CHANGE WORKING DIRECTORY(CWDSP〉〈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,表示端口号,注意p1p2都是小于256,所以1000表示为3,232(1000=3*256+232) 

RETRIEVE(RETRSP〉〈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:

                 Versionwu-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

                 0data 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 0transfers

                 4501 traffic bytes total in 0 transfers

          211 End of status

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

         213-statusof .:                                                   

              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〉表示的命令的语法。

   

5.5 FTP回应

 5.5.1 回应的格式

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

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

5.5.2 回应码含义

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

  1位可能的取值:

   1yz  初步确认 (Positive Preliminary reply)

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

   2yz  完成确认 (Positive Completion reply)

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

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

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

   4yz  暂时否认 (Transient Negative Completionreply)

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

   5yz  命令有错 (Permanent Negative Completionreply)

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

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

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

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

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

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

   x4z   现在还没有指定。

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

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

 

5.5.3 回应举例

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

        200 Command okay.

        500 Syntax error, command unrecognized.            

        501 Syntax error in parameters or arguments

 

 5.6 FTP举例

      以下给出一个实际的例子,FTP客户端用随Windows98提供ftp,FTP服务器用Sco Unix 5.0.4,其中的'------'表示客户端发给服务器的命令,'--------'表示服务器的回应,〈CR〉表示回车,〈CRLF〉表示回车换行。

  

用户界面的命令

引用FTP

c:ftp zfl_5x86CR

 connect to 192.168.0.8

 

提示User:

输入fszflCR

 

提示password:

输入xxxxxCR

 

ftpcd simpletcpCR

 

ftpdirCR              

   准备DTP,DTP在端口1841 (=7x256+49)监听

 

 

 

接收数据

  显示通过数据连接收回来的东西。如

     total 64

     .......                                                            

     -rw-r--r--   1 fszfl    fszfl        1242 Nov 25 01:37 client.c

     .......

                        

ftpget client.cCR

 

 

 

 

 

接收数据,同时把数据写到client.c

 

显示接收成功,接收的字节数                                  

ftpbinCR

 

 

ftpput autoexec.batCR 

准备DTP,DTP在端口1848(=7x256+56)监听

 

 

 

 

 

 读文件autoexec.bat,把数据通过数据连  接发送,到文件结束关闭数据连接。

显示发送成功,发送字节数.

FtpquitCR

连接到主机zfl_5x86,端口21,

建立控制连接。

---- 220  zfl_5x86 FTP server (Version 2.1WU(1)) ready.

 

USER fszflCRLF----

---- 331  Password required for fszfl.

 

PASS xxxxxCRLF----

---- 230  User fszfl logged in.

 CWD simpletcpCRLF------

---- 250  CWD command successful.

 

 

PORT 192,168,0,8,7,49CRLF-------

---- 200  PORT command successful.

 LISTCRLF------

---- 150  Opening ASCII mode data connection for /bin/ls.

 

 

 

 

 

 

---- 226  Transfer complete.

 

PORT 192,168,0,8,7,53CRLF-------

---- 200  PORT command successful.

RETR client.cCRLF----

---- 150  Opening ASCII mode data connection for client.c.

 

---- 226  Transfer complete.

 

 

TYPE ICRLF----

---- 200  Type set to I.

 

 

 

PORT 192,168,0,8,7,56CRLF-------

---- 200  PORT command successful.

STOR AUTOEXEC.BATCRLF----

---- 150  Opening BINARY mode data connection for autoexec.c.

 

 

---- 226  Transfer complete.

 

QUIT CRLF----

-----221  Goodbye.

 控制连接关闭。

 

5.7实践

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

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

全部评论 (0)
讲师网石家庄站 sjz.jiangshi.org 由加盟商 杭州讲师云科技有限公司 独家运营
培训业务联系:小文老师 18681582316

Copyright©2008-2024 版权所有 浙ICP备06026258号-1 浙公网安备 33010802003509号
杭州讲师网络科技有限公司 更多城市分站招商中