TCP协议分析《实验报告》

server/2024/9/22 18:21:31/

一、实验目的

1、理解TCP协议;

2、掌握TCP协议三次握手建立连接和四次挥手释放连接的过程;

3、理解TELNET协议及工作过程;

4、掌握TCP协议分析方法。

二、实验设备和环境

1、硬件设备:PC机或笔记本电脑;

2、软件:H3C Cloud Lab、Wireshark。

三、实验记录

1、实验环境搭建

按照下图在HCL中添加设备,并按图中标记配置各设备IP地址,配置完成所有设备。

1.实验拓扑截图

路由器T_server_Name接口地址配置

2.配置Telnet服务

在T_server_Name上配置Telnet服务,操作步骤如下:

[T_server_Name]local-user Telnet_Name

New local user added.

[T_server_Name-luser-manage-Telnet_Name]service-type telnet

[T_server_Name-luser-manage-Telnet_Name]password simple 123456name

[T_server_Name-luser-manage-Telnet_Name]quit

[T_server_Name]display local-user

[T_server_Name]telnet server enable

创建用户RB_user,并进入用户视图。

创建成功

设置服务类型为telnet

设置用户口令,要求10个字符以上

退出用户视图

查看本地用户信息

启动telnet服务

本地用户信息截图

3.设置抓包接口

在PC终端与路由器之间设置抓包接口,在抓包接口列表中,在抓包接口点击鼠标右键,选择“启动wireshark”,打开接口实时抓包。在wireshark程序窗口中,在“应用显示过滤器”中输入“tcp”+回车,设置抓包结果只显示TCP协议数据包。

2、TCP连接建立

(1)启动telnet客户端

启动终端T_client的命令行,输入命令“telnet 10.0.0.1”并回车,按照屏幕提示依次输入用户名和密码。

Telnet登录成功截图

(2)三次握手报文分析

打开wireshark,找到TCP三次握手报文分别截取如下内容:

三次握手报文列表

第1个报文详情截图(列表中序号为1193的包):

第2个报文详情截图(列表中序号为1194的包):

第3个报文详情截图(列表中序号为1195的包):

三次握手报文总结。在wireshark中,打开菜单“统计”,选择“流量图”菜单项,打开接口流量图,在下端“流类型”中选择“TCP Flows”选项,找到三次握手的流量并截图,如下图所示:

三次握手流量图截图

对照三次握手过程图,参考三次报文截图内容,填写如下表格:

过程

包序号

TCP连接Socket

标志位

序列号seq

确认号ack

