计算机网络--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.rhkb.cn/news/435908.html

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

相关文章

【数据库文档】数据库设计说明书(Word原件参考)

一、 总述 (一) 编写目的 二、 外部设计 (一) 环境说明 (二) 指导 三、 物理实现 (一) 物理结构 (二) 安全设计 四、 表设计结构 (一)…

SpringAOP学习

面向切面编程&#xff0c;指导开发者如何组织程序结构 增强原始设计的功能 oop:面向对象编程 1.导入aop相关坐标&#xff0c;创建 <!--spring依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spri…

Python 读取与处理出入库 Excel 数据实战案例(HTML 网页展示)

有如下数据&#xff0c;需要对数据合并处理&#xff0c;输出到数据库。 数据样例&#xff1a;&#x1f447; excel内容&#xff1a; 出入库统计表河北库.xlsx: 出入库统计表天津库.xlsx: 01实现过程 1、创建test.py文件&#xff0c;然后将下面代码复制到里面&#xff0c;最后…

广西容县霞烟鸡,品牌兴农,助力乡村振兴!

在两广与港澳地区,流传着一句深入人心的饮食谚语——“无鸡不成宴”,它不仅是一种习俗的体现,更是对餐桌礼仪与待客之道的深刻诠释。每逢家宴欢聚、祭祖庆典或盛宴宾客,一只精心烹制的鸡总是不可或缺的主角,其缺席往往被视为对宾客的不敬。在这片美食文化的沃土上,广西容县的霞…

个性化大语言模型:PPlug——让AI更懂你

在当今数字化转型的时代&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经成为了不可或缺的工具&#xff0c;它们在自然语言理解、生成和推理方面展现了非凡的能力。然而&#xff0c;这些模型普遍采用的是“一刀切”的方式&#xff0c;即对于相同的输入给予所有用户相…

uniapp监听滚动实现顶部透明度变化

效果如图&#xff1a; 实现思路&#xff1a; 1、使用onPageScroll监听页面滚动&#xff0c;改变导航条的透明度&#xff1b; 2、关于顶部图片的高度&#xff1a; 如果是小程序&#xff1a;使用getMenuButtonBoundingClientRect获取胶囊顶部距离和胶囊高度&#xff1b; 如果…

YOLOv8改进 - 注意力篇 - 引入SCAM注意力机制

一、本文介绍 作为入门性篇章&#xff0c;这里介绍了SCAM注意力在YOLOv8中的使用。包含SCAM原理分析&#xff0c;SCAM的代码、SCAM的使用方法、以及添加以后的yaml文件及运行记录。 二、SCAM原理分析 SCAM官方论文地址&#xff1a;SCAM文章 SCAM官方代码地址&#xff1a;SC…

Google Protocol Buffers快速入门指南

声明&#xff1a;未经作者允许&#xff0c;禁止转载。 概念 Portocol Buffer是谷歌提出来的一种序列化结构数据的机制&#xff0c;它的可扩展性特别强&#xff0c;支持C、C#、Java、Go和Python等主流编程语言。使用Portocol Buffer时&#xff0c;仅需要定义好数据的结构化方式…

Mysql梳理10——使用SQL99实现7中JOIN操作

10 使用SQL99实现7中JOIN操作 10.1 使用SQL99实现7中JOIN操作 本案例的数据库文件分享&#xff1a; 通过百度网盘分享的文件&#xff1a;atguigudb.sql 链接&#xff1a;https://pan.baidu.com/s/1iEAJIl0ne3Y07kHd8diMag?pwd2233 提取码&#xff1a;2233 # 正中图 SEL…

每日OJ题_牛客_添加逗号_模拟_C++_Java

目录 牛客_添加逗号_模拟 题目解析 C代码1 C代码2 Java代码 牛客_添加逗号_模拟 添加逗号_牛客题霸_牛客网 题目解析 读取输入&#xff1a;读取一行字符串。分割字符串&#xff1a;使用空格将字符串分割成单词数组。拼接字符串&#xff1a;将单词数组中的每个单词用逗号…

Oracle控制文件全部丢失如何使用RMAN智能恢复?

1.手动删除所有控制文件模拟故障产生 2.此时启动数据库发现控制文件丢失 3.登录rman 4.列出故障 list failure; 5.让RMAN列举恢复建议 advise failure; 6.使用RMAN智能修复 repair failure;

Java常用三类定时器快速入手指南

文章目录 Java常用三类定时器快速入手指南一、序言二&#xff0c;Timer相关1、概念2、Timer类3、TimerTask类4、ScheduleExecutorService接口 三&#xff0c;Scheduled相关1、配置1.1 SpringMVC配置1.2 SpringBoot配置&#xff08;1&#xff09;单线程&#xff08;2&#xff09…

cpp,git,unity学习

c#中的? 1. 空值类型&#xff08;Nullable Types&#xff09; ? 可以用于值类型&#xff08;例如 int、bool 等&#xff09;&#xff0c;使它们可以接受 null。通常&#xff0c;值类型不能为 null&#xff0c;但是通过 ? 可以表示它们是可空的。 int? number null; // …

桥接(桥梁)模式

简介 桥接模式&#xff08;Bridge Pattern&#xff09;又叫作桥梁模式、接口&#xff08;Interface&#xff09;模式或柄体&#xff08;Handle and Body&#xff09;模式&#xff0c;指将抽象部分与具体实现部分分离&#xff0c;使它们都可以独立地变化&#xff0c;属于结构型…

【AAOS】CarService -- Android汽车服务

概述 Android Automative OS理解为Android OS + Android Automative Service,而CarService就是提供汽车相关功能的最主要模块。 CarService与Android OS的关系:CarService运行于独立的进程中,其作为原有Android服务的补充,在汽车设备上运行。CarService在整体车载通信中起…

JAVA线程基础二——锁的概述之乐观锁与悲观锁

乐观锁与悲观锁 乐观锁和悲观锁是在数据库中引入的名词,但是在并发包锁里面也引入了类似的思想&#xff0c;所以这里还是有必要讲解下。 悲观锁指对数据被外界修改持保守态度&#xff0c;认为数据很容易就会被其他线程修改&#xff0c;所以在数据被处理前先对数据进行加锁&…

python 如何引用变量

在字符串中引入变量有三种方法&#xff1a; 1、 连字符 name zhangsan print(my name is name) 结果为 my name is zhangsan 2、% 字符 name zhangsan age 25 price 4500.225 print(my name is %s%(name)) print(i am %d%(age) years old) print(my price is %f%(pric…

项目管理专业资质认证ICB 3中关于项目经理素质的标准

项目管理专业资质认证ICB 3中关于项目经理素质的标准&#xff0c;的确很全面&#xff0c;下面摘录之&#xff1a;

15年408计算机网络

第一题&#xff1a; 解析&#xff1a; 接收方使用POP3向邮件服务器读取邮件&#xff0c;使用的TCP连接&#xff0c;TCP向上层提供的是面向连接的&#xff0c;可靠的数据传输服务。 第二题&#xff1a; 解析&#xff1a;物理层-不归零编码和曼彻斯特编码 编码1&#xff1a;电平在…

LabVIEW项目编码器选择

在LabVIEW项目中&#xff0c;选择增量式&#xff08;Incremental Encoder&#xff09;和绝对式&#xff08;Absolute Encoder&#xff09;编码器取决于项目的具体需求。增量式编码器和绝对式编码器在工作原理、应用场景、精度和成本等方面存在显著差异。以下从多方面详细阐述两…