telnet client连接过程:
- TCP连接telnet server 23端口
- NVT扩展自动协商
- 用户名+密码登录
- 通过telnet server端命令行交互
- 退出登录
本文telnet server为CentOS的telnet-server,手动安装的telnet-server。
概述
Telnet 协议是 TCP/IP 协议族中应用最广泛的协议。
它允许用户(Telnet 客户端)通过一个协商过程来与一个远程设备进行通信。
Telnet 协议是基于网络虚拟终端 NVT(Network Virtual Termina1)的实现,NVT 是虚拟设备,连接双方(客户机和服务器)都必须把它们的物理终端和 NVT 进行相互转换。
操作协商
只要客户机或服务器要发送命令序列而不是数据流,它就在数据流中插入一个特殊的保留字符,该保留字符叫做“解释为命令”(IAC ,Interpret As Command) 字符。当接收方在一个入数据流中发现 IAC 字符时,它就把后继的字节处理为一个命令序列。
双方在进行Telnet连接时,要进行选项协商。
比如:使用字符方式、窗口的大小,终端的类型都要进行协商。
而协商是通过TELNET所支持的命令来实现的。
协商完成,telnet server才返回登录信息,否则无法登录。
本文协商过程通过程序的一个函数实现自动化。
telnet连接过程及协商细节可参考此文:https://www.cnblogs.com/shipfi/archive/2007/05/29/763845.html
Telnet底层交互过程
telnet client 代码
1 | #include "string.h" |
代码参考文章地址:https://blog.csdn.net/HaiwenChen/article/details/69944118