源(Socket1

目的(Socket

SYN

ACK

第1次握手报文

1193

10.0.0.2

36303

10.0.0.1

23

1

0

0

0

第2次握手报文

1194

10.0.0.1

36303

10.0.0.2

23

1

1

0

1

第3次握手报文

1195

10.0.0.2

36303

10.0.0.1

23

0

1

1

1

3、TCP连接释放

(1)关闭telnet客户端

在终端T_client的命令行,输入命令“quit”并回车,退出Telnet客户端,系统显示远程连接关闭。如下图所示:

(2)四次挥手报文分析

打开wireshark,找到TCP四次挥手报文分别截取如下内容:

四次挥手报文列表

第1个报文详情截图(列表中序号为1716的包):

第2个报文详情截图(列表中序号为1717的包):

第3个报文详情截图(列表中序号为1718的包):

第4个报文详情截图(列表中序号为1719的包):

三次握手报文总结。在wireshark中,打开菜单“统计”,选择“流量图”菜单项,打开接口流量图,在下端“流类型”中选择“TCP Flows”选项,找到三次握手的流量并截图,如下图所示:

对照四次挥手过程图,参考报文截图内容,填写如下表格:

过程

包序号

TCP连接Socket

标志位

序列号seq

确认号ack

源(Socket1

目的(Socket

SYN

ACK

第1次挥手报文

1716

10.0.0.1

23

10.0.0.2

36303

0

1

524

100

第2次挥手报文

1717

10.0.0.2

36303

10.0.0.1

23

0

1

100

525

第3次挥手报文

1718

10.0.0.2

36303

10.0.0.1

23

0

1

100

525

第4次挥手报文

1719

10.0.0.1

23

10.0.0.2

36303

0

1

525

101

四、实验总结

在本次TCP协议分析实验中,我深入理解了TCP协议的工作原理和特性,通过实际操作和数据包捕获,对TCP的连接建立、数据传输和连接释放过程有了直观的认识。

1.TCP连接建立(三次握手):

   实验中,我们使用Wireshark工具捕获了TCP连接建立过程中的数据包。从SYN、SYN+ACK到ACK的三次交互,我们看到了TCP如何确保双方都具有正确的序列号和确认号,以保证连接的可靠性。

2.数据传输与流量控制:

   在数据传输阶段,我们观察到了TCP的流量控制机制,如滑动窗口的概念。通过分析数据包中的序列号和确认号,我们理解了TCP如何通过调整发送窗口大小来防止数据丢失或拥塞。

3.拥塞控制:

   实验中,我们模拟了网络拥塞的情况,观察到TCP如何通过慢启动、拥塞避免、快速重传和快速恢复等策略来应对网络拥塞,以确保数据的稳定传输。

4.TCP连接释放(四次挥手):

   在连接释放阶段,我们看到了FIN和FIN+ACK的交互,以及最终的ACK确认,确保了双方都确认连接已经关闭,防止了半开连接的问题。

5.实验工具的使用:

   通过使用Wireshark,我们学会了如何解析和分析网络数据包,这对于理解网络通信过程和排查网络问题非常有帮助。


http://www.ppmy.cn/server/118404.html

相关文章

学成在线练习(HTML+CSS)

准备工作 项目目录 内部包含当前网站的所有素材,包含 HTML、CSS、图片、JavaScript等等 1.由于元素具有一些默认样式,可能是我们写网页过程中根本不需要的,所有我们可以在写代码之前就将其清除 base.css /* 基础公共样式:清除…

UE5中使用UTexture2D进行纹理绘制

在UE中有时需要在CPU阶段操作像素,生成纹理贴图等,此时可以通过UTexture2D来进行处理,例子如下: 1.CPP部分 首先创建一个蓝图函数库,将UTexture2D的绘制逻辑封装成单个函数: .h: #include &…

[项目][WebServer][构建响应 发送响应]详细讲解

目录 1.构建响应2.发送响应 1.构建响应 构建响应流程如下 确认方法根据不同方法,以不同方法提参确认访问资源 如果用户的URL没有指明要访问的某种资源(路径),虽然浏览器默认会添加/,但是依旧没有告知服务器,要访问什么资源 此时&…

Ubuntu 22.04 LTS 上安装 Docker

单台机器安装docker环境,是为了后面安装open-webui,环境安装比较简单,没有难点,但一定要按步骤走,否则还是会遇到一些问题的。 第 1 步:更新软件包并安装必要软件 运行以下命令,更新软件包索引…

基于SpringBoot+Vue+MySQL的画师约稿平台系统

系统展示 用户界面 画师界面 管理员界面 系统背景 基于SpringBootVueMySQL的画师约稿平台系统的背景,主要源于数字艺术行业的快速发展与画师、客户双方需求的日益增长。在传统的约稿方式中,往往存在沟通效率低下、交易过程不透明等问题,这限制…

maven打包插件

非Springboot项目打包,将自己的程序和依赖打成一个jar包 前言 即使在pom.xml文件中没有配置任何plugin,maven也会默认设置一些插件,如其中的maven-jar-plugin插件 执行 package 打包时,maven 会使用maven-jar-plugin插件打包&am…

new/delete和malloc/free到底有什么区别

new和malloc 文章目录 new和malloc前言一、属性上的区别二、使用上的区别三、内存位置的区别四、返回类型的区别五、分配失败的区别六、扩张内存的区别七、系统调度过程的区别总结 前言 new和malloc的知识点,作为一个嵌入式工程师是必须要了解清楚的。new和malloc的…

React项目中使用发布订阅模式

React项目中使用发布订阅模式 1.创建发布订阅器2.在组件中使用发布订阅器3. 订阅数据 发布订阅模式(也称观察者模式)是一种管理跨组件通信的有效方式,尤其是在不希望直接依赖于特定组件的情况下。这种模式允许一个对象(发布者&…