精选修改版实验三EtherealLabTCP协议Word文档格式.docx

上传人:b****5 文档编号:19506138 上传时间:2023-01-07 格式:DOCX 页数:7 大小:329.82KB
下载 相关 举报
精选修改版实验三EtherealLabTCP协议Word文档格式.docx_第1页
第1页 / 共7页
精选修改版实验三EtherealLabTCP协议Word文档格式.docx_第2页
第2页 / 共7页
精选修改版实验三EtherealLabTCP协议Word文档格式.docx_第3页
第3页 / 共7页
精选修改版实验三EtherealLabTCP协议Word文档格式.docx_第4页
第4页 / 共7页
精选修改版实验三EtherealLabTCP协议Word文档格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

精选修改版实验三EtherealLabTCP协议Word文档格式.docx

《精选修改版实验三EtherealLabTCP协议Word文档格式.docx》由会员分享,可在线阅读,更多相关《精选修改版实验三EtherealLabTCP协议Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。

精选修改版实验三EtherealLabTCP协议Word文档格式.docx

TCP报文分为头部和数据区两个部分,头部最小长度为20个字节,TCP报文格式定义如下图:

其中序号指该报文段数据区首字节的序号(TCP把数据看作有序的字节流),确认号是期望从对方获得的下一个字节的序号,窗口大小是接收方告知发送方它可用的缓冲区大小。

TCP是面向连接的传输层协议,发送数据前必须通过三次“握手”建立连接,首先客户端发送连接请求(此时SYN=1,ACK=0);

然后服务器接受请求,分配缓存和变量,返回响应(此时SYN=1,ACK=1);

客户端接受响应,分配缓存和变量,返回响应(此时SYN=0,ACK=1),TCP连接建立。

TCP发送方每发送一个报文段,就启动一个重传定时器,如果在规定的时间内没有收到接收方返回的确认,重传定时器超时,发送方将重传该报文。

从发出数据到接收到确认的往返时间记作RTT(RoundTripTime).在原始算法中,重传定时器的定时宽度为Timeout=

β*EstimatedRTT,其中EstimatedRTT为估算的从发出数据到接收到确认的往返时间。

而EstimatedRTT=α*EstimatedRTT+(1-α)*SampleRTT(注:

本实验α取0.875),这里SampleRTT是采样得到的从发出数据到接收到确认的往返时间。

TCP采用“慢启动、拥塞避免、快速重传、快速恢复”的拥塞控制算法,利用拥塞窗口变量(cwnd)控制发送速度。

其中慢启动是指TCP刚建立连接时将拥塞窗口变量cwnd设置为1个报文段大小,然后以指数方式放大cwnd,直到大于等于ssthresh(初始为最大拥塞窗口一半),进入拥塞避免阶段,进入拥塞避免阶段后,TCP采用线性增加方式放大cwnd。

无论是慢启动阶段还是拥塞避免阶段,如果发生重传定时器超时的现象,就必须回到慢启动阶段,cwnd设置为1个报文段大小,ssthresh设置为上一次拥塞窗口值cwnd的一半。

三、实验步骤与实验问题探讨【注:

实验步骤应用(x),问题用[x]】

1.捕捉从你主机到远程服务器的一次大数据量的TCP传输。

在开始研究TCP以前,我们需要在你主机与远程服务器之间进行一个文件的TCP传输,并利用Ethereal来获取TCP传输所传递的一系列数据包。

你可以访问一个网页去获取一个文件(这个文件包括了《艾丽丝仙境历险记》的ASCII码文本),存到你的主机上,然后利用HTTP的Post方法将该文件传至Web服务器。

既然我们是从你的主机向另一个主机传送大量数据,我们将使用POST方法而不是GET方法。

当然,在这一过程中我们将运行Ethereal来获取TCP报文段序列。

按如下步骤操作:

(1)打开你的浏览器,访问下列网址:

http:

