从物理层开始, 模拟一个广域网, 来讨论啊~

2016-11-07 18:34:35 +08:00
 uutoto

在成都某网络公司实习,今年做了些 CDN 和宽带接入网,对网络方面越来越有兴趣

那么多的协议,很复杂啊,不过那可是这么多年的进化,还有历史遗留造成的

看书学还不够刺激,所以我想啊,能不能自己模拟个广域网出来玩玩,

剧情大概是这样的:

  1. 实现两个主机的通信; 两个主机同时改变线路电压,会遇到冲突,得想方法解决了;
  2. 实现多个主机的通信; 这时我可能会考虑模拟台交换机出来了;
  3. 实现多个网络间的通信; 路由问题来啦;
  4. 实现更多配套协议; 比如啊:DHCP,动态路由;
  5. 用 CDN 等技术优化网络;
  6. 搞个 ip 协议,对上互联网;(我能想到的最浪漫的事)

可模拟个两个主机通信,最基础的是模拟这个网线,让我头疼啊,

一开始,想到纯软件来搞,先基于 udp 写个"导线 class"出来,内含信号随机抖动,丢失一部分,导线接头等等,后来纸上理了理,真麻烦;

现在想的是用树莓派,不过这方面我目前只了解 GPIO 能输入 /输出,想和宝宝们探讨下可行性:

  1. GPIO 有 Python 接口,写着爽啊,性能上,看国外网站测试结果,有几千赫兹了(C 能上 Mhz);
  2. 两台树莓派的 GPIO 互联,用杜邦线模拟网线相连.
  3. 模拟冲突域;GPIO 只有 1/0 两个状态啊,如果一个树莓派发 1,另一个树莓派同时发 0 呢?我希望它最好丢掉这个包,或者给我个随机的结果,这样好模拟下冲突域;或者,用模拟信号来发,更逼真啊,1 和 0 遇到了,信号抵消;说不定我还能试试用 8 种电压同时发信呢...
  4. 不管是用 GPIO,还是搞出个模拟信号模块,树莓派上得能模拟多个"网口",不然多口交换机就生不出来啦(至少 3 个口吧);
  5. 再弄个电磁铁,随机影响"网线(杜邦线)",让信号摇摆一下,检测下重传或者校正的协议;

暂时想到这么多,目前我还是网络菜鸟,正在补充大量理论知识,同求书籍推荐啊,<计算机网络 自顶向下>和 CCNA 已经刷了,后面排着队刷 CCNP,<TCP/IP 卷一><卷二>

等物理层方案可行,立刻开搞,我会分享出折腾日记的!

欢迎拍砖!

2286 次点击
所在节点    分享发现
19 条回复
xenme
2016-11-07 18:44:52 +08:00
你这有点跑偏了
我感觉你是要学做饭,结果现在开始研究怎么种麦子和水稻了
uutoto
2016-11-07 18:59:54 +08:00
@xenme 没偏哈,目标就是从底层做起.
chenxuhua
2016-11-07 19:27:35 +08:00
软件模拟硬件😳
sennes
2016-11-07 21:05:01 +08:00
对你来说太难了 看你的描述似乎 GPIO 的性质和基础的电路知识都不足以支撑你完成这些实验。
JohnLou
2016-11-07 21:06:06 +08:00
为什么要再造轮子啊你们,你有人家厉害吗。
sennes
2016-11-07 21:11:17 +08:00
就说一个吧: 就算用 FPGA 来模拟 PHY 芯片都是一件困难的事情了,你还想着用树莓派来完成。
uutoto
2016-11-07 22:37:29 +08:00
@JohnLou 轮子也分很多类啊,我造个拖拉机的轮子来学习。为什么不能重复造呢?
uutoto
2016-11-07 22:40:20 +08:00
@sennes 谢谢关注啊,关于 gpio 的理解偏差还请指正,我这网络性能不是很重要,先存在后完善。
billlee
2016-11-07 22:55:26 +08:00
你的数电知识基本为 0. 除了 OC 门 /OD 门,一根线在同一时间只能由一个门驱动,否则会烧电路。一个输出高电平, 另一个输出低电平,接到一根线上就和把电源正负极直接接起来没什么区别。
uutoto
2016-11-07 23:14:44 +08:00
@billlee 谢谢关注啊。数电完全为 0 啊。用 Gpio 能有啥法子么,或者其他方法。请指点一二
MartinWu
2016-11-07 23:30:45 +08:00
你有兴趣就有动力,不用管别人怎么说。找志同道合的人即可。
billlee
2016-11-07 23:45:13 +08:00
@uutoto 找本数电的书来看啊。就算我现在告诉你 GPIO 怎么做总线,你后面还会遇到各种各样的问题,比如发送和接收双方怎么同步。
另外你知不知道现在的双绞线以太网都是星型架构,总线型的只用在同轴电缆上。以太网双绞线是 full duplex 的,两台主机通信根本不会有冲突问题。
uutoto
2016-11-08 00:11:11 +08:00
@billlee 书肯定看的,发出来找专业的剧透下可行性,多点套路,少点弯路嘛
uutoto
2016-11-08 00:11:39 +08:00
@MartinWu 谢谢鼓励啊😄
Siril
2016-11-08 10:27:12 +08:00
歪楼: 似乎 wifi 天生是总线型的。

@billlee
Siril
2016-11-08 10:30:26 +08:00
楼主不如搞几套便宜的 SDR 设备开发新的通讯协议吧

--------

不是虚拟个网卡出来跑 tcp/ip ,
记得要从物理层到应用层完全定制,别用 tcp/ip 哦。
crysislinux
2016-11-08 20:11:15 +08:00
在通信领域是有类似的东西的,印象中有套软件模拟了 4G 通信。可以用家用 PC 跑起来。
uutoto
2016-11-08 23:35:32 +08:00
@Siril 太感谢啦! 真是提供了很不错的思路! 这几天下班先考察下
uutoto
2016-11-08 23:39:32 +08:00
@crysislinux 您说的好像是"4G LTE UE simulator", 翻了些文章, 现在有点 ... @_@, 哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/318784

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX