Wireshark_labs TCP

news2024/11/24 1:38:08

在本实验中,我们将详细研究著名的TCP协议的行为。我们将通过从您的电脑向远程服务器传输一份150KB 的文件(一份Lewis Carrol 的“爱丽丝梦游仙境”文本), 并分析TCP传输内容的发送和接收过程来实现。我们将研究TCP对序列和确认号的使用,以提供可靠的数据传输;我们将看到TCP的拥塞控制算法-慢后动和拥塞避免在过程中,我们将看看TCP的接收器发送流量控制的机制。我们还将简要地观察TCP连线的设置,我们还会研究计算机和服务器之间TCP连线的性能(吞吐量和往返时间)。

在开始本实验之前,您应该先查看课本中的第3.5和3.7节

1. 捕捉从计算机网络到远程服务器的批量TCP传输

在开始探索TCP之前,我们需要使用Wireshark获取从计算机到远程服务器的文件TCP传输的数据包跟踪。为此,您将访问一个Web页面,该页面允许您输入存储在计算机上的一个文件的名称(其中包含《爱丽丝在仙境》的ASCII文本),然后使用HTTP POST方法将该文件传输到Web服务器(请参阅本文中的2.2.3节)。我们使用POST方法而不是GET方法,因为我们希望将大量数据从您的计算机传输到另一台计算机。当然,在此期间,我们将运行Wireshark来获取从您的计算机发送和接收的TCP段的跟踪。

做如下操作:

  • 启动浏览器。将这个文件存储在你电脑的某个地方。
  • 接下来访问http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html。
  • 你会看到类似下面这样的屏幕:
    image-20240305215450975
  • 在此表单中使用Browse按钮输入包含爱丽丝仙境的计算机上的文件名称(完整路径名称)(或手动执行)。
  • 暂时不要点击“上传*alice.txt文件”*按钮。
  • 现在启动Wireshark并开始抓包(capture -> start),然后在Wireshark抓包选项屏幕上按OK(我们不需要在这里选择任何选项)。
  • 返回浏览器,点击“上传alice*.txt文件”*按钮,将文件上传到gaia.cs.umass.edu服务器。一旦文件上传完成,一个简短的祝贺消息将显示在你的浏览器窗口。
  • 停止Wireshark抓包。您的Wireshark窗口应该类似于下面所示的窗口。
    image-20240305215742491如果您无法在实际的网路上运行Wireshark ,则可以下载在作者的计算机上执行上述步骤时捕获的数据包跟踪文件。当您探索下面的问题时,即使您已经捕获了自己的传输内容并使用它来回答下面的问题,您也可能会发现这份下载的跟踪包很有参考价值。

2. 第一眼看到捕捉到的踪迹

在详细分析TCP连接的行为之前,让我们对跟踪进行一个高级视图。

  • 首先,在Wireshark窗口顶部的显示过滤器规格窗口中输入“tcp”(小写,不带引号,输入后不要忘记按回车键),过滤Wireshark窗口中显示的数据包。

您应该看到的是计算机和gaia.cs.umass.edu 之间的一系列TCP和HTTP讯息。您应该看到包含SYN讯息的初始三次握手。您应该看到HTTP POST讯息。根据您使用的Wireshark 的版本,您可能会看到从您的计算机向gaia.cs.umass.edu 发送一系列“HTTP Continuation”讯息。回想一下我们在早期的HTTP Wireshark实验室中的讨论,这不是HTTP Continuation 消息-这是Wireshark指示有多个TCP区段用于承载单个HTTP讯息的方式。在Wireshark的最新版本中,您将在Wireshark显示的Info 列中看到“[重新组装的PDU的TCP段]”, 以指示此TCP区段包含属于上层协议讯息的数据(在我们的示例中为,HTTP )。您还应该看到从gaia.cs.umass. edu返回到您的计算机的TCP ACK区段。
image-20240306152012117

