本项目是基于UDP实现的可靠传输的示例代码,其中UDP层为直接调用Linux API,内核管理层为模拟,代码实现了滑动窗口管理,RTT计算等功能
本项目是天津大学2023年夏季小学期计算机网络实践的课程作业
- 本项目编译/src后生成的可执行文件能够在Linux系统上运行,我们使用Ubuntu 20.04版本进行编写测试,并没有测试其他内核版本和发行版,请您酌情调整
- 本项目使用静态IP配置,您可能需要手动更改代码中的设置,或是改变您的Linux网络配置
- /test中的测试文件依赖python环境和iprouter等网络配置工具,我们建议您使用教师下发的虚拟机进行测试,否则您可能需要自行配置环境
- 在/下使用make可编译项目二进制文件
- 在/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开始,逐步了解每个函数的作用
本项目仅用于学习和交流,我们不对测试结果和代码的正确性复制,请遵守学术诚信原则,祝您使用愉快!