FTP中的TCP传输服务(电子科技大学TCP/IP实验五)

news2024/9/25 13:18:39

目录

一.实验目的

二.预备知识

三.实验原理

四.实验内容

五.实验步骤

八、总结及心得体会

九、对本实验过程及方法、手段的改进建议


一.实验目的

1、掌握 TCP 协议工作原理

2、掌握 TCP 的连接建立和连接终止过程

3、了解 FTP 会话过程中的控制连接和数据连接特点

二.预备知识

1、TCP 报文段格式

2、TCP 的连接概念和过程

三.实验原理

FTP 协议是一个用于文件传输的应用层协议,采用客户/服务器模式实现文件传输功能,使用 TCP 协议提供的面向连接的可靠传输服务。FTP 客户和服务器之间使用 2 条TCP  连接来传输文件:控制连接(TCP  端口 21)和数据连接(TCP  端口 20)。在整个 FTP 会话交互过程中,控制连接始终处于连接状态;数据连接则在每一次文件传送时使用PORT 命令或PASV 命令打开,文件传送完毕后关闭。因此,整个 FTP 会话中如果传送多个文件,那么数据连接会打开和关闭多次。

TCP 协议(RFC 793)是一个面向连接的、可靠的运输层协议,通过连接建立和连接终止这两个过程完成面向连接的传输。TCP 的连接建立通常被称为“三向握手”。在建立 TCP 连接之前,服务器程序需要向它的 TCP 模块发出被动打开请求,表示该服务器已经准备好接受客户的连接。客户程序则要向它的 TCP 模块发出主动打开请求,表示该客户需要连接特定的服务器。然后即可开始建立 TCP 连接。以客户端主动连接 TCP 连接为例,TCP 连接建立过程如下:

(1)客户端 TCP 发送一个 SYN 报文段。该报文段包括源端口号、目的端口号、客户的初始序号、客户可接收的 TCP 报文段数据的最大长度(MSS)等信息。

(2)服务器端 TCP 收到客户端的SYN 报文段后,返回一个 SYN 和ACK 报文段。该报文段使用ACK 标志和确认号字段确认已经收到了客户端的SYN 报文段, 另外对服务器端的报文段进行初始化。

(3)客户端 TCP 收到服务器端的SYN 和ACK 报文段后,发送一个 ACK 报文段。该报文段使用 ACK  标志和确认号字段确认已经收到了服务器端的 SYN 和 ACK 报文段。

TCP 连接中的任何一方(客户或服务器)都可以关闭连接。当一方的连接被终止时, 另一方还可以继续向对方发送数据。因此,要关闭双向的 TCP 连接就需要 4 个动作。以客户端主动关闭 TCP 连接为例,TCP 连接终止过程如下:

(1)客户端 TCP 发送一个 FIN 报文段,宣布它要终止连接。

(2)服务器端 TCP 收到客户端的 FIN 报文段后,返回一个 ACK 报文段,用来确认已收到了客户端的 FIN 报文段。

(3)服务器端TCP 可以在服务器到客户方向上继续发送数据。当服务器没有更多的数据发送时,就发送一个 FIN 报文段。

(4)客户端 TCP 收到服务器端的 FIN 报文段后,返回一个 ACK 报文段,用来确认已收到了服务器端的 FIN 报文段。

四.实验内容

五.实验步骤

实验步骤详见TCP//IP实验指导书。由于步骤过长,就在此不在赘述。

  • 实验数据及结果分析
  1. 按捕获顺序记录步骤5中子网A上捕获的所有TCP报文段,记录信息如下:

IP分组首部

TCP报文段

IP地址

端口

序号

确认号

标志位

窗口

长度(字节)

目的

目的

首部

数据

192.168.11.2

192.168.22.253

1032

21

0xabe19a9b

0x0

SYN

0xfaf0

28

0

192.168.22.253

192.168.11.2

21

1032

0xe1fbe2c2

0xabe19a9c

SYN,ACK

0xfaf0

28

0

192.168.11.2

192.168.22.253

1032

21

0xabe19a9c

0xe1fbe2c3

ACK

0xfaf0

20

0

192.168.22.253

192.168.11.2

21

1032

0xe1fbe2c3

0xabe19a9c

PSH,ACK

0xfaf0

20

27

192.168.11.2

192.168.22.253

1032

21

0xabe19a9c

0xe1fbe2de

ACK

0xfad5

20

0

