Ric*_*ick 12 tcp telnet protocols
这更像是一个概念性问题。我需要一些说明。
今天我正在学习一些套接字编程的东西,并根据Beej 的网络编程指南编写了一个简单的聊天服务器和聊天客户端。(聊天服务器接收客户端消息并向所有其他客户端发送消息)
聊天客户端只是一个将stdin输入发送到服务器并从服务器打印套接字数据的程序。
后来我注意到指南说我可以telnet用来连接到服务器。我试过了,它奏效了。
我不熟悉 telnet,很长一段时间我都不知道它到底是什么。
所以现在我的经历让我感到困惑:
telnet 不就是一个简单的 TCP 发送/回显程序吗?是什么让成为协议的东西如此特别?我的愚蠢聊天客户端程序没有创建 [应用程序] 协议。
来自维基百科Communication_protocol:
在电信中,通信协议是一种规则系统, 它允许通信系统的两个或多个实体通过物理量的任何种类的变化来传输信息。
Telnet 创建了哪些规则?telnet host port,为原始输入/输出打开一个 TCP 流套接字?那不是规则。
Mic*_*tum 17
Telnet 在RFC 854 中定义。使它(以及其他任何东西)成为协议的是一组规则/约束。一个这样的规则是 Telnet 是通过 TCP 完成的,并分配了端口 23 - 这些东西可能看起来微不足道,但需要在某处指定。
你不能随心所欲地发送任何东西,有些东西是有限制和特殊意义的。例如,它定义了一个“网络虚拟终端”——这是因为在建立 telnet 时,可能有许多不同的终端:打印机、黑白显示器、支持 ANSI 代码的彩色显示器等。
另外,还有这样的东西:
总之,任何一方都发送 WILL XXX 以表明该方希望(要约)开始执行选项 XXX,DO XXX 和 DON'T XXX 是其肯定和否定的确认;类似地,发送 DO XXX 表示希望(请求)另一方(即 DO 的接收者)开始执行选项 XXX,WILL XXX 和 WON'T XXX 是肯定和否定确认。由于 NVT 是未启用任何选项时剩下的内容,因此 DON'T 和 WON'T 响应保证使连接处于两端都可以处理的状态。因此,所有主机都可以实现它们的 TELNET 进程以完全不知道不受支持的选项,只需向(即拒绝)任何无法理解的选项请求返回拒绝。
在现代,大多数东西都不再那么重要了(再说一次,telnet 作为一种协议不再被广泛使用,不仅仅是因为它缺乏安全性)所以在实践中它归结为发送/回声,除非你必须实际与终端接口。
| 归档时间: |
|
| 查看次数: |
4466 次 |
| 最近记录: |