草庐IT

Wireshark实验 - TCP

抓抓璐璐小可爱(๑• . •๑) 2023-05-26 原文

Wireshark实验 - TCP

官方英文文档:Wireshark_TCP_v6.0.pdf

以下内容为笔者翻译:


Wireshark 实验: HTTP v6.0

《计算机网络:自顶向下方法(第6版)》补充材料,J.F. Kurose and K.W. Ross

“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。” ——中国谚语

© 2005-2012, J.F Kurose and K.W. Ross, All Rights Reserved


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

1. 捕获从计算机到远程服务器的批量 TCP 传输)

在开始我们对 TCP 的探索之前,我们需要使用 Wireshark 来获取文件从计算机到远程服务器的 TCP 传输的数据包内容。您可以通过访问一个网页,在网页上输入您计算机上存储的文件名称(包含 Alice in Wonderland 的 ASCII 文本),然后使用HTTP POST 方法将文件传输到 Web 服务器(见文中第 2.2.3 节)。我们使用POST 方法而不是 GET 方法,因为我们希望将大量数据从您的计算机传输到另一台计算机。当然,我们将在此期间运行 Wireshark 以获取从您的计算机发送和接收的 TCP 区段的内容

执行以下步骤:

  • 启动Web浏览器在实验网站查看Alice in Wonderland 的 ASCII 档案文件。将此文件存储在计算机上的某个位置

  • 接下来去这里

  • 你将会看到如下图的网页

  • 使用此表单中的“选择文件”按钮选择包含 Alice in Wonderland的文件。 这个时候不要按下Upload alice.txt file按钮

  • 启动 Wireshark 并开始数据包捕获 (Capture-> Start),然后在 Wireshark 数据包捕获选项视窗上按 OK (我们不需要在此处选择任何选项)(详细操作因Wireshark 版本略有不同)

  • 返回浏览器,按“Upload alice.txt file”按钮将文件上传到 gaia.cs.umass.edu
    服务器。文件上传后,浏览器窗口中会显示一条简短的祝贺消息。(如下图所示)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGD0XZkG-1648111080355)

  • 停止 Wireshark 数据包捕获。 您的 Wireshark 视窗内容应该类似于下面显示
    的内容。

  • 如果您无法在实际的网路上运行 Wireshark,则可以下载在作者的计算机上执行上述步骤时捕获的数据包跟踪文件。当您探索下面的问题时,即使您已经捕获了自己的传输内容并使用它来回答下面的问题,您也可能会发现这份下载的跟踪包很有参考价值。下载链接

