计算机网络--TCP、UDP抓包分析实验

计算机网络实验

目录

实验目的

实验环境

实验原理

1、UDP协议

2、TCP协议

实验具体步骤


  • 实验目的

1掌握使用wireshark工具对UDP协议进行抓包分析的方法,掌握UDP协议的报文格式,掌握UDP协议校验和的计算方法,理解UDP协议的优缺点,通过实验,进一步了解UDP协议;

2掌握使用wireshark工具对TCP协议进行抓包分析的方法;通过实验,进一步了解TCP协议。

  • 实验环境

  1. Windows11系统
  2. Ethereal、wireshark抓包工具
  • 实验原理

1、UDP协议

UDP是一种简单的面向数据报的传输层协议,与TCP相比,它不提供可靠性、顺序传输或拥塞控制。

UDP的主要特点:

无连接。发送数据之前不需要建立连接。

使用尽最大努力交付。即不保证可靠交付。

面向报文。UDP 一次传送和交付一个完整的报文。

没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求。

支持一对一、一对多、多对一、多对多等交互通信。

首部开销小,只有 8 个字节。

2、TCP协议

TCP是一种面向连接的、可靠的传输层协议,用于在网络上可靠地传输数据。

TCP特点:

TCP 是面向连接的运输层协议。

每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。

TCP 提供可靠交付的服务。

TCP 提供全双工通信。

字段

含义

源端口和目的端口

16位,表示数据包发送方\接收方的端口号

序号

32位,用于标识发送方发送的数据字节流的顺序,
以便接收方能够对接收到的数据包进行排序和重组。

确认号

32位,表示接收方期望收到的下一个字节的序列号

数据偏移

4位,表示TCP首部的长度,以32位(4字节)为单位。
数据偏移字段的最小值为5(即20字节),最大值为15(即60字节)

保留

6位,保留供将来使用,发送时设置为0

URG

当设置为1时,表示紧急指针字段有效

此时该字节会被优先发送

ACK

当设置为1时,表示确认号字段有效

PSH

当设置为1时,表示接收方应立即将数据提交给应用程序,
而不是等待缓冲区填满后再提交阿

RST

当设置为1时,表示发送方要求重置连接

SYN

当设置为1时,表示这是一个连接请求或连接接受报文,用于建立连接

FIN

当设置为1时,表示发送方已完成数据发送,请求关闭连接

窗口

2位,表示发送方允许接收方发送的数据量,以字节为单位。
窗口大小可以随着网络拥塞程度的

TCP各字段含义表

一、UDP

UDP报头由4个部分组成:源端口号、目标端口号、数据包长度和校验值,其中每个域各占用两个字节。UDP使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP正是采用这一机制实现对同一时刻内多项应用同时发送和接受数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0~65535。一般来说,大于49151的端口号都代表动态端口。

每个UDP报文称为一个用户数据报(User Datagram)。用户数据报分为两个部分:UDP首部和UDP数据区。

源端口

目的端口

报文长度

校验和

数据

                            图 UDP报文格式

二、TCP

TCP是面向连接的协议。在面向连接的环境中,开始传输数据之前,在两个终端之间必须先建立一个连接。对于一个要建立的连接,通信双方必须用彼此的初始化序列号seq和来自对方成功传输确认的应答号ack(指明希望收到的下一个八位组的编号)来同步,习惯上将同步信号写为SYN,应答信号写为ACK。整个同步的过程称为三次握手,如图下图所示。

图TCP连接的建立

对于一个已经建立的连接,TCP使用四次握手来结束通话(使用一个带有FIN附加标记的报文段),如图所示。

图TCP连接的释放

TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到期,但还没有收到确认,就要重传这一报文段。

16位源端口号

16位目的端口号

32位序号

32位确认序号

4位首部长度

保留

(6位)

U

R

G

A

C

K

P

S

H

R

S

T

S

Y

N

F

I

N

16位窗口大小

16位校验和

16位紧急指针

选项

数据

图TCP报文格式

  • 实验具体步骤

1、抓取本机和远程计算机通讯使用的UDP数据报