192.168.11.2

192.168.22.253

1032

21

0xabe19a9c

0xe1fbe2de

PSH,ACK

0xfad5

20

10

192.168.22.253

192.168.11.2

21

1032

0xe1fbe2de

0xabe19aa6

PSH,ACK

0xfae6

20

72

192.168.11.2

192.168.22.253

1032

21

0xabe19aa6

0xe1fbe326

ACK

0xfa8d

20

0

192.168.11.2

192.168.22.253

1032

21

0xabe19aa6

0xe1fbe326

PSH,ACK

0xfa8d

20

10

192.168.22.253

192.168.11.2

21

1032

0xe1fbe326

0xabe19ab0

PSH,ACK

0xfadc

20

31

192.168.11.2

192.168.22.253

1032

21

0xabe19ab0

0xe1fbe345

ACK

0xfa6e

20

0

192.168.11.2

192.168.22.253

1032

21

0xabe19ab0

0xe1fbe345

PSH,ACK

0xfa6e

20

24

192.168.22.253

192.168.11.2

21

1032

0xe1fbe345

0xabe19ac8

PSH,ACK

0xfac4

20

30

192.168.11.2

192.168.22.253

1032

21

0xabe19ac8

0xe1fbe363

PSH,ACK

0xfa50

20

16

192.168.22.253

192.168.11.2

21

1032

0xe1fbe363

0xabe19ad8

PSH,ACK

0xfab4

20

64

192.168.22.253

192.168.11.2

20

1034

0x23fe47db

0x0

SYN

0xfaf0

28

0

192.168.11.2

192.168.22.253

1034

20

0x2238e9ca

0x23fe47dc

SYN,ACK

0xfaf0

28

0

192.168.22.253

192.168.11.2

20

1034

0x23fe47dc

0x2238e9cb

ACK

0xfaf0

20

0

192.168.22.253

192.168.11.2

20

1034

0x23fe47dc

0x2238e9cb

PSH,ACK

0xfaf0

20

5

192.168.22.253

192.168.11.2

20

1034

0x23fe47e1

0x2238e9cb

FIN,ACK

0xfaf0

20

0

192.168.11.2

192.168.22.253

1032

21

0xabe19ad8

0xe1fbe3a3

ACK

0xfa10

20

0

192.168.11.2

192.168.22.253

1034

20

0x2238e9cb

0x23fe47e2

ACK

0xfaeb

20

0

192.168.11.2

192.168.22.253

1034

20

0x2238e9cb

0x23fe47e2

FIN,ACK

0xfaeb

20

0

192.168.22.253

192.168.11.2

21

1032

0xe1fbe3a3

0xabe19ad8

PSH,ACK

0xfab4

20

24

192.168.22.253

192.168.11.2

20

1034

0x23fe47e2

0x2238e9cc

ACK

0xfaf0

20

0

192.168.11.2

192.168.22.253

1032

21

0xabe19ad8

0xe1fbe3bb

ACK

0xf9f8

20

0

192.168.11.2

192.168.22.253

1032

21

0xabe19ad8

0xe1fbe3bb

PSH,ACK

0xf9f8

20

6

192.168.22.253

192.168.11.2

21

1032

0xe1fbe3bb

0xabe19ade

PSH,ACK

0xfaae

20

7

192.168.22.253

192.168.11.2

21

1032

0xe1fbe3c2

0xabe19ade

FIN,ACK

0xfaae

20

0

192.168.11.2

192.168.22.253

1032

21

0xabe19ade

0xe1fbe3c3

ACK

0xf9f1

20

0

192.168.11.2

192.168.22.253

1032

21

0xabe19ade

0xe1fbe3c3

FIN,ACK

0xf9f1

20

0

192.168.22.253

192.168.11.2

21

1032

0xe1fbe3c3

0xabe19adf

ACK

0xfaae

20

0

【分析】

1)步骤 5 中的 FTP 客户以及 FTP 服务器之间建立了几条TCP 连接?每条连接中双方的 IP 地址、TCP 端口号和初始序号分别是多少?

两条;

第一条连接:

IP地址1

端口1

IP地址2

端口2

初始序号

192.168.22.253

21

192.168.11.2

1032

0xabe19a9b

192.168.11.2

1032

192.168.22.253

21

0xe1fbe2c2

第二条连接:

IP地址1

端口1

IP地址2

端口2

初始序号

192.168.22.253

20

