⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfcrfc937.txt

📁 本程序为在linux下实现FTP传输文件的实现
💻 TXT
📖 第 1 页 / 共 3 页
字号:
             "=ccc" ccc是下一个邮件的长度

NACK
    用户用该命令向服务器报告它未收到数据.该命令结束邮件数据的传送.将邮件数
据保存在邮箱中,保持邮件指针不变.服务器返回当前邮件的长度.因为当前邮件必然存在,
所以邮件长度是一个大于零的数.该命令的关键字是"NACK",然后是CRLF.
    可能的应答:
         "=ccc" ccc是当前邮件的长度.
   
      QUIT
          该命令表明用户已经完成会话.服务器将发送一个"OK"应答给用户,并关闭连接.
该命令的关键字是"QUIT",然后是CRLF.
          可能的应答: 
               "+ OK" 并关闭连接



服务器回答

     GREETING
         任何一个连接被建立时,服务器都将发送该应答给用户.该消息由一个加号,然后
是协议的名字(POP2),服务器的名字,文本,CRLF组成.
           "+"
              加号意味着成功的连接. 后面跟文本和CRLF.
           "-"
              减号意味着连接失败.和加号一样,后面跟文本和CRLF.
           "="
               等号返回命令中指定的邮件的长度.后面跟一个数字,然后是文本和CRLF.
           "#"
               该符号返回指定邮箱或文件夹中的邮件总数. 后面跟一个数字,然后是文
本和CRLF.
   

      TIMEOUTS
            任何一个类似的协议中都有TIMEOUTS.如果不想让其中一方陷入无穷的等待
中.用户希望较快的应答,因此应该由一个短的超时时间.它被称作T1.
             对一些服务器来说,应该有时间计算邮箱中的邮件数或邮件的长度或重整存
储的数据以用来传输.因此,超时时间应该大于这些时间.在命令RETR 中也应该考虑这个问
题.
            服务企业不希望无期地等待用户的下一个命令,因此服务企业由一个超时时间
T2.      
           当一个用户给客户机编一段程序,使它自动的给服务器发送命令时,可以很合理
的想象,此时服务器的T2时间应该很小.
            相应的,如果是一个人在给服务器发送命令,服务器的T2时间应该很大.


讨论
   
     TOPS-20上的服务器的评价:
             该情况下,邮箱是一个简单的文件.信邮件被链接在文件后面.不同邮件间有
一个分割行.
             这种服务器的特别之处是它的删除操作.只有当用户拥有对文件的写权限时,
才能进行该操作.要注意避免两个问题:(1)阻止其它用户对文件的写操作;(2)防止意外删除
用户为看的邮件.


一个建议
 
        当一个邮箱被选中时,如果用户有写权限,给邮箱重新起一个临时名.这样新邮件就
会被放在临时文件中.对临时邮箱进行所有的POP2操作.这样当POP2会话结束或大卡另一个
邮箱时,任何为删除的邮件会存在信邮箱文件夹中.

