透明模式下的Telnet协议包

在使用 Telnet 服务时,Telnet 提供了选项的交互和协商功能。由于交互方式不同,Telnet 有两种工作模式,分别为透明模式和行模式

下面首先讲解透明模式下的协议包。

透明模式是采用一次一个字符的模式,把用户输入的命令发送给服务器。当得到服务器的回显,再对回显进行确认,表示客户端收到信息。

【实例】以 Telnet 服务(192.168.59.135),用户名为 sm,密码为 123 为例,本节分析透明模式下的 Telnet 协议包。

TCP 连接

客户端连接服务器的 Telnet 协议包,如图所示。

这 3 个数据包是 Telnet 客户端(192.168.59.133)连接 Telnet 服务(192.168.59.135)发送的 3 次握手包。

Telnet 协商

协商阶段是客户端和服务器之间相互请求对方,对通信过程的消息选项进行确认,明确后续消息的传送方式。协商期间,通信的过程如下:

1) 客户端向服务器发送的选项协商数据包,如图所示。

其中,第 8 个数据包为客户端向服务器发送的选项协商数据包。在 Telnet 部分,其中,Do 为命令,Echo 为子命令,表示客户端要求服务器端将发送过去的字回显给自己(客户端)。第 9 个数据包为服务段的确认数据包,表示已经收到发来的选项协商数据包。

2) 客户端再次发送的选项协商数据包,如图所示。

其中,在数据包的 Telnet 部分中,Do 为命令,Suppress Go Ahead 为子命令,表示要抑制 Go Ahead 选项。激活 Suppress Go Ahead 选项是为了使 Echo 选项回显功能有效。

3) 服务器向客户端发送的选项协商数据包,如图所示。

其中,第 11 个数据包为服务器向客户端发送的选项协商数据包。在 Telnet 部分中,Will 为命令,Echo 为子命令,表示服务器希望客户端将发送过去的字回显给自己(服务器端)。第 12 个数据包为客户端的确认数据包。 

4) 服务器再次发送选项协商数据包,并发送数据信息,如图所示。

其中,第 13 个数据包 Telnet 部分中,Will 为命令,Suppress Go Ahead 为子命令,激活Suppress Go Ahead选项,表示服务器要抑制 Go Ahead 选项。同时,服务器发送了两个数据。

Welcome 192.168.59.133\r\n 数据表示服务器欢迎客户端(192.168.59.133)进行登录;Login 数据表示需要客户端输入登录 Telnet 服务器端的用户名。

第 14 个数据包为客户端的确认包,表示收到数据包。

Telnet 认证

Telnet 认证阶段主要是服务器端对客户端的身份进行确认。通信过程如下所述。

1) 客户端输入登录的用户名,对应的数据包如图所示。

该数据包的 Telnet 部分中,数据信息只有 s(一个字符),表示客户端输入用户名的第 1 个字符。这是因为这里使用的是透明模式,所以客户端每输入一个字符,都会马上被发送给服务器。发送时采用明文形式。

2) 服务器进行回显,对应的数据包如图所示。

在第 18 个数据包的 Telnet 部分中,数据信息也只有一个字符 s,这是服务器端输入的字符返回给了客户端。这是因为在协商阶段中,客户端要求服务器进行回显。第 19 个数据包为客户端对服务器回显数据包的确认。

3) 客户端继续输入登录用户名的第 2 个字符,如图所示。

第 20 个数据包传输的数据为客户端输入用户名的第 2 个字符 m,仍然是单字节发送给服务器。第 21 个数据包为服务器的回显数据包,第 22 个数据包为客户端对服务器回显数据包的确认。

以此类推,用户名字节的剩余字节也将按照单个字节的方式发送给服务器,然后服务器进行回显,最后客户端进行确认。

4) 当客户端输入完所有的用户名字符以后,按回车键换行,表示用户名输入完毕。这将产生行结束数据包,如图所示。

在第 24 个数据包的 Telnet 部分中,数据信息为 \r\n,表示行结束符,即 CR(回车)和 LF(换行)。第 25 个数据包为服务器的回显数据包,第 26 个数据包为客户端对服务器回显数据包的确认。

5) 用户名输入完成后,服务器向客户端发送要求输入密码的数据包,如图所示。

在第 27 个数据包的 Telnet 部分中,数据信息为 Password:,表示服务器要求客户端输入密码。第 28 个数据包为客户端的确认包。

6) 与输入用户名一样,客户端输入密码时,每输入的一个字符都被马上发送给服务器,并得到服务器的确认,但服务器不会回显密码,如图所示。

