4. 简易TCP协议

在完成本实验所有实验要求,并且此前完成了所有基础实验的情况下,实验分给予20分满分。

在基础实验的传输层,我们实现了完整的UDP协议,这并不困难。而另一个在传输层被广泛使用的TCP协议,其完整实现的难度不亚于目前基础实验的整个协议栈。为了降低难度,我们在net-lab工程上添加了TCP协议框架,你只需要补充完整tcp.c文件中的tcp_in函数,并通过实验自测。

4.1. 实验自测

TCP自测需要通过main测试。

../_images/tcp-1.jpg

接着,选择“在终端中运行”

../_images/tcp-2.jpg ../_images/tcp-3.jpg

打开 wireshark,选择物理机的真实网卡作为抓包对象,并设置过滤条件为:tcp

打开TCP&UDPDebug调试工具,点击“创建连接”,类型选择“TCP”,目标 IP:192.168.254.13( 该目标IP地址需要改成你自己代码中config.h中定义的IP地址 ,关于目标IP地址的定义可参考 Windows开发环境搭建),目标端口号:61000,本机端口号随机。设置完成,点击创建。

../_images/tcp-4.jpg

点击连接

在TCP&UDPDebug调试工具的发送窗口输入“abc”测试字符串,点击发送。此时UDP调试工具能够接收到虚拟网卡回送的数据包。如下图所示。

../_images/tcp-5.jpg

此时,Wireshark上也有数据包的交互。

../_images/tcp-6.jpg

4.2. 实验提交

请提交实验报告和代码。

实验报告需要给出设计方案、实验结果及分析。