网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

TCL脚本用于通过TCP协议生成FTP流量。

更新时间:2026年03月27日   作者:spoto   标签(Tag):

Tcl脚本,也被称为工具命令语言脚本,是一系列用于控制软件应用程序的命令。Tcl是一种高级的、通用的、解释型的动态编程语言。在本文中,我们将学习如何编写工具命令脚本,以模拟两个节点之间的TCP连接,并在ns2环境中实现FTP流量的传输。此外,我们还将了解如何显示数据包的吞吐量、丢失数、接收数和发送数等信息。

生成用于通过TCP发送FTP流量的TCL脚本的步骤:

该程序中使用的路由算法是距离矢量路由协议。如果您不熟悉网络模拟器以及工具命令语言,那么可以先了解一下这个协议的内容。https://www.spoto.net/computer-networks/basics-of-ns2-and-otcl-tcl-script/现在,让我们逐步了解TCL脚本在创建通过TCP协议的FTP流量方面的实现过程。

步骤1:

首先,我们需要创建一个网络模拟器对象,并初始化路由协议。rtproto即距离矢量路由协议。DV).

设置新的模拟器[new Simulator]
$ns rtproto DV

步骤2:

接下来,我们使用这些节点来创建两个节点:node 0和node 1。节点在网络模拟器对象中,该实例被表示为一个具体的对象。

设置节点0为[$ns node]
设置 node1 为 [$ns node]

步骤3:

下一步是创建跟踪文件和命名文件。它们的文件名分别为 out.tr 和 out.nam。我们需要做的就是使用跟踪文件对象来创建一个新的跟踪文件,其名称为 out.tr,然后以写入模式打开该文件。接下来,我们需要在整个仿真过程中,将所有与路由相关的信息记录到跟踪文件中。追踪所有相关事物/信息对于nam文件,我们也会采取同样的处理方式。namtrace-all.

设置 tf [open out.tr w]
$ns trace-all $tf
设置,名词形式。[open out.nam w]
$ns namtrace-all $nf

步骤4:

现在,我们使用 duplex-link实例来在节点之间建立双向连接。在这里,我们需要指定三个参数:数据速率(1Mb)、延迟时间(10毫秒),以及队列的类型。DropTail).

$ns duplex-link $node0 $node1 1MB 10毫秒 丢包统计

步骤5:

这些代理的作用是负责在网络中的各个节点之间传递信息。现在,我们需要……TCP这些代理负责完成这项任务。这些代理的初始化方式如下。此外,这些代理分别被连接到节点0和节点1上。下一步就是将这些代理相互连接起来。

设置 tcp2 [新的代理/TCP]
$ns attach-agent $node0 $tcp2
设置 sink2 [新的Agent/TCPSink]
$ns attach-agent $node1 $sink2
$ns connect $tcp2 $sink2

步骤6:

我们的下一步是进行初始化操作。FTP可以将流量连接到源地址tcp2上。这可以通过创建一个FTP对象来实现,从而将流量与tcp2相连。

设置 traffic_ftp2 [新的应用程序/FTP服务器]
$traffic_ftp2 attach-agent $tcp2

步骤7:

接下来,我们添加以下内容:完成该过程包括将所有数据写入到跟踪文件中,然后再运行nam文件。

proc finish {} {
全球NS NF TF
$ns flush-trace
关闭 $nf
关闭 $tf
执行 out.nam 文件。
退出方式:0
}

步骤8:

最后,我们结束了这次讨论。TCL该文件通过为FTP代理和run命令安排事件来创建文件。其中,流量从时间1.0开始,到时间3.0时停止。模拟在时间5.0时结束。这个文件的时间长度可以灵活调整,可以更长或更短。该文件以run实例作为结尾。

$ns at 1.0 “traffic_ftp2 start”
$ns在3.0版本中实现了“traffic_ftp2 stop”功能。
$ns在5.0版本中处于“完成”状态。
$ns run

AWK文件的创建

让我们来了解一下如何创建一个吧。awk文件可以如下查看所接收的数据包数量、被丢弃的数据包数量以及整体吞吐量。

步骤1:初始化部分

  • 该awk文件的开头部分是初始化部分,这部分的内容在文档中有明确说明。开始它包含了所有必要的常量或变量的初始化操作。在这里,我们需要使用 send、received 和 dropped 这些变量来分别记录已发送、已接收以及被丢弃的数据包。此外,我们还需要开始和结束传输过程所需的启动和停止值。
开始{
send=0;
received=0;
dropped=0;
start=1.0;
停止条件 = 3.0
}

步骤2:内容块的执行

  • 下一个块就是内容块了。在这一部分中,各项操作都会按照顺序执行。有一些变量,比如$1和$5,它们各自有不同的含义。这些变量与跟踪文件中的某种模式或逻辑相对应。表达式“/+/”表示数据包被发送出去了;“r”表示数据包被接收到了;“d”则表示数据包被丢弃了。对于所有这些操作来说,都使用变量$1来表示相应的状态。$5则是一个标志,它用来与字符串“TCP”进行关联。
{
如果 $1 等于 “/+”
{
send++;
}
如果 $5 等于 “tcp”,那么……
{
如果 $1 等于 “r”,那么……
{
received++;
}
}
如果 $1 等于 “d”,那么……
dropped++;
}
}

步骤3:结束块

  • 那个结束该区块是链中的最后一个区块。awk文件该工具可以打印出接收到的数据包数量以及整体吞吐量。如果FTP流量尚未被初始化,那么就不会有任何数据包被发送或接收。在这种情况下,跟踪文件为空。否则,我们就可以打印出所需的参数了。
结束{
如果 send 的值为“0”,且 received 的值也为“0”,则为真。
{
“打印‘空跟踪文件’”
}
print “接收到的数据包数量:” received
“吞吐量 = (接收的字节数 * 8) / (开始时间 - 结束时间) 比特/秒”
“丢弃的数据包数量 = ” dropped
}

网络模拟器的可视化展示

我们可以想象出该输出的样子。网络模拟器如下所示。

  • 当点击图中用绿色标记的开始按钮时,流量会从1.0开始,最终达到3.0。与此同时,awk文件会计算并存储需要计算出的数值。
  • 此外,为了评估网络流量情况,我们可以计算awk文件中的吞吐量以及丢失的数据包数量。以下命令用于运行awk文件。
awk -f filename.awk filename.tr
  • 最终得到的输出结果如下所示。

注意:由于节点之间的连接在任何时刻都不会被断开,因此不会出现数据包丢失的情况。不过,可以通过调整模拟程序来在特定的时间间隔内实现这种断开情况,这种情况下仍有可能出现数据包丢失的情况。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料