Featured image of post Computer Network

Computer Network

the journal of learning computer network

王道计网

上个寒假,我在家学完了王道的计算机网络。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 设备也会被释放.