在第 30 个数据包的 Telnet 部分中,数据信息为 1,表示密码的第一位是 1。第 31 个数据包为服务器收到输入密码的确认包。以此类推,直到客户端输入所有的密码,并按回车键。

7) 客户端完成密码的输入,并按回车键后,将向服务器发送行结束数据包,如图所示。

在第 36 个数据包的 Telnet 部分中,数据信息为 \r\n,表示此时客户端已经完成密码的输入。第 37 个数据包为服务器的确认包。

8) 服务器对完成密码输入的数据包将进行回显,如图所示。

在第 38 个数据包的 Telnet 部分中,数据信息为 \r\n,是回显数据包。第 39 个数据包为客户端的确认包。

9) 密码成功输入以后,客户端将成功登录服务器。服务器将为客户端提供输入执行命令的会话模式,如图所示。

在第 40 个数据包的 Telnet 部分中给出了多个数据信息,最后一个数据信息为$,表示服务器为客户端提供了会话模式。在该模式下,客户端可以输入要执行的命令。第41个数据包为客户端的确认包。

命令交互

命令交互阶段主要完成客户端的命令输入和服务器端的执行和回显。通信过程如下:

1) 例如,客户端要查询服务器的网络配置信息,需要输入命令 /sbin/ifconfig。和前面一样,每输入一个字符,都会得到服务器的回显和客户端的确认,如图所示。

在第 43 个数据包的 Telnet 部分中,数据信息为/,表示客户端输入命令的第 1 个字符。第 44 个数据包为服务器的回显数据包,第 45 个数据包为客户端对回显数据包的确认。

2) 完成命令的输入以后,服务器将把命令的执行结果返回给客户端,如图所示。

第 99 个数据包的 Telnet 部分显示了命令的执行结果。第 100 个数据包为客户端的确认。

3) 服务器成功将命令的执行结果返回给客户端以后,再次返回会话模式,等待客户端下一个命令,如图所示。

在第 101 个数据包的 Telnet 部分中,数据信息为 $,表示服务器再次回到会话模式。第 102 个数据包为客户端的确认。

断开连接

如果客户端将不再执行命令,就可以断开连接了。这时,客户端将向服务器发送断开连接的 TCP 数据包,如图所示。

其中,第 105 个数据包是客户端向服务器发送的请求断开连接的 TCP[FIN,ACK] 数据包;第 106 个数据包为服务器进行断开连接的 TCP[FIN,ACK] 数据包;第 107 个数据包为客户端的确认。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


