最小网元设计

阶段零:序言

项目预期

设计具有多层结构的网元,并将多个网元构成一个网络,实现信息、文件在多个网元之间的传递。并利用网元搭建混合组网,实现信息在多个网元之间的收发。

阶段性目标

  1. 阶段一:设计
    设计分层方案,即层次划分、功能设计以及端口分配。
  2. 阶段二:交互
    在数据链路层实现帧定位、差错检测、差错控制以及流量控制功能。
    在应用层实现字符编码方案以及图片编码方案。
  3. 阶段三:共享
    二层交换机的实现,即按目的转发、反向地址学习以及未知广播。
    实现交换机成环设计。
    最小网元设计
  4. 阶段四:路由
    实现网络层的路由转发功能,即路由表的建立以及静态路由/动态路由的实现。
    搭建混合组网(由2台主机、1台交换机以及3台路由器组成)。
    最小网元设计

项目入门指南

入门流程

  1. 阅读项目指导书,大致了解项目内容
  2. 掌握物理层模拟软件使用方法以及配置文件的使用
  3. 使用自己编写的套接字程序,尝试连接物理层
  4. 准备好VS(如果你选择C&C++)

关于编程的建议

  • C&C++,visual studio 2019(community)<课程组推荐>
  • 整个项目的基础是套接字编程,所以在项目开始之前应搞定套接字编程内容
  • 一定要掌握select机制,这是实现非阻塞的关键<重要>
  • 如果编程实在有困难,可以尝试python,班上也有同学使用,不过还是建议C&C++
  • 如果课程设计没有大改变的话,课程组会提供网络层源码,虽然对各层功能实现没有实质性的代码帮助,但可以使你将重心放在各层功能的设计上,而不是纠结于层与层之间的连接,网络层框架适用每一层,刚开始你可能会放弃这段源码(笔者在这里就吃了很大的亏,用自己写的乱七八糟的框架做完了阶段二,结果阶段三无法进行下去),所以,在搞懂socket编程和select机制的基础上,认真钻研源码是可以加以运用的。强推源码!!!强推源码!!!强推源码!!!

心得体会

刚开始入手这个项目时和正在满世界找教程的各位一样不知所措,socket??网元??OSI??这都哪跟哪啊。然而我面对的现实是查无此项目,最接近的是一位信通学长的教程,不过写了一些就没有继续写下去了,所以,最终还是老老实实的打VS,开启这段漫长的编程之旅。
你们还是很幸运的,可以站在前人的肩膀上,我将尽可能的给出本项目的详细指导,也希望各位能有自己的想法,代码方面我本着共同进步的原则决定还是不贴出来的好,编程不算很困难,耐心的做还是可以独立完成的。