【计算机网络课程设计】内网穿透、搭建FTP服务器(局域网和广域网)以及对于花生壳发送X11包得一些推测

article/2025/8/21 3:56:23

搭建FTP服务器、对X11包的推测

  • FTP概述
  • 一、FTP工作模式及传输模式
    • FTP工作模式
      • 1、主动模式
      • 2、被动模式
    • FTP传输模式
      • 1、ASCLL传输模式
      • 2、二进制数据传输模式
  • 二、FTP服务器搭建
    • 1、搭建工具
    • 2、Serv_U服务器配置
  • 三、基于局域网的文件传输
    • 1、主机通过资源管理器、浏览器FTP服务器
    • 2、通过cmd命令窗口访问FTP服务器
      • (1)下载文件的抓包情况
      • (2)显示文件夹信息
  • 四、基于互联网(广域网)的文件传输
    • 1、NAT技术
    • 2、服务器域名的配置
    • 3、互联网下文件传输协议报文分析(部分)
      • (1)下载文件
      • (2)注销登录
  • 五、推导X11协议
  • 总结


FTP概述

文件传输协议(File Transfer Protocol)是Internet文件传送的基础,用于在网络上进行文件传输的一套标准协议,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。它工作在 OSI 模型的第七层, TCP 模型的第四层,即应用层,使用TCP传输保证客户端和服务器之间的连接是可靠的,为数据传输提供可靠保障。
FTP是一种基于客户端/服务器模式的协议,默认使用20、21号端口,其中20端口用于进行数据传输,21端口接受客户端发出的FTP命令和参数。FTP服务器具有容易搭建、方便管理的特点,FTP客户端工具支持文件的多点下载及断点续传技术。FTP能操作任何类型的文件而不需要进一步处理,但有着极高的延时,从开始请求到第一次接收需求数据之间的时间较长,并不时地执行一些冗长的登录进程。
FTP进行文件传输的基本工作流程分为四个阶段:建立连接阶段、身份验证阶段、命令交互阶段、断开连接阶段。如图:
在这里插入图片描述


一、FTP工作模式及传输模式

FTP有两种工作模式,一种方式叫做Standard(也就是PORT方式,主动方式),一种是Passive(也就是PASV,被动方式)。Standard模式FTP的客户端发送PORT命令到FTP服务器。Passive模式FTP的客户端发送PASV命令到FTP服务器。Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式无关。FTP的传输有两种方式:ASCll传输模式和二进制数据传输模式。

FTP工作模式

1、主动模式

主动模式是指服务器主动连接客户端的数据端口。在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。主动模式优点:服务端配置简单,服务器只开放21端口,利于服务器安全管理。缺点:若客户端开启防火墙,那么服务器对客户端端口发起的连接可能会失败。
在这里插入图片描述

2、被动模式

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。被动模式在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT N(N为端口号)",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。被动模式优点:对客户端网络环境没有要求。缺点:服务器配置管理稍显复杂,服务器需要开放随机高位端口以便客户端可以连接,不利于安全。
在这里插入图片描述

FTP传输模式

1、ASCLL传输模式

假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的是不同的操作系统,当文件传输时FTP通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)

2、二进制数据传输模式

在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

二、FTP服务器搭建

1、搭建工具

此次使用的工具室Serv_U,内网穿透用的是花生壳。

2、Serv_U服务器配置

1.在Serv_U管理一个域。
在这里插入图片描述
在这里插入图片描述
2.选择域使用的协议以及相应的端口,其中FTP是21号端口。
在这里插入图片描述
3. 将FTP服务器地址设为主机的IP地址
在这里插入图片描述
4.选择加密方式,单向加密用户,点击下一步,完成域的创建
在这里插入图片描述

三、基于局域网的文件传输

1、主机通过资源管理器、浏览器FTP服务器

通过ftp://+ IP地址的形式访问FTP服务器(图中因为更换了网络,故FTP服务器IP地址不一致),由于此处的抓包跟cmd访问FTP服务器的抓包情况差异不大,所以在cmd中具体分析抓包情况。
在这里插入图片描述
在这里插入图片描述

2、通过cmd命令窗口访问FTP服务器

在这里插入图片描述
在这里插入图片描述
展示部分抓包截图:

(1)下载文件的抓包情况

当我们请求下载时,首先客户端确定传输方式TYPE (表示数据的传输方式,A表示ASCII方式,E表示EBCDIC方式,I表示二进制方式)。服务端确认传输方式为TYPE A,随即客户端发送NLST welcom.txt(表示想要获取当前目录的文件 welcome.txt)。随即RETR welcome.txt(表示从服务器复制welcome.txt文件到客户端)。
在这里插入图片描述
当我们确认下载时,建立数据连接,通过FTP-data协议(ftp的数据连接在wireshark抓包软件中被解析为FTP-data)进行传输,服务器端的端口为20,而不是控制连接所使用的21。
在这里插入图片描述

(2)显示文件夹信息

显示当前路径的文件信息与3.2.3的过程类似,同样服务器采用PORT主动模式与客户端建立数据连接,客户端让服务器端返回一份指定路径下的目录列表(NLST)。
在这里插入图片描述

