王道计网
上个寒假,我在家学完了王道的计算机网络。some notes here: unp
unp
发现一本好书,unix network programming . 2024 年初的时候买的这本书,但是 2024 的最后一个星期才开始看,并在 2024-12-31 看完了, 朝花夕拾了,属于是。
这本书怎么说,socket 部分讲的挺好的, 他相当于是 advanced programming in the unix environment 的网络编程部分。 但是一些更加底层的,27-ip 选项,28-原始套接字,29-数据链路访问,反正我是没看太明白, 可能是因为我码力不够。
值得反思的是:socket 讲得好,是因为 unix 的基本 api 在过去三十年只是增量更新, 大部分都没发生变化,当然也有一些被 deprecated 了。 但是,偏底层的,网络实现部分,随着硬件技术的发展,已经发生了许多变化了。
比方说一个比较有意思的,29-数据链路访问,他提到的几个方法似乎都不太行,
感觉可以替换成 /dev/net/tun
.
虽然我没有看过 apue, 我看了另一本书,the linux programming interface.
There is the example code in unp: unpv13e
cs144
花了 3 天时间,快速过完了 cs144. 发现中文配音不错,适合东大宝宝的体质。
tapip
发现一个不错的项目 tapip.
他就是利用了上面提到的 /dev/net/tun
的 tap mode 来实现一个 net stack.
于是乎,我想要用 rust 重写 tapip-rs. 但是我发现了重写的难度,就是在我不太理解业务本身的情况下去重写,最后就会写出四不像的 💩. 我觉得我应该去看看 smoltcp. 打算先看看 smoltcp 的代码,然后抽出 smoltcp 的某个子集:针对 tap 设备的 net stack.
拍案:盲目重写只会害了你。
tun/tap
no persist 表示: 进程释放后, 申请的 tun/tap 设备也会被释放.