TCP/IP详解——FTP 协议,Telnet协议

1. FTP 协议

FTP 数据传输协议,属于是成块数据流

1.1 FTP的应用

image-20230721161014321

FTP是用来传送文件的协议。使用FTP实现远程文件传输的同时,还可以保证数据传输的可靠性和高效性。

1.2 FTP传输文件的过程

TCP连接

image-20230721161041629

使用FTP进行文件传输时,会使用两个TCP连接。

  • 第一个连接是FTP客户端和FTP服务器间的控制连接。FTP服务器开启21号端口,等待FTP客户端发送连接请求。FTP客户端随机开启端口,向服务器发送建立连接的请求。控制连接用于在服务器和客户端之间传输控制命令。

  • 第二个连接是FTP客户端和FTP服务器间的数据连接。FTP服务器使用TCP的20号端口与客户端建立数据连接。通常情况下,服务器主动建立或中断数据连接。

1.3 FTP传输模式

image-20230721161159488

FTP传输数据时支持两种传输模式:ASCII模式二进制模式

  • ASCII模式用于传输文本。发送端的字符在发送前被转换成ASCII码格式之后进行传输,接收端收到之后再将其转换成字符。

  • 二进制模式常用于发送图片文件和程序文件。发送端在发送这些文件时无需转换格式,即可传输。

两个信道

  • 控制信道(21端口)
  • 数据信道(20端口)

FTP的两个模式

  • 主动模式(Active Mode)
  • 被动模式(Passive Mode)

通常都是使用的是被动模式Passive Mode,不管是什么模式第一信道都是不变的,所有的区别都在第二信道中。

1.4 主动模式(Active Mode)

在第一个信道中主要是认证,还要进行三次握手的建立。在FTP上要下载文件,这样就需要建立第二信道,也就是所有服务器给客户端的数据都是在第二信道中传递的。

在第一个信道中发送PORT命令,由客户发送给服务器,在PORT中有6个数字,分别用(a,b,c,d,e,f)来表示。这6个数字用逗号来分割。其作用是告诉客户端它的IP地址是a.b.c.d,端口号是e*256+f 的结果为目的端口号。

服务器发起第二信道,源端口是20号端口,目的端口是e*256+f,在第二信道中也要进行三次握手的建立,所有数据都要在第二信道中进行传输。

1.5 Active Mode 抓包分析

首先在虚拟机中开启FTP服务端

image-20231123211726727

然后本机启动FTP客户端,进行连接。

image-20231123211836903

在连接的时候使用OmniPeek进行抓包

image-20231123211916855

很明显用户名和密码被抓取出来了,所以FTP是不安全的。

image-20231123213713201

第一个信道中发送PORT,在PORT中有6个数字,分别是(192,168,188,229,192,157)。

image-20231123213748945

192*256+157=49309,这个49309就是目的端口,而192.138.188.229就是FTP服务端的 IP 地址。

第一次建立第二信道发送listing,意思是罗列清单查看FTP上有哪些文件和数据。这些信息都是通过第二信道主动发送的。

image-20231123213926688

向下拖动还发现一个PORT命令,这个是第二次建立第二信道,表示下载FTP上的wuhu文件。只要是服务器过来的数据都要建立第二信道。

image-20231123214441959

1.6 被动模式(Passive Mode)

客户端发送PASV命令,该命令就是询问服务器是否支持Passive Mode。如果服务器支持会回复227,还有6个数字并且用的逗号分割。服务器地址是a.b.c.d,所连接的端口号是e*256+f。

第二信道客户端是随机端口,目的端口号是e*256+f,双方都是动态的端口号。

1.7 Passive Mode 抓包分析

通常都是使用的是被动模式Passive Mode。

客户端发送PASV命令,并且在下面的TCP三次握手发现源端口和目的端口都是动态的。

image-20231124101156628

2. Telnet 协议

2.1 Telnet 概念

Telnet 协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。属于是交互式数据流,明文传输用户名和密码非常的不安全。占用**23端口号**。

它为用户提供了在本地计算机上完成远程主机远作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制路由器的方法

特点

  1. 交互式TCP数据流特点
  2. 安全问题(替代协议SSH)

2.2 Telnet 协议抓包分析

在本机cmd窗口输入如下命令进行Telnet远程登录。

telnet 192.168.188.227

然后输入虚拟机中的用户名,密码,管理员名称。

image-20231124113423838

登录成功弹出如下界面

image-20231124113334330

在登录的过程中进行抓包,这里使用的是OmniPeek,原因是因为这个比起Wireshark更加的方便对数据包进行分析。

image-20231124113544080

可以看到在本机输入的用户名和密码被抓取到了,这样就非常的不安全。

image-20231124113753409

而且Telnet是属于TCP的交互式数据流,在输入用户名和密码的时候,数据包是客户端发送一个,服务端接受一个。这样在抓取到的数据包中看到客户端和服务端一来一回的一个交互过程。

image-20231124134042534

在数据包内容中可以看到目的端口是23,也就是Telnet所占用的端口号。

image-20231124114240178

CSNAS 抓包分析
在这里插入图片描述

相关推荐

  1. 计算机通信:FTP协议详解

    2023-12-19 21:20:03       55 阅读
  2. <span style='color:red;'>FTP</span><span style='color:red;'>协议</span>

    FTP协议

    2023-12-19 21:20:03      28 阅读
  3. ftp协议的彻底研究

    2023-12-19 21:20:03       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-19 21:20:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-19 21:20:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-19 21:20:03       82 阅读
  4. Python语言-面向对象

    2023-12-19 21:20:03       91 阅读

热门阅读

  1. zookeeper安装部署

    2023-12-19 21:20:03       52 阅读
  2. 算法基础之Kruskal算法求最小生成树

    2023-12-19 21:20:03       59 阅读
  3. 【PHP】身份证正则验证、校验位验证

    2023-12-19 21:20:03       61 阅读
  4. 考研英语语法(十九)

    2023-12-19 21:20:03       47 阅读
  5. Android Studio Gradle构建很慢,下载依赖缓慢问题

    2023-12-19 21:20:03       59 阅读