我正在使用RFC 854实现 Telnet 客户端。
我看了一下negotation语法(DO
,WILL
,WON'T
等)和我通过这一段困惑:
总之,
WILL XXX
由任何一方发送,以表明该
方希望(要约)开始执行选项XXX
,DO XXX
并
DON'T XXX
作为其肯定和否定的确认;类似地,DO XXX
发送表示希望(请求)另一方
(即 的接收者DO
)开始执行选项XXX
,WILL XXX
并WON'T XXX
作为肯定和否定确认。由于 NVT 是未启用任何选项时剩下的内容,因此DON'T
和
WON'T
响应保证使连接处于
两端都可以处理的状态。 因此,所有主机都可以实现他们的
TELNET 进程以完全不知道那些不知道的选项。
支持,简单地向(即拒绝)任何
无法理解的选项请求返回拒绝。
(添加了重点和代码格式化程序。)
我有两个问题,每个强调的句子一个:
WILL
和DO
请求有什么区别?它们显然可以被任何一方使用(“[...]WILL XXX
是由任何一方发送的,由任何一方[...]”),它们的区别仅在于他们的“欲望 [s]”是对前者和梯子的“请求”。但有什么区别呢?我在 RFC 中搜索了“要约”以获取更多信息,但它只出现了一次。我不明白第二句中的推理(“因为当没有启用任何选项时,剩下的就是 NVT [...]”)。我以为NVT(Network Virtual Terminal)是对具体终端的抽象,那么Telnet协议就不用担心两边具体终端的怪癖了吧?那怎么可能“离开”呢?这意味着它可以通过 Telnet 选项进行扩充,但我根本不明白这意味着什么。