//gaia.cs.umass.edu/ethereal-labs/alice.txt去获取AliceinWonderland的ASCII备份,把该文件存到你主机上的某地。

(2)然后访问下列网址:

//gaia.cs.umass.edu/ethereal-labs/TCP-ethereal-file1.html

(3)你将看到如下画面。

(4)使用“Browse”按钮输入你主机上含《Alice》文本的文件名,目前还不要按“UploadAlice.txtfile”钮。

(5)现在启动Ethereal开始抓包,按“EtherealPacketCaptureOptions”界面上的“OK“键(这里我们不需要选任何选项)。

(6)返回你的浏览器,按“Uploadalice.txtfile”键去上传文件至服务器gaia.cs.umass.edu,一旦文件上传成功,将在浏览器窗口显示一个简短的文件提示。

(7)停止Ethereal的抓包,你的Ethereal窗口看起来与下图相似。

(8)如果你无法上网,你可以下载一个trace文件包,它是遵照上述步骤在作者机器上捕捉的2。

尽管你可能已经获取了自己的数据,但是在研究下面的一些问题时你可能会发现下载一个trace文件包是很有价值的。

(注释2:

下载http:

//gaia.cs.umass.edu/ethereal-labs/ethereal-traces.zip文件,解压文件tcp-ethereal-trace-1.文件中的数据是由运行于作者机器上的Ethereal捕获的,机器执行的步骤本文正文所述.一旦你获取了trace文件,利用“File-Open”选择tcp-ethereal-trace-1文件,将它装入Ethereal,即可查看捕获数据内容)

2.初探捕获数据包

在分析TCP连接的细节之前,让我们先大体看一下trace文件.首先要过滤一下显示在Ethereal窗口的数据包,即在Ethereal窗口上方的显示过滤规则窗口输入”tcp”(小写,无引号,输入完后不要忘记回车),你看到的将是在你主机和gaia.cs.umass.edu之间传送的一系列TCP和HTTP数据包。

你应该可以看到包含SYN字段的三次握手过程,可以看到一个HTTPPOST数据报和一系列”TCPsegmentofareassembledPDU”数据报被从你的主机发往gaia.cs.umass.edu。

这是Ethereal的一种特殊方式:

表明使用了多个TCP报文段来携带一个HTTP信息,你还应看到从gaia.cs.umass.edu返回到你主机的TCP确认报文。

打开被Ethereal捕获的数据包文件tcp-ethereal-trace-1(参见注释2)。

回答如下问题:

[1]向gaia.cs.umass.edu传送文件的客户端所使用的IP地址和TCP端口号是多少?

要回答这个问题,可能最简单的方法是选择一个HTTP信息包,研究携带它的TCP数据包的细节,可以使用detailsoftheselectedpacketheaderwindow来查看

[2]gaia.cs.umass.edu的IP地址是什么?

采用什么端口号来收发TCP报文段?

若你能创建自己的trace文件,回答下列问题(自己在网络环境下做实验):

[3]你的主机使用什么IP地址和TCP端口号向远程服务器传送文件?

3.TCP基础

回答下列关于TCP报文段的问题:

[4]被用于初始化TCP连接的“第一次握手”报文段的序列号是多少?

在该报文段中,其标识位SYN、ACK取值为多少?

[5]为了响应客户端主机的“第一次握手”,gaia.cs.umass.edu发送了SYNACK报文段(即“第二次握手”),SYNACK的序列号是多少?

[6]包含HTTPPOST命令的TCP报文段的序列号是多少?

注意:

要找到这个POST命令,你需要仔细查看位于Ethereal窗口底部的数据包内容区域,在它的数据域中有一个“POST”字段,

[7]假定包含HTTPPOST命令的TCP报文段是TCP连接中的第一个报文段,在TCP连接中前六个报文段的序列号是多少(包括那个包含HTTPPOST命令的报文段在内)?

每个报文段在什么时间被发送?

对被接收的每个报文段返回的ACK是什么时候收到的?

鉴于每个TCP报文段被发送的时间与对它的确认被收到的时间之间的差值,这六个报文段每一个的往返时延是多少(RRT)?

每收到一个ACK后,EstimatedRTT的值是多少?

假定第一个报文段的EstimatedRTT值与被测的RTT值相等,将其他后续报文段的EstimatedRTT值根据实验原理部分介绍的公式进行计算。

注:

Ethereal有一个非常好的特色,它可以帮助你绘制被发送的TCP报文段的RTT图。

从“listingofcapturedpackets”窗口选择一个被从你主机发往gaia.cs.umass.edu的TCP报文段,然后选Statistics->

TCPStreamGraph->

RoundTripTimeGraph.

[8]这六个TCP报文段的长度是多少?

3

(注3:

在tcp-ethereal-trace-1文件中所有TCP报文段均少于1460字节。

这是因为该trace文件的数据是在一台安装了以太网卡的机器上采集的,这种网卡将IP数据包的最大长度限定为1500字节(40字节的TCP/IP报头和1460字节的TCP载荷)。

这个1500字节值是被以太网允许的标准最大长度。

如果你的trace文件显示一个TCP长度大于1500字节,而你的计算机使用一个以太网连接,那么Ethereal正报告一个错误的TCP报告段长度;

也可能它只显示了一个大的TCP报文段而不是多个小的报文段,而你的计算机实际上可能正传递着多个小的报文段,正如它所收到的ACK所显示的那样。

这种在报文段长度上的不一致是由于以太网卡驱动和Ethereal软件的交互导致。

如果你的主机存在这种不一致,我们推荐你采用下载的trace文件。

[9]在整个trace文件中,接收方宣布的可用缓冲区空间的最小值是多少?

有没有出现由于接收方缓冲区已满而阻碍了发送方发送数据的情况?

[10]在trace文件中,有被重传的报文段吗?

为了回答这个问题你将检查什么信息?

[11]在一个ACK包中接收方通常确认几个报文段?

你能找到一些例子说明接收方正在确认多个被接收的报文段吗?

[12]TCP连接的吞吐量(每单位时间被传送字节)是多少?

解释你是怎么计算这个值的?

4.TCP拥塞控制

现在让我们检查一下单位时间从客户端到服务器发送数据量。

我们并不是从Ethereal窗口的原始数据来计算,而是使用Ethereal的一项TCP画图功能——Time-Sequence-Graph(Stevens)来画图表示已得到的数据。

选择“listingofcaptured-packets”窗口中的一个TCP报文段,然后选择菜单Statistics->

Time-Sequence-Graph(Stevens),你将看到一幅类似下图的图,这幅图是根据trace文件tcp-ethereal-trace-1中捕获的数据生成。

在图中,每一个点代表一个被发送的TCP报文段,每个点对应值分别是报文段的序列号和它被发送出去时的时间,注意:

堆在一起的一组点代表被发送方紧挨着发送出的一系列包。

根据http:

//gaia.cs.umass.edu/ethereal-labs/ethereal-traces.zip上的tcp-ethereal-trace-1分组trace文件回答下列有关于TCP报文段的问题:

[13]使用Time-Sequence-Graph(Stevens)画图工具来观察从客户端发往gaia.cs.umass.edu服务器的报文段的序列号与时间点图,你能确定TCP的慢启动阶段从哪开始到哪结束吗?

哪里开始执行拥塞避免?

在这个来自于“真实世界”的trace文件中,不是所有数据都象课本上讲的那样整洁有序。

[14]评论一下被测量的数据在哪些方面与我们在课本上研究的TCP的理想化的行为不同?

[15]你从你的主机传送一个文件至gaia.cs.umass.edu服务器上这一过程获得trace文件,依据此文件回答上述[13]和[14]两个问题。

(附注:

下图是在另一个网络环境下的捕获结果)

(注:

文档可能无法思考全面,请浏览后下载,供参考。

可复制、编制,期待你的好评与关注)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1