利用下载的http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip档案,打开其中的Wireshark捕的数据包文件tcp-ethereal-trace-1来回答以下问题( 即下载跟踪包并打开Wireshark中的跟踪包;见附注2)。 在回答问题时,您应该提交用于回答问题的跟踪内的数据包的列印输出。加上适当的注释以解释您的答案。要印出数据包,请使用文件->列印,选择仅选定数据包,选择数据包摘要行,然后选择回答问题所需的最小数据包详细信息量。

  1. 将文件传输到gaia.cs.umass.edu的客户端计算机(源)使用的IP地址和TCP端口号是什么? 要回答这个问题,可能最简单的方法是选择一个HTTP消息,并使用“所选包头窗口的详细信息”(如果您不确定Wireshark窗口,请参阅“入门Wireshark”实验室中的图2)来探索用于携带该HTTP消息的TCP数据包的详细信息。

    image-20240306152706019

  2. gaia.c.s.umass.edu的IP地址是多少?在哪个端口号上发送和接收这个连接的TCP段?

    找到POST讯息后,发现目标IP为128.199.245.12 目标端口为80

    作者的IP地址为 192.168.1.102 端口号为1161

如果您已经能够创建自己的跟踪,请回答以下问题:

  1. IP地址和TCP端口号是什么,您的客户端计算机(源)用来传输文件到gaia.cs.umass.edu?
    image-20240306153259044
    这是我的抓包结果,显示目标IP为128.119.245.12 端口号为80
    我的IP为192.168.5.9 端口号为37968

由于这个实验是关于TCP而不是HTTP的,让我们改变Wireshark的“捕获数据包列表”窗口,以便它显示有关包含HTTP消息的TCP段的信息,而不是关于HTTP消息的信息。要让Wireshark执行此操作,请选择“Analyze->Enabled Protocols”。现在你应该看到一个Wireshark窗口,如下所示:

image-20240305220352674

