行模式下的Telnet协议包
在使用 Telnet 服务时,Telnet 提供了选项的交互和协商功能。由于交互方式不同,Telnet 有两种工作模式,分别为透明模式和行模式。
下面首先讲解行模式下的协议包。
行模式是指每输入一行信息并按回车键换行时,再将这行信息发送给服务器。在该模式下,服务器不会进行回显。
【实例】仍然以 Telnet 服务(192.168.59.135),用户名为 sm,密码为 123 为例。
1) 客户端连接服务器的 Telnet 协议包,如图所示。
2) 客户端向服务器发送的选项协商数据包,如图所示。
其中,第 9 个数据包为客户端向服务器发送的选项协商数据包。在 Telnet 部分中,Don't 为命令,Echo 为子命令,表示客户端要求服务器禁止回显。第 10 个数据包为服务段的确认数据包。
3) 客户端再次发送的选项协商数据包,如图所示。
在第 11 个数据包的 Telnet 部分中,Don't 为命令,Suppress Go Ahead 为子命令,表示要服务器抑制 Go Ahead 选项,禁止回显。
4) 服务器向客户端发送的选项协商数据包,如图所示。
其中,第 12 个数据包为服务器向客户端发送的选项协商数据包。在 Telnet 部分中,Will 为命令,Echo 为子命令,表示服务器希望客户端进行回显。第 13 个数据包为客户端的确认数据包。
5) 服务器再次发送的选项协商数据包,如图所示。
在第 14 个数据包的 Telnet 部分中可以看到,服务器希望客户端进行回显,并激活 Suppress Go Ahead 选项。第 15 个数据包为客户端的确认数据包。
6) 选项协商完成以后,服务器向客户端显示欢迎和要求用户名登录的信息,如图所示。
其中,第 23 个数据包的 Telnet 部分中可以看到,数据是服务器的欢迎信息,并希望客户端输入登录的用户名。第 24 个数据包为客户端的确认数据包。
7) 客户端输入登录的用户名数据包,如图所示。
在该数据包的 Telnet 部分中可以看到,数据信息为 sm\r\n,表示客户端已经输入了全部的用户名,并按了回车键和换行。这里 sm 为用户名。和透明模式不同的是,行模式不是每输入一个字符就发送给服务器,而是将每行的信息一次性发送给服务器。
8) 客户端完成输入用户名以后,服务器不会进行回显,而是向客户端发送要求输入密码的信息,如图所示。
其中,第 27 个数据包的 Telnet 部分数据信息表示服务器要求客户端输入登录的密码。第 28 个数据包为客户端的确认数据包。
9) 客户端输入密码,对应的数据包如图所示。
从该数据包的 Telnet 部分可以看到,数据信息为 123\r\n,表示客户端已经输入了全部的密码,密码为 123,将整个信息一次性发送给服务器。
10) 成功输入用户名和密码后,客户端将登录服务器。服务器首先向客户端显示说明信息,如图所示。
第 33 个数据包 Telnet 部分显示了大量的说明信息。例如,客户端可以输入一个命令,并给出命令实例。第 34 个数据包为客户端的确认数据包。
11) 服务器向客户端发送完说明信息后,将为客户端提供会话模式。客户端就可以在该模式下输入要执行的命令,如图所示。
其中,第 35 个数据包 Telnet 部分的数据信息为 $,表示客户端可以在此处输入要执行的命令。第 36 个数据包为客户端的确认数据包。
12) 客户端输入要执行的命令,这里输入查询服务器网络配置信息的命令,如图所示。
第 47 个数据包 Telnet 部分的数据信息为 /sbin/ifconfig\r\n,表示客户端已经输入了全部的命令。该命令被一次性发送给服务器。
13) 客户端完成输入的命令后,服务器向客户端返回命令的执行结果,如图所示。
其中,第 48 个数据包 Telnet 部分显示了服务器的网络配置信息。第 49 个数据包为客户端的确认数据包。
14) 服务器成功向客户端返回命令的执行结果后,再次进入会话模式,等待客户端下一个命令,如图所示。
其中,第 50 个数据包的 Telnet 部分的数据信息为 $,表示服务器再次回到会话模式。第 51 个数据包为客户端的确认数据包。
15) 如果客户端将不再执行命令,将向服务器请求断开连接。对应的数据包如图所示。
其中,第 53 个数据包是客户端向服务器发送的请求断开连接的 TCP[FIN,ACK] 数据包;第 54 个数据包为服务器进行断开连接的 TCP[FIN,ACK] 数据包;第 55 个数据包为客户端的确认。
下面首先讲解行模式下的协议包。
行模式是指每输入一行信息并按回车键换行时,再将这行信息发送给服务器。在该模式下,服务器不会进行回显。
【实例】仍然以 Telnet 服务(192.168.59.135),用户名为 sm,密码为 123 为例。
1) 客户端连接服务器的 Telnet 协议包,如图所示。
2) 客户端向服务器发送的选项协商数据包,如图所示。
3) 客户端再次发送的选项协商数据包,如图所示。
4) 服务器向客户端发送的选项协商数据包,如图所示。
5) 服务器再次发送的选项协商数据包,如图所示。
6) 选项协商完成以后,服务器向客户端显示欢迎和要求用户名登录的信息,如图所示。
7) 客户端输入登录的用户名数据包,如图所示。
8) 客户端完成输入用户名以后,服务器不会进行回显,而是向客户端发送要求输入密码的信息,如图所示。
9) 客户端输入密码,对应的数据包如图所示。
10) 成功输入用户名和密码后,客户端将登录服务器。服务器首先向客户端显示说明信息,如图所示。
11) 服务器向客户端发送完说明信息后,将为客户端提供会话模式。客户端就可以在该模式下输入要执行的命令,如图所示。
12) 客户端输入要执行的命令,这里输入查询服务器网络配置信息的命令,如图所示。
13) 客户端完成输入的命令后,服务器向客户端返回命令的执行结果,如图所示。
14) 服务器成功向客户端返回命令的执行结果后,再次进入会话模式,等待客户端下一个命令,如图所示。
15) 如果客户端将不再执行命令,将向服务器请求断开连接。对应的数据包如图所示。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算