在成都某网络公司实习,今年做了些 CDN 和宽带接入网,对网络方面越来越有兴趣
那么多的协议,很复杂啊,不过那可是这么多年的进化,还有历史遗留造成的
看书学还不够刺激,所以我想啊,能不能自己模拟个广域网出来玩玩,
剧情大概是这样的:
- 实现两个主机的通信; 两个主机同时改变线路电压,会遇到冲突,得想方法解决了;
- 实现多个主机的通信; 这时我可能会考虑模拟台交换机出来了;
- 实现多个网络间的通信; 路由问题来啦;
- 实现更多配套协议; 比如啊:DHCP,动态路由;
- 用 CDN 等技术优化网络;
- 搞个 ip 协议,对上互联网;(我能想到的最浪漫的事)
可模拟个两个主机通信,最基础的是模拟这个网线,让我头疼啊,
一开始,想到纯软件来搞,先基于 udp 写个"导线 class"出来,内含信号随机抖动,丢失一部分,导线接头等等,后来纸上理了理,真麻烦;
现在想的是用树莓派,不过这方面我目前只了解 GPIO 能输入 /输出,想和宝宝们探讨下可行性:
- GPIO 有 Python 接口,写着爽啊,性能上,看国外网站测试结果,有几千赫兹了(C 能上 Mhz);
- 两台树莓派的 GPIO 互联,用杜邦线模拟网线相连.
- 模拟冲突域;GPIO 只有 1/0 两个状态啊,如果一个树莓派发 1,另一个树莓派同时发 0 呢?我希望它最好丢掉这个包,或者给我个随机的结果,这样好模拟下冲突域;或者,用模拟信号来发,更逼真啊,1 和 0 遇到了,信号抵消;说不定我还能试试用 8 种电压同时发信呢...
- 不管是用 GPIO,还是搞出个模拟信号模块,树莓派上得能模拟多个"网口",不然多口交换机就生不出来啦(至少 3 个口吧);
- 再弄个电磁铁,随机影响"网线(杜邦线)",让信号摇摆一下,检测下重传或者校正的协议;
暂时想到这么多,目前我还是网络菜鸟,正在补充大量理论知识,同求书籍推荐啊,<计算机网络 自顶向下>和 CCNA 已经刷了,后面排着队刷 CCNP,<TCP/IP 卷一><卷二>
等物理层方案可行,立刻开搞,我会分享出折腾日记的!
欢迎拍砖!