这就是我们要找的——在你的电脑和gaaia.cs.umass.edu之间发送的一系列TCP段。我们将使用您捕获的数据包跟踪(和/或数据包跟踪tcp-ethereal-trace-1在http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip;(参见前面的脚注),以便在本实验的其余部分研究TCP行为。

3. TCP基础知识

请回答以下关于TCP段的问题:

  1. 用于在客户端计算机和gaia.c.s.umass.edu之间发起TCP连接的TCP SYN段的序号是多少?在段中是什么将段标识为SYN段?
    image-20240306161809649
    在首个建立连接的TCP请求中,SYN标志位为1。
    段中的倒数第2bit设置为SYN标识位。

  2. gaia.c.s.umass.edu发送给客户端计算机的SYNACK段的序列号是多少作为对SYN的回应?SYNACK段中的确认字段的值是多少?gaia.cs.umass.edu是如何确定这个值的?在段中是什么将段标识为SYNACK段?
    image-20240306161957136
    SYNACK的序号为0,确认字段值为1,并且SYN的字段值也为1,说明服务器收到了我的连接请求,并返回SYNACK确认。

  3. 包含HTTP POST命令的TCP段的序号是多少?注意,为了找到POST命令,您需要挖掘Wireshark窗口底部的数据包内容字段,在其DATA字段中查找带有“POST”的段。
    image-20240306162715565
    包含POST的字段的TCP序号为151117

  4. 考虑包含HTTP POST的TCP段作为TCP连接中的第一个段。tcp连接(包括包含HTTP POST的段)的前六个段的序列号是什么?每个片段是什么时候发送的?给定每个TCP报文段发送的时间和接收报文段确认的时间之间的差异,这六个报文段的RTT值是多少?收到每个ACK后,EstimatedRTT的值(见3.5.3节)是多少?假设EstimatedRTT的值等于第一个片段的测量RTT,然后使用第242页上的EstimatedRTT方程计算所有后续片段。

    • *注意:**Wireshark有一个很好的功能,允许您绘制每个发送的TCP段的RTT。*在“捕获数据包列表”窗口中选择从客户端发送到gaia.cs.umass.edu服务器的TCP段。选择“统计信息->TCP流图->往返时间图”。

    由于我的抓包结果干扰太多,我下面选择用作者的抓包结果。
    image-20240306163419966
    前六个段的seq分别是:156469,157929,159389,160849,162309,163769
    可以看到服务器返回ACK=159389的时间为25.867638

    ​ 返回ACK=1622309的时间为25.959852
    RTT取平均值为0.14134mm

  5. 前六个TCP区段的长度是多少?
    Len1,2,3,4,5=1460 Len6=272

  6. 对于整个跟踪,接收端最小可用缓冲区大小是多少?接收方缓冲空间的不足是否会限制发送方?
    最小窗口应该是1460. 包的实际大小小于缓冲区大小,所以不会限制发送方。

  7. 跟踪文件中是否有重传的片段?为了回答这个问题,你(在跟踪中)检查了什么?
    没有重传片段。 发送端IP为192.168.1.102,查看这个IP发送的所有包序号都没有重复。

  8. 在ACK中,接收方通常要确认多少数据?你能识别接收方正在对其他接收段进行跟踪的情况吗(参见文本中第250页的表3.2)。
    接收方累计确认

  9. TCP连接的吞吐量(单位时间传输的字节数)是多少?解释一下你是如何计算这个值的。

    image-20240306170335682

4. TCP拥塞控制在行动

现在让我们检查从客户端服务器的每单位时间发送的数据量。而不是(繁琐地! )从Wireshark窗口中的原始数据计算这些数值,我们将使用Wireshark的TCP图形工具-时序图( Stevens) - 来绘制数据。

  • 在Wireshark的“抓包列表”窗口中选择一个TCP段。然后选择菜单:*统计->TCP流图->时间序列图(史蒂文斯)。你应该会看到一个与下图类似的图,它是根据http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip中数据包跟踪tcp-ethereal-trace-1中捕获的数据包创建的(见前面的脚注):
    image-20240305221209696

在这里,每个点表示一个发送的TCP段,绘制出该段的序列号与发送时间的关系。请注意,一组相互堆叠的点代表了一系列由发送方背靠背发送的数据包。

请针对http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip**中数据包跟踪TCP -ethereal-trace-1的TCP段回答以下问题

  1. 使用*时间序列图(史蒂文斯)*绘图工具来查看从客户端发送到gaia.cs.umass.edu服务器的片段的序列号与时间图。你能确定TCP的慢启动阶段开始和结束的位置,以及拥塞避免接管的位置吗?评论测量数据与我们在课文中研究的TCP的理想行为的不同之处。
    看图看不出,我无法确认image-20240306170819963 image-2024030617085289514. 请回答上面两个问题,了解你将文件从计算机传输到gaia.css.umass.edu时收集到的踪迹

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

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

相关文章

Sparse A*算法的时间复杂度

Sparse A*(SAS)算法是A*算法的变型算法,下面将结合A*算法的流程分析SAS的时间复杂度。对于SAS算法而言,其航迹规划的时间 T T T主要由两部分组成: T s T_s Ts​:在当前结点扩展可行子结点的时间; T 0 T_0 T0​&#…

LeetCode每日一题只 快乐数

目录 题目介绍: 算法原理: 鸽巢原理: 如何找到环里元素: 代码实现: 题目介绍: 题目链接:. - 力扣(LeetCode) 算法原理: 我先简单举两个例子&#xff…

阿里云重新更新系统导致秘钥失效

报错解决方案: ssh-keygen -f "/Users/pengzhanliang/.ssh/known_hosts" -R "39.105.149.49"这个命令会从~/.ssh/known_hosts文件中移除与IP地址39.105.149.49相关的所有条目 再次尝试连接到远程服务器。这次,SSH将提示您接受新的主…

力扣hot100:239.滑动窗口最大值(优先队列/单调队列)

本题是一个经典的单调队列题。不过用优先队列也能解决。 一、优先队列 在使用优先队列时,我们会遇到这样的问题:如何将一个目标数从优先队列中弹出?如果使用stl这是办不到的,虽然可以自行实现这样的功能。但是我们可以这样思考&am…

Cesium 自定义Primitive - 圆

一、创作思路 1、创建一个自定义CustomPrimitive 2、然后根据两个点,生成圆 3、方便后期绘制圆 二、实现代码 1、在vue的包中加入turf. npm install turf/turf 1、创建一个CustomCirclePrimitive类,并加入更新的代码 export default class CustomCirclePrimitive …

面试问答之Spring进阶

文章目录 🐒个人主页:信计2102罗铠威🏅JavaEE系列专栏📖前言:🎀说说你对Spring的认识与理解🐕Bean的分类🐕 BeanFactory 接口和ApplicationContex 接口 的区别🐕SpringBe…

Text-to-SQL任务中的思维链(Chain-of-thought)探索

导语 在探索LLM在解决Text-to-SQL任务中的潜能时,本文提出了一种创新的‘问题分解’Prompt格式,结合每个子问题的表列信息,实现了与顶尖微调模型(RASATPICARD)相媲美的性能。 会议:EMNLP 2023链接&#x…

Python给图片加水印

受到“手动给证件加文字太麻烦”的感触,想用Python来实现给图片加水印,这不方便多了。 这里使用PIL模块: from PIL import Image from PIL import ImageFont from PIL import ImageDrawimg_t Image.open(cat.jpg) img_size_t img_t.size…

力扣hot100:560.和为K的子数组(前缀和+哈希表)

分析: 这个题目乍一看,数据大小用暴力解法大概率会超时,可能想用双指针,但是问题出现在 可能存在负数,也就是说即使是找到了一个答案,后面也可能存在负数和正数抵消,又是答案,因此不…

【教程】uni-app iOS打包解决profile文件与私钥证书不匹配问题

摘要 当在uni-app中进行iOS打包时,有时会遇到profile文件与私钥证书不匹配的问题。本文将介绍如何解决这一问题,以及相关的技术细节和操作步骤。 引言 在uni-app开发过程中,iOS打包是一个常见的操作。然而,有时会出现profile文…

Seata 2.x 系列【2】数据库事务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Seata 版本 2.0.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 数据库事务什么是事务事务的作用数据库事务模型显式事…

基于Java springboot+VUE+redis实现的前后端分类版网上商城项目

基于Java springbootVUEredis实现的前后端分类版网上商城项目 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…

linux上的xtrabackup更换版本

linux上安装的xtrabackup版本为8.0版本,与当前库的版本不一致,如何更换xtrabackup的版本 xtrabackup --version xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)如何下载 首先到percona的官网去下…

