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

news2024/11/14 23:22:48

计算机网络实验

目录

实验目的

实验环境

实验原理

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.coloradmin.cn/o/2165822.html

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

相关文章

vant van-pull-refresh + van-list实现list列表支持搜索和下拉刷新

1 介绍 在使用 van-pull-refresh van-list实现list列表下拉刷新时遇到几个问题在这里进行一个总结。 2 出现的问题 问题一:当van-pull-refresh van-list组合使用时,下拉刷新会调用两个加载图标。 解答:去除van-pull-refresh加载图标&…

leetcode-189:轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4…

快讯:腾讯轻量服务器四周年,最低一折续费,还有免费升配

最近腾讯云轻量服务器四周年庆开始了,免费升级配置,续费服务器最低一折。 最低一折续费: 持有多久的轻量服务器决定续费几折,已经持有四年就是一折,三年1.5折以此类推。 免费升级配置: 2-4-5免费升级到…

String类常用的方法

源代码: 输出结果:

Linux 之 logrotate 【日志分割】

简介 logrotate 是一个用于管理日志文件的工具。它可以自动对日志文件进行轮转、压缩、删除等操作,以防止日志文件无限增长占用过多磁盘空间。logrotate 通常作为一个守护进程定期运行,也可以通过 cron 任务来调度执行 工作原理 按照配置文件中的规则…

【Mysql多数据源实现读写分离的几种方案】

文章目录 一.什么是MySQL 读写分离二.读写分离的几种实现方式(手动控制)1.基于Spring下的AbstractRoutingDataSource1.yml2.Controller3.Service实现4.Mapper层5.定义多数据源6.继承Spring的抽象路由数据源抽象类,重写相关逻辑7. 自定义注解WR,用于指定当…

客户端数JSON据库SQL操作功能实现代码-———未来之窗行业应用跨平台架构

一、前端json结构化查询优点 以下是前端本地化查询的一些优点: 1. 快速响应:无需通过网络请求从服务器获取数据,查询结果能够立即返回,提供了几乎零延迟的用户体验,使应用更加流畅和响应迅速。 2. 离线可用性&#x…

9.4 Linux_I/O_访问目录、文件属性

访问目录 1、打开关闭目录 打开目录函数声明如下: //1.直接打开指定路径的目录文件 DIR *opendir(const char *name); //2.先用open打开目录文件,再用该函数访问目录文件 DIR *fdopendir(int fd); 返回值:成功返回指向打开的目录文件的结…

ELK-05-skywalking监控SpringCloud服务日志

文章目录 前言一、引入依赖二、增加日志配置文件三、打印日志四、skywalking网页查询链路五、日志收集5.1 修改logback-spring.xml5.2 重启SpringCloud服务并请求test接口5.3 查看skywalking网页的Log 总结 前言 基于上一章节,现在使用skywalkin监控SpringCloud服务…

JWT令牌技术介绍及使用

一、JWT介绍 JWT是JSON Web Token的缩写,即JSON Web令牌,是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务…

D. Determine Winning Islands in Race (cf div2,dp、图论最短路)

D. Determine Winning Islands in Race 思路: bfs找到E到达每个点的最短时间t[i]。 如果E要超过B&#xff0c;那么一定要借助辅助桥&#xff0c;从而获胜。 假设有u->v的辅助桥&#xff0c;E能通过这个桥超过B的条件是: s>u 且 t[v] < v-s 即 s的取值要为[u1,v-t[v]-…

C++核心编程和桌面应用开发 第七天(运算符重载 智能指针)

目录 1.数组类 2.运算符重载 2.1加号运算符 2.1.1成员函数实现 2.1.2全局函数实现 2.1.3加号重载 2.2左移运算符 2.3递增运算符 2.4指针运算符 2.5赋值运算符 1.数组类 //默认构造函数 MyArray::MyArray() {m_Size 0;m_Capacity 100;pAddress new int[m_Capacity]…

【有啥问啥】深度解析迁移学习(Transfer Learning)

深度解析迁移学习&#xff08;Transfer Learning&#xff09; 在机器学习领域&#xff0c;迁移学习&#xff08;Transfer Learning&#xff09;作为一种强大的技术&#xff0c;正广泛应用于各种实际场景中。本文将详细解析迁移学习的基本概念、原理、分类、应用场景以及具体实…

vue3中storeToRefs让store中的结构出来的数据也能变成响应式

1、首先需要安装pinia 具体安装和使用教程参考 2、创建 src/stores/counter.js 文件&#xff0c;其内容如下&#xff1a; import {defineStore} from "pinia"; import {ref} from "vue";export const useCounterStore defineStore(counter,()>{const…

C语言程序设计题目十九:编写一万年历系统

文章目录 题目十九&#xff1a;编写一万年历系统calendar.hcalendar.ctest.c 题目十九&#xff1a;编写一万年历系统 要求&#xff1a; 模仿现实中的挂历&#xff0c;显示当前月的每一天及星期几&#xff0c;当系统日期变为下一个月时&#xff0c;自动翻页到下一个月。 calend…

【第3期】INFINI Easysearch 免费认证培训开放报名

探索 Easysearch 的无限可能&#xff0c;与 INFINI Labs 共赴搜索技术前沿&#xff01; 随着数字化转型的加速&#xff0c;搜索技术已成为企业数据洞察的核心。INFINI Labs 作为搜索创新技术的引领者&#xff0c;诚邀所有对 Easysearch 搜索引擎感兴趣的开发者、技术爱好者及合…

安卓13禁止待机 永不休眠 android13永不休眠

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 设置 =》显示 =》屏幕超时 =》 永不。 我们通过修改系统待机时间配置,来达到设置屏幕超时的配置。像网上好多文章都只写了在哪里改,改什么东西,但是实际上并未写明为什么要改那…

[智能控制】【第2 章 模糊控制的理论基础】

目录 第2章 模糊控制的理论基础 2.1 概述——模糊控制的提出 2.1 概述——模糊控制的特点 2.2 模糊集合 2.2.1 模糊集合 1 特征函数和隶属函数 2 模糊集合的表示 例2.1 例2.2 2.2.2 模糊集合的运算 1 模糊集合的基本运算 &#xff08;1&#xff09;空集…

docker搭建clickhouse并初始化用户名密码

1、新建挂载目录 mkdir -p /home/clickhouse-server/ mkdir -p /home/clickhouse-server/etc/2、拉取镜像 docker pull clickhouse/clickhouse-server3、创建临时容器 docker run -d --rm --name clickhouse-server --ulimit nofile262144:262144 clickhouse/clickhouse-ser…

目标检测流程

流程概述 背景&#xff1a;梳理目标检测标注&#xff0c;训练&#xff0c;部署全流程。供后续初学者快速上手 方案&#xff1a;Ubuntu&#xff08;PC端&#xff09;进行标注&#xff0c;基于OpenMMLab进行训练得到pt模型&#xff0c;pt模型通过转换rknn并部署。 1. 数据集 公…