📄 rfcrfc937.txt
字号:
"=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 + -