2. 跟踪包的初步观察

  • 首先,在 Wireshark 视窗顶部的显示的过滤器指定窗口中输入“tcp”(小写,无引号,并且不要忘记在输入后按 enter 键!),过滤 Wireshark 视窗中显示的数据包。
    ps:
    这里有一个小trick,实际上在我们捕获的时候,还没有点击发送就会捕获到很多别的tcp报文段,这会对我们的观察造成很大的干扰,这个时候就需要筛选,根据上一个DNS实验可以知道,我们可以通过nslookup命令来向DNS服务器请求一个url的ip地址,我们可以从提交页面看到,实际的请求页面的url为 gaia.cs.umass.edu (注意,不应该有http://),然后获取它的ip地址

    获取到之后我们可以在WireShark中通过ip进行筛选(筛选那些tcp报文段且发送或者接受的ip是128.119.245.12)

  • 您应该看到的是计算机和 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 区段。

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

  1. 将文件传输到 gaia.cs.umass.edu 的客户端计算机(源)使用的 IP 地址和 TCP 端口号是什么

100.120.23.92:55167
这里发现其实最开始不应该用dns查询ip的。。。正确的做法应该是根据我们捕获到的报文,按照http协议进行筛选,找到POST报文,然后就可以查看到IP和TCP端口号
(注意下面两个http请求是乱入的~)

  1. gaia.cs.umass.edu 的 IP 地址是什么?在哪个端口号上发送和接收此连接的 TCP 区段?

128.119.245.12:80
答案在上面的图中就有体现

  1. 用于在客户端计算机和 gaia.cs.umass.edu 之间启动 TCP 连接的 TCP SYN 区段的序列号是什么?将区段标识为 SYN 区段的区段有什么功能?

Seq:3794991032
此时筛选条件应该为
tcp and (ip.dst == 128.119.245.12 or ip.src == 128.119.245.12) 表示仅查看二者间的tcp报文段
筛选后可以看到如下的tcp报文段(感觉第二行的报文段,也就是55168端口向目标的80端口发送tcp连接建立请求有点奇怪,因为根据第一题可以知道,我们发送的端口号使用的是55167,而且从后续的报文交换来看,也并没有55168端口的事,所以猜测是http协议希望并行传输~)

忽略图中的第二行报文段,从图中可以看到第一行WireShark用方框给我们标出是SYN,点开后可以发现,初始化的序列号(Seq)是3794991032,Seq的功能为防止此前发送的报文段滞留在网络中,影响到下一次的TCP连接(具体的影响方式为:如果我们的TCP报文都从0开始编号,那么假设我第一次的TCP连接某一个报文段的Seq为1500,由于网络问题,滞留在了网络中,等到这次的TCP连接结束后,一段时间后,上述两个主机进行第二次TCP连接时,可能滞留的报文段神奇地被发送到了接受主机,那么他就会把这个报文当作此时发送方发送的报文段,从而产生错误。而随机生成Seq的话,第一次的滞留的报文就算发送给接受主机,也会因为Seq和Ack不匹配而被接受主机拒绝接收~)

  1. gaia.cs.umass.edu 发送给客户端计算机以回复 SYN 的 SYNACK 区段的序列号是多少?SYNACK 区段中的 Acknowledgment 栏位的值是多少?Gaia.cs.umass.edu 是如何确定此 Acknowledgment 的数值的?在将区段标识为 SYNACK 区段的区段在连线中有什么功能

Seq:600963478
Ack:3794991033(请求报文Seq+1)
功能:告知TCP请求的建立者,已经收到了连接建立请求并允许连接

上图为SYN ACK报文,是TCP连接建立的第二步,可以看到ACK和SYN标志位都是1

  1. 包含 HTTP POST 命令的 TCP 区段的序列号是多少? 请注意,为了找到
    POST 命令,您需要深入了解 Wireshark 窗口底部的数据包内容⫿段,在其
    DATA 栏位中查找带有“POST”的区段。

Seq:3794991033
双击打开第一个标记为[PSH,ACK]的报文段,可以通过二进制形式查看

  1. 在跟踪文件中是否有重传的区段?为了回答这个问题,您检查了什么(在跟踪包中)?

点击:统计->TCP流形图->时间序列(Stevens),可以得到下图,可以看到随着时间的增大,序号并不是一直在增大的,有部分重传的序号~

下面的往返时间,有点抽象

有关Wireshark实验 - TCP的更多相关文章

  1. 网络实验之RIPV2协议(一) - 2

    一、RIPV2协议简介  RIP(RoutingInformationProtocol)路由协议是一种相对古老,在小型以及同介质网络中得到了广泛应用的一种路由协议。RIP采用距离向量算法,是一种距离向量协议。RIP-1是有类别路由协议(ClassfulRoutingProtocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持非连续子网(DiscontiguousSubnet)。RIP-2是一种无类别路由协议(ClasslessRoutingProtocol),支持路由标记,在路由策略中可根据路由标记对

  2. 计算机网络笔记:TCP三次握手和四次挥手过程 - 2

    TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报

  3. 第1部分 实验拓扑、终端服务器 - 2

    目录1.1访问Cisco路由器的方法1.1.1通过Console口访问路由器1.1.2通过Telnet访问路由器1.1.3终端访问服务器1.2终端访问服务器配置命令汇总1.1访问Cisco路由器的方法    路由器没有键盘和鼠标,要初始化路由器需要把计算机的串口和路由器的Console口进行连接。访问Cisco路由器的方法还有Telnet、WebBrowser和网络管理软件(如CiscoWorks)等,本节讨论前2种。1.1.1通过Console口访问路由器    计算机的串口和路由器的Console口是通过反转线(Rollover)进行连接的,反转线的一端接在路由器的Console口上,另一

  4. 【操作系统实验】Ubuntu Linux 虚拟机用户管理 - 2

    文章目录一、用户二、用户分类1、普通用户2、超级用户3、系统用户三、用户相关文件1、/etc/passwd文件2、/etc/shadow文件四、用户管理命令1、useradd2、adduser3、passwd4、usermod5、userdel一、用户Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。在Linux系统中,任何文件都属于某一特定用户,而任何用户都隶属于至少一个用户组。用户名(username):每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系

  5. ruby - yarn 未初始化常量 Socket::SOL_TCP - 2

    我在这里尝试使用yarn,遇到了一个可能与ruby​​相关的问题。在执行任何yarn命令,我收到错误.../.rvm/gems/ruby-2.3.0/gems/yarn-0.1.1/lib/yarn/server.rb:14:in':uninitializedconstantSocket::SOL_TCP(NameError)错误堆栈:$yarn.../.rvm/gems/ruby-2.3.0/gems/yarn-0.1.1/lib/yarn/server.rb:14:in':uninitializedconstantSocket::SOL_TCP(NameError)Didyoume

  6. OSPF综合实验 - 2

    文章目录实验要求实验思路IP地址规划路由实验配置R1上配置R2上配置R3上配置R4上配置R5上配置R6上配置R7上配置R8上配置R9上配置R10上配置R11上配置R12上配置实验测试R10pingR4的环回R10pingR12的环回R10pingR1实验要求R4为ISP,其只能配置IP地址;R4与其他所有直连设备间均使用公有IP;R3-R5/6/7为MGRE环境,R3为中心站点;整个OSPF环境IP基于172.16.0.0/16划分;所有设备均可访问R4的环回;减少LSA的更新量,加快收敛,保障更新安全;全网可达实验思路IP地址规划公网IP随便配置,这里我R3-R4的网段为34.1.1.0/2

  7. ruby - 你如何使用 Ruby 找到空闲的 TCP 服务器端口? - 2

    我正在尝试创建一个使用一次的HTTP服务器来处理单个回调,并且需要帮助在Ruby中找到一个空闲的TCP端口。这是我正在做的事情的框架:require'socket't=STDIN.readport=8081whiles=TCPServer.new('127.0.0.1',port).acceptputss.getss.print"HTTP/1.1200/OK\rContent-type:text/plain\r\n\r\n"+ts.closeexitend(它回显标准输入到第一个连接然后死掉。)如何自动找到空闲端口进行监听?这似乎是在远程服务器上启Action业然后使用唯一作业ID回调

  8. SQL Server 创建用户,用户授权,实验报告 - 2

    首先我们得有一个数据库,数据库里有表职工表: 部门表:接下来的操作都是针对以上的表其次我们来建立登录用户createlogin王明withpassword='123456'--创建登录用户,登录名为王明,密码为123456.创建登录名之后,登录用户还不能对数据库进行操作,还要对登录用户创建数据库用户createuserU1forlogin王明--创建数据库用户关联登录用户这时候登录王明的账户,数据库会自动映射到数据库用户U1,由U1来进行对数据库的操作。不过,只创建了用户,而用户还没有获得对数据库的操作权力,我们就要对数据库用户进行权力分配有时间的小伙伴可以额外花点时间点击链接了解详细1)设置

  9. C#面向对象程序设计课程实验五:实验名称:C#面向对象技术 - 2

    C#面向对象程序设计课程实验五:实验名称:C#面向对象技术实验内容:C#面向对象技术一、实验目的及要求二、实验环境三、实验内容与步骤3.1、实验内容:测试类,实现多态3.2、实验步骤3.2.1、实验程序3.2.2、实验运行结果3.3、实验内容:创建一个Vehicle类,并将它声明为抽象类3.4、实验步骤3.4.1、实验程序3.4.2、实验运行结果四、实验总结实验内容:C#面向对象技术一、实验目的及要求(1)掌握类的继承特性;(2)学会使用C#实现类的继承性;(3)理解类的多态特性;(4)学会使用C#的方法重写;二、实验环境MicrosoftVisualStudio2008三、实验内容与步骤3.

  10. 计算机系统实验二——bomblab(炸弹实验) - 2

    实验题目bomblab实验目的使用gdb工具反汇编出汇编代码,结合c语言文件找到每个关卡的入口函数。然后分析汇编代码,分析得到每一关的通关密码。进一步加深对linux指令的理解,对gdb调试的一些基本操作以及高级操作有所了解。熟悉汇编程序,懂得如何利用汇编程序写出C语言程序伪代码,熟悉并掌握函数调用过程中的栈帧结构的变化,熟悉汇编程序及其调试方法。实验环境个人PC、Linux32位操作系统、Ubuntu16.04实验内容准备阶段将实验压缩包解压并找到本人所用到的实验文件夹bomb7,复制到linux系统中,打开文件夹得到bomb、bomb.c、README文件;阅读README等实验相关材料,

随机推荐