四、基于互联网(广域网)的文件传输

1、NAT技术

网络地址转换(NAT,Network Address Translation)技术作为有效解决地址紧缺问题的方案之一,通过将私有IP地址转换为公有IP地址,实现私有网络访问公共网络的功能。这种通过使用少量的公有IP 地址,代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间枯竭的问题。

2、服务器域名的配置

内网穿透可以通过开放的第三方端口来实现。我们可以安装花生壳端口映射内网穿透软件,然后再添加映射,并且配置出映射端口的信息,外网的地址是映射之后访问的域名,同时也可以是自己或者是默认的域名。通过内网穿透,可以用域名进行对应的内网应用。如果是外网地址使用的是自己的域名,可以把域名的解析指向提示目标地址来进行使用。下载花生壳5.0版本,选择http功能进行内网穿透,使外网公有IP与FTP服务器IP端口映射进行
在这里插入图片描述

3、互联网下文件传输协议报文分析(部分)

(1)下载文件

客户端抓包情况:
在这里插入图片描述
客户端向服务器发送HTTP包其中Command=Download表示下载文件,建立数据连接,中介服务器向FTP服务器请求结束给客户端发送一个OK的回复,断开连接。
服务器抓包情况:
在这里插入图片描述
中介服务器收到来自客户端的下载请求,发送X11包给FTP服务器请求客户端需要的内容。

(2)注销登录

客户端抓包情况: 在这里插入图片描述
客户端退出FTP服务器,向中介服务器发送Command=logout的HTTP包,请求退出。
服务器抓包情况:
在这里插入图片描述
服务器收到中介服务器转发的X11包,其中数据是客户端的请求退出操作。
在这里插入图片描述

五、推导X11协议

在实验过程中发现FTP服务器收到中介服务器的包都是根据X11协议来封装的包,而wireshark是无法识别其中的内容的,这导致我们无法知道中介服务器到底给FTP发送了一些什么内容。所以我们研究一下X11包的内容。
在这里插入图片描述
从图中可以发现X11包中包含GET请求,Command的指令,还有一些主机内容,连接状态等等的内容,这些东西跟HTTP包的内容十分相似。所以我们把X11包和HTTP包的内容进行排版对比。如下图:
在这里插入图片描述
两图进行对比我们发现,X11报文跟HTTP报文极其相似,所以我们推测X11包只不过是花生壳的中介服务器把客户端的HTTP报文进行一个打包,添加一些特殊标记,修改成X11包,然后转发给FTP服务器。这样可以防止有人截取花生壳中介服务器发送给FTP服务器的报文内容,增强了安全性。
在这里插入图片描述


总结

认识了FTP的原理,以及TCP连接的方式,在后续的抓包过程中,通过分析,将学到的FTP的知识与实际的连接的建立和数据的传输相结合,更深刻的理解了FTP的一些命令和状态。对FTP的客户端和服务器端间的交互过程有了清晰的认识。
有需要所有抓包内容的可以关注私信我。以及疑惑的地方也可以一起探讨,若是有朋友知道X11包的真正作用可以一起探讨一下。欢迎联系。


http://chatgpt.dhexx.cn/article/B1PKxO1O.shtml

相关文章

用旧手机搭建服务器并实现内网穿透不需要root(本人亲测很多次最简单的一个)

相信每个人都有一部或几部旧手机,放着也是放着还不如使其变废为宝,接下来我就向大家介绍如何搭建属于自己的服务器,并实现内网穿透。 相关软件已放到最后 首先我们要搭建一个本地服务器KSWEB,Aidlearning,这两款软件…

内网windows server搭建ftp服务器

一. 有两种方式 1.windows中使用IIS搭建ftp服务器(本人尝试并未成功,fileZilla只能主动模式下才能连接,未达到想要的效果) 2.使用fileZilla server 搭建ftp服务器 二.本次讲解第二种方式 使用fileZilla server搭建ftp服务器 1.下载FileZilla Server …

FileZilla搭建FTP服务器图解教程,并允许外网访问NAT内网

FTP是用来在两台计算机之间传输文件,是Internet中应用非常广泛的服务之一。FTP服务是网络中经常采用的资源共享方式之一。FTP协议有PORT和PASV两种工作模式,即主动模式和被动模式 。今天我分享一个最近我自己在WINDOWS 10搭建FTP服务器的经验给大家&…

使用JAVA连接Mysql数据库,并完成相关操作

Java 访问 MySQL 通过使用JDBC让JAVA程序连接到数据库,并完成增删改查等操作。 大致步骤: 1、Mysql与eclipse、jdk等的下载(以及环境变量配置等,这里不做详细说明)。 2、将mysql-connector-java-5.1.8-bin.jar添加到ec…

javamysql

文章目录 1、初识MySQL1.1、数据库分类 2、列类型2.1、数值2.2、字符串2.3、事件日期 3、字段属性4、表操作4.1、字符集编码4.2、修改表结构4.3、清除表 5、DQL查询数据(最重点)5.1、DQL5.2、查询去重5.3、数据库的表达式5.4、模糊查询5.5、连表查询5.6、…