在本机上安装并运行腾讯QQ即时聊天工具(腾讯QQ即时聊天软件采用UDP的方式进行数据传输),QQ登陆以后,启动wireshark协议分析工具,并选择“Capture”à“Start”,开始数据包的抓取。然后使用QQ软件和好友进行聊天对话,等待一段时间后停止wireshark的抓包工作。停止抓包后在wiresharkl窗口中除了希望的UDP数据包外,还会有其他一些数据包,所以需要在wiresharkl中的“Filter”域中输入关键字“UDP”,然后点击“Apply”按钮,将非UDP数据包过滤掉。

2、UDP协议分析

分析查看这些UDP协议数据包,回答以下问题:

  1. 这些UDP数据包的包头分为多少个部分?每个部分代表什么含义?

答:源端口:8000,代表发送方的端口号

目的端口:55436,代表接收方的端口号

长度:73,整个 UDP 数据包的长度

校验和:用于检验数据包在传输过程中是否出现错误。

  1. 这些UDP数据包的源地址、目的地址分别是多少?通讯使用的源端口和目的端口号又分别是多少?

答:源地址为 36.155.207.242,目的地址为 10.102.91.91,源端口为 8000,目的端口为 55436。

  1. 观察这些发送的UDP数据包,有没有得到来自对方的回复?为什么?

答:没有回复,因为并没有从 10.102.91.91 的某个端口发往 36.155.207.242 的 8000 端口的数据包

3、UDP校验和的计算

图UDP校验和的计算

根据图5-2给出UDP计算校验和的步骤。

答:当计算UDP协议的校验和时,首先需要在UDP数据报前面添加一个伪首部,其中包含了源IP地址、目的IP地址、协议类型(UDP为17)和UDP数据报长度等信息。然后,将伪首部、UDP首部以及数据部分按照16位字节分割。如果数据部分字节数不是偶数,则需填充全零字节。接下来,对所有的16位字进行二进制反码求和。这意味着每一位进行异或操作,进位会在结果的最低位上被加上。最后,对求和结果取反,得到校验和值。在接收方收到UDP数据报后,也会按照同样的步骤计算校验和,并与接收到的校验和进行比较,以验证数据在传输过程中是否发生错误。

TCP

1、抓取本机和远程计算机进行文件传输时TCP数据包

在分析TCP之前,先通过HTTP POST的方式(通过HTTP方式传输数据有POST和GET两种方式,前者相对后者而言,更适合用于传输具有大量数据的文件),将本地的一个文件上传到一个远程的Web服务器上,然后使用Ethereal去捕获该文件传输过程中的TCP数据包。

(1)打开IE浏览器,在地址栏内输入

“http://gaia.cs.umass.edu/ethereal-labs/alice.txt”,

并复制其内容,然后在本地计算机上新建一个文本文件“alice.txt”,将刚才复制的内容粘贴到该文件中。

(2)在IE浏览器的地址栏中输入“http://gaia.cs.umass.edu/ethereal-labs/TCP-ethereal-file1.html”,出现如图所示的页面。

                               图 浏览器界面

(3)点击网页上的“浏览”按钮,选择需要上传的本地文件“alice.txt”。注意:在这一步不要点击网页最下面的“Upload alice.txt file”按钮。

(4)启动Ethereal协议分析工具,并点击程序上方“Capture”菜单下的“Start”开始数据包的抓取。

(5)返回到刚才打开的那个网页,点击网页上的“Upload alice.txt file”按钮,发送alice.txt文件。

(6)发送完文件以后,停止Ethereal的抓包工作,会看到如图6-2所示的Ethereal窗口。

图Ethereal抓取的TCP协议数据包

2、过滤无关的其他数据包

由于Ethereal抓包的时候,将网卡设为监听模式,因此在抓取的数据包中,会将网络上出现的所有数据包都抓下来,其中许多是与该实验无关的数据包,如ARP数据包、交换机的通讯包等,因此需要将这些抓到的无关数据包给过滤掉。过滤的步骤为:首先在Ethereal中的“Filter”域中输入关键字“TCP”,然后点击右边的“Apply”按钮,将捕获到的与传输无关的数据包过滤掉,剩下与本实验相关的部分。