命令行和回答行的大小
       命令行的最大长度时512字符(包括命令字和CRLF).
       回答行的最大长度时512字符(包括+,-,=,#和CRLF).
       邮件数据行的最大长度时1000字符(包括CRLF).
     ISI已经将POP2协议作为服务器用于TOPS-20和Berkeley 4.2 Unix 系统;作为客户
机用于IBM-PC 和Berkeley 4.2 Unix 系统.

不足之处

       POP2协议不检查数据的内容,甚至不分析数据头.
       服务器中部存在邮件的任何状态信息(例如:我们不从一个会话到另一个都发生了什
么)这样服务器不知道那一个邮件是新邮件.

五: 例子
例子1:
Client                    Server
           ------                    ------
                                Wait for connection
      Open connection  -->
                           <--  + POP2 USC-ISIF.ARPA Server
      HELO POSTEL SECRET -->
                           <--  #2 messages in your mailbox
      READ             -->   
                           <--  =537 characters in message 1
      RETR             -->   
                           <--  [data of message 1]
      ACKD             -->   
                           <--  =234 characters in message 2
      RETR             -->   
                      <--  =234 characters in message 2
      RETR             -->   
                           <--  [data of message 2]
      ACKD             -->   
                           <--  =0 no more messages
      QUIT             -->
                           <--  + OK, bye, bye
      Close connection --> <--  Close connection
                                Go back to start

例子2:

           Client                    Server
           ------                    ------
                                Wait for connection
      Open connection  -->
                           <--  + POP2 ISI-VAXA.ARPA server here
      HELO smith secret -->
                           <--  #35 messages
      FOLD /usr/spool/mail/smith -->
                           <--  #27 messages
      READ  27         -->   
                           <--  =10123 characters in that message
      RETR             -->   
                           <--  [data of message 27]
      ACKS             -->   
                           <--  =0 no more messages
      QUIT             -->
                           <--  + bye, call again sometime.
      Close connection --> <--  Close connection
                                Go back to start

   例子3:

           Client                    Server
           ------                    ------
                                Wait for connection
      Open connection  -->
                           <--  + POP2 ISI-VAXA.ARPA server here
      HELO Jones secret -->
                           <--  #0 messages
      READ             -->   
                           <--  Close connection
      Close connection -->
                                Go back to start



六: 形式语法
   1.选项及参数
   <digit>    = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
   <letter>   = A | B | C | ... | Z
                a | b | c | ... | z
   <punct>    = ! | " | # | $ | % | & | ' | ( | ) | * |
                + | , | - | / | : | < | = | > | ? | @ |
                [ | ] | ^ | _ | ` | { | | | } | ~
   <quote>    = \
   <any>      = any one of the 128 ASCII codes
   <CR>       = carriage return, code 10
   <LF>       = line feed, code 13
   <SP>       = space, code 32
   <CRLF>     = <CR> <LF>
   <print>    = <letter> | <digit> | <punct> | <quote> <any>
   <char>     = <print> | <SP>
   <word>     = <print> | <print> <word>
   <string>   = <char> | <char> <string>
   <ld>       = <letter> | <digit>
   <ldh>      = <letter> | <digit> | -
   <ldhs>     = <ldh> | <ldh> <ldhs>
   <name>     = <letter> [ [ <ldhs> ] <ld> ]
   <host>     =  <name> | <name> . <host>
    <user>     = <word>
   <password> = <word>
   <mailbox>  = <string>
   <number>   = <digit> | <digit> <number>
   <helo>     = HELO <SP> <user> <SP> <password> <CRLF>
   <fold>     = FOLD <SP> <mailbox> <CRLF>
   <read>     = READ [<SP> <number>] <CRLF>
   <retr>     = RETR <CRLF>
   <acks>     = ACKS <CRLF>
   <ackd>     = ACKD <CRLF>
   <nack>     = NACK <CRLF>
   <quit>     = QUIT <CRLF>
   <ok>       = + [<SP> <string>] <CRLF>
   <err>      = - [<SP> <string>] <CRLF>
   <count>    = # <number> [<SP> <string>] <CRLF>
   <greet>    = + <SP> POP2 <SP> <host> [<SP> <string>] <CRLF>
   <length>   = = <number> [<SP> <string>] <CRLF>
   <command>  = <helo> | <fold> | <read> | <retr> |
                <acks> | <ackd> | <nack> | <quit>
   <reply>    = <ok> | <err> | <count> | <length> | <greet>

2. 用户流程图
             
                          |                    ^  + BYE  
                          |  Open              |  -----  
                          |           Greet    |  Close  
                          V           -----    |         
                      +-------+       QUIT    +-------+  
                      | CALL  |-------------->| EXIT  |  
                      +-------+               +-------+  
                          |                       ^      
                          |  Greet                |      
                          |  -----                |      
                          |  HELO                 |      
              +---->+     |                       |      
        #NNN  ^     |     |        #NNN           |      
        ----  |     V     V        ----           |      
        FOLD  |    +-------+       QUIT           |      
              +<---| NMBR  |--------------------->+      
                   +-------+                      ^      
                    ^     |                       |      
                    |     |  #NNN                 |      
                    |     |  ----                 |      
              =CCC  |     |  READ                 |      
              ----  |     |                       |      
              FOLD  |     |        =CCC           |      
                    |     V        ----           |      
        =CCC  +--->+-------+       QUIT           |      
        ----  ^    | SIZE  |--------------------->+      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -