/tju-tcp

天津大学计算机网络实践

Primary LanguageCMIT LicenseMIT

利用UDP实现可靠传输实验

实验说明

本项目是基于UDP实现的可靠传输的示例代码,其中UDP层为直接调用Linux API,内核管理层为模拟,代码实现了滑动窗口管理,RTT计算等功能
本项目是天津大学2023年夏季小学期计算机网络实践的课程作业

运行

运行环境

  1. 本项目编译/src后生成的可执行文件能够在Linux系统上运行,我们使用Ubuntu 20.04版本进行编写测试,并没有测试其他内核版本和发行版,请您酌情调整
  2. 本项目使用静态IP配置,您可能需要手动更改代码中的设置,或是改变您的Linux网络配置
  3. /test中的测试文件依赖python环境和iprouter等网络配置工具,我们建议您使用教师下发的虚拟机进行测试,否则您可能需要自行配置环境

运行项目

  1. 在/下使用make可编译项目二进制文件
  2. 在/test下使用make可编译测试用二进制文件

文件结构说明

tju_tcp
├─ Makefile ------------- 生成脚本
├─ README.md ------------ 文件说明
├─ src
│  ├─ client.c ---------- 客户端主函数实现
│  ├─ kernel.c ---------- 虚拟内核实现
│  ├─ log.c ------------- 日志实现
│  ├─ operation.c ------- 数据包及缓冲区操作
│  ├─ rtt.c ------------- RTT计算实现
│  ├─ server.c ---------- 服务端主函数实现
│  ├─ time_thread.c ----- 计时线程函数实现
│  ├─ tju_packet.c ------ 可靠层包封装实现
│  └─ tju_tcp.c --------- 可靠层实现
├─ inc
│  ├─ global.h
│  ├─ kernel.h
│  ├─ log.h
│  ├─ operation.h
│  ├─ rtt.h
│  ├─ time_thread.h
│  ├─ tju_packet.h
│  └─ tju_tcp.h
├─ build
│  ├─ kernel.o
│  ├─ log.o
│  ├─ operation.o
│  ├─ rtt.o
│  ├─ time_thread.o
│  ├─ tju_packet.o
│  └─ tju_tcp.o
└─ bin
   ├─ client
   └─ server

test内文件请按照教师下发的操作说明实现

快速入门

如果您没有实现的头绪,我们建议您静下心来自顶向下阅读一遍源代码,您可以从/src/tju_tcp.c开始,逐步了解每个函数的作用

其他

本项目仅用于学习和交流,我们不对测试结果和代码的正确性复制,请遵守学术诚信原则,祝您使用愉快!