在过滤后的数据包捕获窗口中,看到的是本机和gaia.cs.umass.edu之间的一系列的TCP和HTTP通讯信息,其中有初始化连接的含有“SYN”信息的3次TCP握手,一个HTTP POST信息和一系列的从本机发往gaia.cs.umass.edu的TCP包和HTTP包。查看捕获的数据包,回答以下问题:

  1. 本地计算机的IP地址是什么,通讯使用的TCP端口号是多少?

答:128.119.245.12    80                        

(2)gaia.cs.umass.edu的IP地址是多少,对方使用哪个端口发送和接收TCP数据包?

答:10.102.182.112   发送80 接受64829

3、TCP协议分析

由于这个实验是分析TCP协议,所以接下来需要将上述的窗口中的HTTP信息过滤掉,只留下TCP数据包。点击“Analyze” 菜单中的“Enableed Protocols”,在弹出的如图6-3所示的“Enabled Protocols”对话框中将“HTTP”的勾选去掉。

图 屏蔽HTTP信息

点击“确定”按钮以后,将会看到只有本机和gaia.cs.umass.edu之间通讯的TCP数据包。分析查看这些TCP数据包,回答以下问题:

  1. 用于初始化连接的TCP SYN数据包中的sequence号是多少?在该数据包中哪部分表明了该数据包数否为一个SYN数据包?

答:0 syn标志位

  1. gaia.cs.umass.edu回复的SYNACK数据包中的sequence号是多少?数据包中的哪部分表明了该数据包是否为一个SYNACK数据包?

答:sequence 号是1;

这个数据包中,Flags 字段的值为 0x01010000,其中第 16 位(从右往左数)为 ACK 位,第 17 位为 SYN 位,这两个位都被设置为 1,因此可以确定该数据包是一个 SYNACK 数据包。

  1. 包含HTTP POST指令的TCP数据包中的sequence号是多少?

答:1

  1. 如果将含有HTTP POST指令的TCP数据包作为连接建立后的第一个数据包,那么前6个数据包的sequence号是多少?并且它们分别是什么时间发送的?这些数据包的ACK确认包又是什么时候收到的?比较发送的TCP数据包和其确认包有什么不同。这6个数据包的RTT值是多少?在收到每一个ACK确认包后,RTT估计值又是多少?

答:前6个数据包的序列号分别是:1、15、12240、1360、5440和2720。

发送时间:4.439929。

收到时间:4.666633。

发送的TCP数据包包含数据,而ACK确认包只包含确认信息,不包含数据。

这6个数据包的RTT值是0.226704。

收到每个ACK确认包后,估计的RTT值也是0.226704。

(5)前6个TCP数据包的长度分别是多少?

答:分别是565、1460、1460、1460、1460、1460。

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

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

相关文章

Linux云计算 |【第四阶段】RDBMS1-DAY3

主要内容: 子查询(单行单列、多行单列、单行多列、多行多列)、分页查询limit、联合查询union、插入语句、修改语句、删除语句 一、子查询 子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一…

《OpenCV》—— 指纹验证

用两张指纹图片中的其中一张对其验证 完整代码 import cv2def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)def verification(src, model):sift cv2.SIFT_create()kp1, des1 sift.detectAndCompute(src, None)kp2, des2 sift.detectAndCompute(model, None)fl…

stm32四足机器人(标准库)

项目技术要求 PWM波形的学习 参考文章stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)_ttl pwm 驱动激光头区别-CSDN博客 舵机的学习 参考文章 stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)…

Pikichu-xss实验案例-通过xss获取cookie

原理图: pikachu提供了一个pkxss后台; 该后台可以把获得的cookie信息显示出来; 查看后端代码cookie.php:就是获取cookie信息,保存起来,然后重定向跳转到目标页面;修改最后从定向的ip&#xff0…

V3D——从单一图像生成 3D 物体

导言 论文地址:https://arxiv.org/abs/2403.06738 源码地址:https://github.com/heheyas/V3D.git 人工智能的最新进展使得自动生成 3D 内容的技术成为可能。虽然这一领域取得了重大进展,但目前的方法仍面临一些挑战。有些方法速度较慢&…

Scrapy 爬虫的大模型支持

使用 Scrapy 时,你可以轻松使用大型语言模型 (LLM) 来自动化或增强你的 Web 解析。 有多种使用 LLM 来帮助进行 Web 抓取的方法。在本指南中,我们将在每个页面上调用一个 LLM,从中抽取我们定义的一组属性,而无需编写任何选择器或…