起步 处理器架构,参考 x86是指intel的开发的一种32位指令集 intel和amd早期的cpu都支持这种指令集 AMD比Intel率先制造出了商用的兼容x86的CPU,AMD称之为AMD64 Intel选择了设计一种不兼容x86的全新64为指令集,称之为IA-64,后来支持AMD64的指令集,
pscp pscp -P 22 C:\work\test.txt root@192.168.1.5:/home/data pscp -P 22 root@192.168.1.5:/home/data/test.txt C://work// 检索 find / -name default.config
文件处理 ls -a # 显示所有文件 ls -l # 显示详细信息 ls -d # 显示路径 mkdir /目录名称 # 创建目录 cd /目录名称 # 切换目录 pwd # 显示当前路径 rmdir /目录名称 # 删除目录 cp -rp [目录名称] [目标目录] # 复制目录到目标目录 cp
准备一台电脑(我就用联想拯救者r7000演示) 参考博客制作启动盘 插上U盘,启动电脑,一直按F2 进入如下页面后,将U盘设置为第一启动项,点击exit,保存并退出 之后进入如下页面,选择第三项 进入如下页面,选择第四项 进入如下页面,选择第一项,选中后,先不要点Enter 按e键,将inst.st
认识 Linux系统是参考了UNIX系统作为模板开发的,但没有使用UNIX的代码;是UNIX的一种,但不是衍生版 在Linux内核的基础上开发是发行版 分区 逻辑分区永远从5开始 步骤 挂载:可理解为分配盘符,挂载点即是盘符名;不同之处:Linux中是以空目录名称作为盘符 Hda 第一块硬盘 Hda
文件处理命令 以 . 开头的文件是隐藏文件 以 - 开头表示这是一个文件 以 d 开头表示是一个目录 以 l 开头表示是一个软链接 第一个root是所有者,第二个root是所属组 ls -h 以文件默认大小后缀 显示 ls -i 查看i节点(唯一标识) 所有者:只能有一个,可变更 所属组:只能有一个
参考 01 02 03 前提环境 本地安装VirtualBox,并安装CentOS8,配置网络后,window系统上putty能连接到CentOS8服务器 配置步骤 右键服务器复制 启动复制后的服务器,查看ip和hostname发现和原来的服务器一样,需要修改 hostname # 查看主机名 vi
文件搜索命令 星号匹配任意字符,问号匹配任意单个字符 -iname 根据文件名查找且不区分大小写 -ok 命名会有一个询问的步骤 如果没有找到指定文件,可输入命令:updatedb 更新文件资料库;除tmp目录不在文件资料库收录范围之内 locate -i 文件名 # 检索时不区分大小写 which
安装环境 安装最新版的Virtual Box,点击安装 下载centos8镜像 创建虚拟机,可参考 选择下载到本地的镜像 设置启动顺序 点击启动 启动过程中报错:“FATAL:No bootable medium found!” 1.没有选择iso镜像 2.光驱没有排在第一位置 3.镜像只能选择x8
Linux严格区分大小写 所有内容文件形式保存,包括硬件 Linux不靠扩展名区分文件类型 挂载:将设备文件名和挂载点(盘符)连接的过程 Linux各个目录的作用 bin表示二进制 服务器注意事项 远程服务器不允许关机,只能重启 重启时应该关闭服务 不要在服务器访问高峰运行高负载命令 远程配置防火墙
IDE连接Linux,上传下载文件 参考1 参考2 连接Linux 上传下载文件 本地项目打包后上传 查看是否上传成功,右键下载 补充 后端项目开发完成后,需clean掉临时文件target文件夹,且只推送修改过的文件 前端项目开发的过程中,需要在每个子组件中使用scoped,确保每个子组件中的编码
起步 LTS与普通版本的区别 LTS版本的发布周期更长,更加稳定 安装jdk sudo mkdir /usr/lib/jvm # 在Ubuntu中创建目录 pscp D:\安装包\linux源码包\jdk-8u291-linux-x64.tar.gz chnq@192.168.0.102:/tmp
前言 最近在b站上看了兄弟连老师的Linux教程,非常适合入门:https://www.bilibili.com/video/BV1mW411i7Qf 看完后就自己来试着玩下,正好手上有台空闲的电脑就尝试不使用虚拟机的方式安装Linux系统 安装步骤 制作启动盘 下载ISO镜像,我这里下载的是Cen
新建虚拟电脑 设置内存和处理器 设置硬盘大小 完成 设置 查看光驱 设置启动顺序 点击启动 选择第1项 进入图形安装界面 选择安装位置,开始安装 设置root密码 重启 登录 查看本地文件夹 配置网络,点击设置 查看宿主机ip C:\Users\ychen λ ipconfig 无线局域网适配器 W
源码包安装需手动下载后安装 二进制包则在package目录下 rpm命令管理rpm包 若某个rpm包依赖于某个模块,需要到网站www.rpmfind.net查询该模块依赖的包,安装这个包后自动安装模块,之后就能安装rpm包了 安装升级时使用包全名 查询卸载时使用包名 虚拟机中的Linux系统安装rp
首先进入命令模式,再输入以下命令 命令模式用于输入命令 插入模式可对文件编写操作 编辑模式下的命令是在冒号后输入 :12, 15d # 删除指定范围的行,这里是删除12到15行 :n1,n2s/old/new/g ## 表示从n1行到n2行,old表示旧的字符串 vim使用小技巧:自定义快捷键,如快
使用源码包安装,需要自己指定安装位置,通常是 /usr/local/软件名/ linux中要想启动执行文件,应使用绝对路径 /绝对路径/rpm包名 start ## 执行方式一 service rpm包名 start ## 执行方式二 使用源码包安装后,由于自定义安装路径,就不能使用service命
网络命令 在收邮件的用户中,输入 mail 可查看邮件信息,输入序列号查看详细信息 在mail命令下,输入h 查看所有邮件的列表 输入:d 序列号 # 删除邮件 last # 统计所有用户登录或重启时间,用于日志查询 lastlog # 显示包括未登录用户的登录时间 lastlog -u 用户id
若要使用yum管理,必须能连接网络,首先配置网络IP 进入yum源文件中启动容器 使用yum源头安装rpm包不需要进入package路径,同时也不需要使用包全名,会有yum自动管理 安装软件组
简介 client即是本机安装的docker,相当于git Docker_host相当于centos系统 registry则是docker仓库,相当于GitHub 镜像用于创建docker容器,一个镜像可以创建多个docker容器 容器是由镜像创建的运行实例,(镜像相当于类,容器相当于类创建的对象)