192.168.11.2

1034

0x23fe47db

192.168.11.2

1034

192.168.22.253

20

0x2238e9ca

2)TCP 报文段中的窗口值定义的是该报文段源端还是目的端的发送窗口还是接收窗口?

源端的接收窗口。

3)实验中哪些类型的 TCP 报文段首部中携带有 MSS 的选项信息

标志位中含有SYNTCP报文段。(SYN),(SYN,ACK)

2、按捕获顺序记录步骤 7 中子网 A 上捕获的所有 TCP 连接建立、连接终止和连接复位报文段,记录信息如下:

下表三种不同颜色代表了三条不同的TCP连接。

IP分组首部

TCP报文段

IP地址

端口

序号

确认号

标志位

窗口

长度(字节)

目的

目的

首部

数据

192.168.11.2

192.168.22.253

1043

21

0x75e2accc

0x0

SYN

0xfaf0

28

0

192.168.22.253

192.168.11.2

21

1043

0xd501c8cb

0x75e2accd

SYN,ACK

0xfaf0

28

0

192.168.11.2

192.168.22.253

1043

21

0x75e2accd

0xd501c8cc

ACK

0xfaf0

20

0

192.168.11.2

192.168.22.253

1044

1030

0x35861f3d

0x0

SYN

0xfaf0

28

0

192.168.22.253

192.168.11.2

1030

1044

0xec7d8155

0x35861f3e

SYN,ACK

0xfaf0

28

0

192.168.11.2

192.168.22.253

1044

1030

0x35861f3e

0xec7d8156

ACK

0xfaf0

20

0

192.168.22.253

192.168.11.2

1030

1044

0xec7d8188

0x35861f3e

FIN,ACK

0xfaf0

20

0

192.168.11.2

192.168.22.253

1044

1030

0x35861f3e

0xec7d8189

ACK

0xfabe

20

0

192.168.11.2

192.168.22.253

1044

1030

0x35861f3e

0xec7d8189

FIN,ACK

0xfabe

20

0

192.168.22.253

192.168.11.2

1030

1044

0xec7d8189

0x35861f3f

ACK

0xfaf0

20

0

192.168.11.2

192.168.22.253

1045

1031

0xb0c5973e

0x0

SYN

0xfaf0

28

0

192.168.22.253

192.168.11.2

1031

1045

0xb3e83e9a

0xb0c5973f

SYN,ACK

0xfaf0

28

0

192.168.11.2

192.168.22.253

1045

1031

0xb0c5973f

0xb3e83e9b

ACK

0xfaf0

20

0

192.168.22.253

192.168.11.2

1031

1045

0xb3e83ea0

0xb0c5973f

FIN,ACK

0xfaf0

20

0

192.168.11.2

192.168.22.253

1045

1031

0xb0c5973f

0xb3e83ea1

ACK

0xfaeb

20

0

192.168.11.2

192.168.22.253

1045

1031

0xb0c5973f

0xb3e83ea1

FIN,ACK

0xfaeb

20

0

192.168.22.253

192.168.11.2

1031

1045

0xb3e83ea1

0xb0c5973f

ACK

0xfaf0

20

0

192.168.11.2

192.168.22.253

1043

21

0x75e2ad6b

0xd501cbda

FIN,ACK

0xf7e2

20

0

192.168.22.253

192.168.11.2

21

1043

0xd501cbda

0x75e2ad6c

ACK

0xfa52

20

0

192.168.22.253

192.168.11.2

21

1043

0xd501cbda

0x75e2ad6c

FIN,ACK

0xfa52

20

0

192.168.11.2

192.168.22.253

1043

21

0x75e2ad6c

0xd501cbdb

ACK

0xf7e2

20

0

【分析】

  1. 步骤 7 中的 FTP 客户以及 FTP 服务器之间建立了几条TCP 连接?每条连接中双方的 IP 地址、TCP 端口号和初始序号分别是多少?

三条TCP连接

第一条:

IP地址1

端口1

IP地址2

端口2

初始序号

192.168.22.253

21

192.168.11.2

1043

0xd501c8cb

192.168.11.2

1043

192.168.22.253

21

0x75e2accc

第二条:

IP地址1

端口1

IP地址2

端口2

初始序号

192.168.22.253

1030

192.168.11.2

1044

0x35861f3d

192.168.11.2

1044

192.168.22.253

1030

3967648085

第三条:

IP地址1

端口1