【ZYNQ 开发】填坑!双核数据采集系统LWIP TCP发送,运行一段时间不再发送且无法ping通的问题解决

问题描述 之所以说是填坑,是因为之前写了一篇关于这个双核数据采集系统的调试记录,问题的具体表现是系统会在运行一段时间后(随机不定时,长了可能将近两小时,短则几分钟),突然间就不向电脑发送数…

windows下安装rabbitMQ并开通管理界面和允许远程访问

如题,在windows下安装一个rabbitMQ server;然后用浏览器访问其管理界面;由于rabbitMQ的默认账号guest默认只能本机访问,因此需要设置允许其他机器远程访问。这跟mysql的思路很像,默认只能本地访问,要远程访…

Web和UE5像素流送、通信教程

一、web端配置 首先打开Github地址:https://github.com/EpicGamesExt/PixelStreamingInfrastructure 找到自己虚幻引擎对应版本的项目并下载下来,我这里用的是5.3。 打开项目找到PixelStreamingInfrastructure-master > Frontend > implementat…

Redis介绍及整合Spring

目录 Redis介绍 Spring与Redis集成 Redis介绍 Redis是内存数据库,Key-value型NOSQL数据库,项目上经常将一些不经常变化并且反复查询的数据放入Redis缓存,由于数据放在内存中,所以查询、维护的速度远远快于硬盘方式操作数据&#…

启动服务并登录MySQL9数据库

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) Windows平台下安装与配置MyS…

Llama3.2开源:Meta发布1B和3B端侧模型、11B和90B多模态模型

最近这一两周不少互联网公司都已经开始秋招提前批面试了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友…

大数据毕业设计选题推荐-民族服饰数据分析系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

栏目二:Echart绘制动态折线图+柱状图

栏目二:Echart绘制动态折线图柱状图 配置了一个ECharts图表,该图表集成了数据区域缩放、双Y轴显示及多种图表类型(折线图、柱状图、象形柱图)。图表通过X轴数据展示,支持平滑折线展示比率数据并自动添加百分比标识&…

Docker-2.如何保存数据退出

在使用Docker时,我们常常需要修改容器中的文件,并且希望在容器重启后这些修改能够得到保留。 0.简介 使用Docker时有一个需要注意的问题:当你修改了容器中的文件后,重启容器后这些修改将会被重置,深入研究这个问题。 …

企业间图文档发放:如何在保障安全的同时提升效率?

不管是大型企业,还是小型创业公司,不论企业规模大小,每天都会有大量的图文档发放,对内传输协作和对外发送使用,数据的生产也是企业业务生产力的体现之一。 伴随着业务范围的不断扩大,企业与客户、合作伙伴之…

五子棋双人对战项目(2)——登录模块

目录 一、数据库模块 1、创建数据库 2、使用MyBatis连接并操作数据库 编写后端数据库代码 二、约定前后端交互接口 三、后端代码编写 文件路径如下: UserAPI: UserMapper: 四、前端代码 登录页面 login.html: 注册页面…

ireport 5.1 中文生辟字显示不出来,生成PDF报字体找不到

ireport生成pdf里文字不显示。本文以宋体中文字不显示为例。 问题:由浅入深一步一步分析 问题1、预览正常,但生成pdf中文不显示 报告模板编辑后,预览正常,但生成pdf中文不显示。以下是试验过程: 先编辑好一个报告单模…

在 Docker 版 RStudio 中安装 Seurat V4 的完整教程 (同样适用于普通R环境安装)

在单细胞RNA测序(scRNA-seq)数据分析领域,Seurat 是一个广泛使用且功能强大的R包,提供了丰富的数据处理和可视化工具。为了简化环境配置和依赖管理,使用Docker来部署RStudio并安装Seurat V4是一种高效且可重复的方法。…

华硕天选笔记本外接音箱没有声音

系列文章目录 文章目录 系列文章目录一.前言二.解决方法第一种方法第二种方法 一.前言 华硕天选笔记本外接音箱没有声音,在插上外接音箱时,系统会自动弹出下图窗口 二.解决方法 第一种方法 在我的电脑上选择 Headphone Speaker Out Headset 这三个选项…