Excel中怎么求排名

使用Rank函数 1.在需要显示排名的单元格内,输入“RANK(数值,数值列表,排序方式)” 2.将“数值”替换为需要计算排名的单元格的地址,例如E2单元格。 3.将“数值列表”替换为排名的数值范围,例…

vue接入百度地图获取经纬度

通过城市名称和城市中心经纬度来获取当前所在地图,当前经纬度中心获取可以通过后端获取 静态文件包,替换baidu.html中的ak值,ak值通过百度地图官方网站申请 申请:百度地图API申请步骤 - 知乎 代码示例文件: 链接&a…

【Linux基础(一)】设备和文件IO

学习分享 1、Linux中的设备管理1.1、设备管理的特点1.2、设备分类1.3、设备工作原理1.4、Linux设备操作1.5、系统调用和系统API等区别 2、文件IO2.1、C库的文件操作2.2、文件描述符2.3、特殊文件描述符2.4、系统调用2.4.1、open系统调用4-12.4.2、open系统调用4-22.4.3、write系…

【李沐精读系列】BERT精读

论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 参考:BERT论文逐段精读、李沐精读系列、李宏毅版BERT讲解 一、介绍 BERT(Bidirectional EncoderRepresentation Transformer,双向Transformer编码器…

【C++】类与对象(上篇)

一.类的引入 C与C语言比较起来,C引入了一个新的概念,叫做类。那么在C中,类又是什么呢? 在C中,类与C语言中的结构体相似,但不同的是,C中的类中,不仅可以定义变量,还能定义…

时间复杂度考点总结

【2022统考真题】下列程序段的时间复杂度是( )。 int sum0; for(int il;i<n;i*2) for(int j0;j<i;j) sum; 这道题容易错选为C,正确答案是B 解答&#xff1a;i1时循环1次&#xff0c;i2时循环2次&#xff0c;i4时循环4次&#xff0c;所以循环次数…

wy的leetcode刷题记录_Day82

wy的leetcode刷题记录_Day82 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2024-3-6 前言 目录 wy的leetcode刷题记录_Day82声明前言2917. 找出数组中的 K-or 值题目介绍思路代码收获 143. 重排链表题目介绍思路代码收获 146. LRU 缓存…