IP地址2

端口2

初始序号

192.168.22.253

1031

192.168.11.2

1045

0xb3e83e9a

192.168.11.2

1045

192.168.22.253

1031

0xb0c5973e

  1. 步骤 5 和步骤 7 的 FTP 会话交互有哪些不同?解释产生这些差异的原因。

FTP的连接有控制连接和数据连接。在步骤5中数据连接的发起方是服务器(端口20),但是在步骤七当中数据连接的发起方是客户端不是服务端。此外,相应的端口也有所不同。

原因:FTP协议有两种工作方式:PORT方式和PASV方式,即主动与被动。

IE浏览器使用PORT方式,即主动。在这种模式下,客户端使用随机端口号,向服务器的21号端口发起建立控制连接的请求;客户端通过控制连接,告诉服务端,自身开放的数据连接的端口(随机产生的);服务器使用端口20,主动向客户端发起建立数据连接的请求,进行文件传输;最后,文件传输完成,关闭TCP连接。

命令行的FTP传输采用的PASV方式。客户端使用随机端口,向服务器21号端口发起建立连接的请求;服务器通过控制连接,告诉客户端,自身开放的数据连接的端口号(随机产生);客户端使用随机端口号,向服务器端的数据连接端口发起TCP连接,然后开始进行文件传输;最后文件传输完成,关闭TCP连接。

  • 实验结论
  1. 需要用哪些参数来标识一条TCP 连接?

源IP,目的IP,源端口号,目的端口号

  1. 利用记录的 TCP 报文段信息,在一张时序图中画出步骤 5 中 FTP 客户与FTP 服务器之间的整个 TCP 报文段交互过程。

要求:在图中注明每个 TCP 报文段的编号、类型、序号和确认号,并标注出每一条 TCP 连接的连接建立、数据传输和连接终止阶段。

以下图片中,TCP1连接用蓝色表示,TCP2连接用黑色表示。

下图中,序号和确认号采用的是真实值(十进制)

图3 TCP连接

 

八、总结及心得体会

1.在此次实验当中,学习了如何在虚拟机中配置IP等,以及熟练了对VM下虚拟机的使用。

2.在实验当中,对实验过程中的FTP的控制信道和数据信道有了深刻的认识和了解。掌握了FTP的两种工作方式主动模式和被动模式。 

3.在实验过程中,要认真仔细,不要把步骤操作顺序搞反了。

九、对本实验过程及方法、手段的改进建议

1.建议可以增加一下对报文的分析,采用别的软件,不借助wireshark直接对报文进行分析,根据课上学习的相关协议报文的格式,对捕获的数据进行分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/372171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里团队刚发布的重磅图像生成基础模型,多重条件引导+图像合成,SD级别,5B参数...

一个多小时前刚发的论文,Composer: Creative and Controllable Image Synthesis with Composable Conditions。 我读完了快速帮大家概要一下啊。论文地址见文章最后。阿里巴巴团队开发的这个重磅图像生成模型 Compose,支持多重引导条件的图像生成(合成)&…

containerd安装配置

containerd基本使用命令 containerd安装 容器运行时containerd安装配置 https://blog.csdn.net/rendongxingzhe/article/details/124595415 yum list | grep containerd containerd的本地CLI工具ctr命令 containerd的组件 containerd提供包括容器的运行、测试、发布和接口…

improve-1

类型及检测方式 1. JS内置类型 JavaScript 的数据类型有下图所示 其中,前 7 种类型为基础类型,最后 1 种(Object)为引用类型,也是你需要重点关注的,因为它在日常工作中是使用得最频繁,也是需要…

DevOps是什么?DevOps能够给我们带来什么?

目录专栏导读一、DevOps是什么?二、为什么会出现DevOps?1、容器化技术的发展,微服务架构的发展,直接促进了DevOps的迅速发展2、敏态需求的增加,即探索性工作的增加3、软件开发活动在企业经营活动中占比的不断增加4、企…

【华为OD机试模拟题】用 C++ 实现 - 水仙花数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明水仙花数题目输入输出描述示例一输入输出说明示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。…

【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…

基于stm32计算器设计

这里写目录标题 完整de代码可q我获取1 系统功能设计2 系统硬件系统分析设计2.1 STM32单片机核心电路设计2.2 LCD1602液晶显示模块电路设计2.3 4X4矩阵键盘模块设计3 STM32单片机系统软件设计3.1 编程语言选择3.2 Keil程序开发环境3.3 FlyMcu程序烧录软件介绍3.4 CH340串口程序烧…