java实现操作MySQL

java对mysql数据库的操作分为以下几个步骤: 1.加载mysql jdbc驱动 //加载mysql jdbc驱动Class.forName("com.mysql.cj.jdbc.Driver");2.获取连接 获取连接需要两步,一是使用DriverManager来注册驱动,二是使用DriverManager来获取…

Java+MysQL:Java连接MysQL及进行简单的查询操作

最近想学习一下Java操作MySQL等数据库的教程,但是把整个网络翻遍也没找到令人满意的教程,各种报错,所以就决定,把自己的学习过程记录下来和大家分享,既可以作为日后复习巩固之用,又可以帮到需要的人,希望可以帮助以后想学习的朋友们少走一些弯路。大家一起交流共勉吧。 …

简单介绍Java连接MySQL数据库执行数据库操作

简介:在一般的项目开发中,无不用到对数据库的操作,这些操作无非也就是一些增删改查等操作。那么我们的Java如何操作数据库进行相关的数据操作呢,这里我们需要一个驱动程序,即JDBC驱动,JDBC包含两层&#xf…

数据库 —— Java操作MySQL

系列文章 数据库 —— MySQL 01 数据库 —— MySQL 02 数据库 —— Java操作MySQL 文章目录 系列文章十、JDBC10.1 什么是JDBC10.2、JDBC程序10.2.1、封装工具类10.2.2、SQL注入问题及解决 10.3、使用IDEA连接数据库10.4、JDBC操作事务10.5、数据库连接池 十、JDBC 10.1 什么…

Java-mysql:MYSQL数据操作

添加记录:1.一次添加一条记录:INSERT [INTO] 数据表名[(字段名称1,2……)] {VALUE|VALUES}(值1,2……);2.一次添加多条记录:INSERT [INTO] 数据表名[(字段名称1,2……)] VALUES(值1,2……),(值1…

java JDBC操作Mysql解析

一. 概念: Java DataBase Connectivity Java 数据库连接, Java语言操作数据库。JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提…

java对mysql的简单操作——增加数据

java连接mysql5.1教程(含代码) 查询数据 下面是数据添加片段的代码 Connection conn null; Statement stmt null; PreparedStatement psnull;try{// 注册 JDBC 驱动Class.forName(JDBC_DRIVER);// 打开链接//连接数据库conn DriverManager.getConne…

Java和MySQL的连接和操作(JDBC)

一、数据库的连接 1. 引入JDBC驱动程序 1.1 如何获取驱动程序 驱动程序由数据库提供商提供下载。 MySQL 的驱动下载地址:http://dev.mysql.com/downloads/ 依次点击 Connector/J -> Platform Independent ,如然后下载下面那个 1.2 如何在Java …

Java连接MySQL数据库具体操作

一,主要分为5个步骤 1,获取驱动 首先下载自己mysql版本的jar包 下载地址:MySQL :: Download Connector/J 将下载好的jar包复制到jdk的安装目录下的jre下的lib下的ext目录下 mysql.5及以下的版本获取驱动是Class.forName("com.mysql.jdb…

MySQL学习(五)JDBC 使用java操作数据库

目录 1.JDBC基本原理 2.数据库驱动包的导入(环境配置) 3.JDBC的使用步骤 4.JDBC的常用接口和抽象类 5.核心小结: 1.JDBC基本原理 现在,要使用java操作数据库,则我们的项目的构建或者说代码的组成增加为了三方&…

Java JDBC操作MySQL

DBMS里有多个数据库,每个库中又有多张表。 客户端有命令终端(DoS)、SQLyog、Java等。 Mysql数据库、普通表的本质仍然是文件。 表的一行称为一条记录,对应Java中的一个对象。 SQL语句的分类为 1、DDL数据定义语言 create 表、库 2、DML 数据操作语言 in…

Java对MySQL数据库进行操作【java】

数据库几乎是每一个应用型的程序都会用到,学会如何高效操作数据库也是开发一个重点。今天我总结了具体的操作步骤以及注意点。Java访问数据库主要用的方法是JDBC,它是java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如…

Java 中使用 MySql以及一些Mysql 基本的命令

Linux mint 环境下配置 mysql 打开终端输入 sudo apt-get install mysql-server,回车即可安装 mysql,当然如果你想使用最新的 mysql,可以去官方下载并且配置,教程网上有很多,就不再赘述。 安装完成之后,在终端中输入…

【java对MySQL的操作详解】java学习之增查

文章目录 前言一,封装JDBC二,增2.1,UserDAO.java2,2,UserServier.java2,3,userUI.java添加用户 三,查3.1,UserUI伪iu3.2,UserServier.java3.3,UserDAO.java END 前言 具…

在Java中操作MySQL(JDBC)

准备工作 ideamysql 官方的 jdbc 驱动 先在 idea 中建立一个新的 java 工程 直到这一步之前,一直按下一步就行了 把名字改改直接 finish 在这个工程下面建立一个名字为 lib 的空文件夹 去官方下载依赖的包 https://dev.mysql.com/downloads/connector/j/ 选…