【华为OD机试模拟题】用 C++ 实现 - 最近的点(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明最近的点题目输入输出示例一输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址…

【基础篇0】Linux下ANACONDA与TF-LITE环境配置

0 写在前面:一些摸索与总结 对于Linux系统,我发现不管是电脑x86的Ubuntu还是树莓派arm的raspberry系统,在系统安装完毕后,总是自带一个特定版本的python.   例如我的ubuntu22.04自带的python版本是3.10,而高版本的py…

Vue3之组件

何为组件 组件化的概念已经提出了很多年了,但是何为组件呢?组件有啥优势?本文将会做出解答,首先我们需要弄清楚何为组件。在VUE的官网中的解释是: 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对…

Android 基础知识4-3.2 EditText(输入框)详解

一、EditText(输入框)介绍 EditText在开发中也是经常使用的控件,比如,要实现一个登录页面,需要用户输入账号、密码等信息,然后我们或得用户输入的内容,把它交给服务器来判断。因此,这…

【模拟集成电路】分频器(DIV_TSPC)设计

分频器(DIV_TSPC)设计前言一、DIV工作原理二、DIV电路设计(1)32分频原理图(2)D触发器原理图(3)D锁存器原理图(4)三输入与非门原理图三、DIV仿真测试32分频器测…

k8s学习之路 | Day15 k8s 中的 yaml 语法

文章目录yaml 基础什么是 yaml&#xff1f;yaml 特性适用场景基本语法规则数据类型yaml 对象yaml 数组yaml 纯量yaml 引用k8s 中的 yaml 语法\<string>\<Object>\<map[string]string>\<[]Object>\<boolean>示例 yaml 说明我在学习过程中&#xf…

【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明最多获得的短信条数题目输入输出示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过…

优化WebView实现H5秒开

WebView与原生对比差在哪里&#xff1f;这里引用百度APP图片来说明。百度的开发人员将这一整个过程划分为了四个阶段&#xff0c;并统计出了各个阶段的平均耗时。可以看到&#xff0c;在初始化组件阶段就花费了 260 ms&#xff0c;首次创建耗时均值为 500 ms&#xff0c;毫无疑…

7-vue-2

vue3.2 自定义全局指令、局部指令 // 在src目录下新建一个directive文件&#xff0c;在此文件夹下新建一个index.js文件夹&#xff0c;接着输入如下内容 const directives (app) > {//这里是给元素取得名字&#xff0c;虽然是focus&#xff0c;但是实际引用的时候必须以v…

为赋能,创共赢~ 〖TFS_CLUB社区〗-〖星荐官计划〗来袭~ 期待各位小伙伴的加入~

文章目录❤️‍&#x1f525; TFS社区介绍❤️‍&#x1f525; 星荐官计划在直播结束之后&#xff0c;有几位小伙伴跟我说&#xff0c;想法是好的&#xff0c;但是会很难搞。试想一下如果真的是很容易做的事情&#xff0c;那岂不是人人都可以做&#xff1f;正因为难做&#xff…

PyQt5数据库开发2 5.2 QSqlRelationalTableModel

目录 一、Qt窗体设计 1. 新建Qt项目 2. 添加组件 3. 添加资源 4. 添加Action 5. 添加工具栏 6. 添加菜单项 7. 添加退出功能 二、SQL Server下建表插数据 1. 建立表 2. 插入数据 3. 单表数据 4. 联合查询 三、代码实现 1. 新建项目目录 2. 编译窗体文件和资…

[计算机网络(第八版)]第一章 概述(章节测试/章节作业)

随堂作业 练习版(无答案版) 1.2 因特网概述 1【单选题】因特网的前身是1969年创建的第一个分组交换网 A、internetB、InternetC、NSFNETD、ARPANET 2【单选题】因特网采用的核心技术是 A、TCP/IPB、局域网技术C、远程通信技术D、光纤技术 1.3 三种交换方式&#xff1a;电路…

mysql数据库表的创建与查看

mysql数据库表的创建与查看 一、mysql查看 查看所有数据库 show databases切换数据库 use 数据库名查看该数据库下所有的表名 show tables查看表的结构 desc 表名二、mysq创建 创建数据库 create database 数据库名;创建数据库设置编码 drop database if EXISTS dbname; creat…