远自初上大学左右(2003年左右),我便有一次机会基于一个freebsd版本的操作系统给亲戚的工厂安装软件出口网关,然而印象中拨号非常不稳定,最终以失败告终。
大学时,我开始给宿舍拉电信2M的ADSL网线,并编写基于libpcap的局域网数据包监听工具来监听QQ号,毕业后陆续在路由器、交换机、云计算网络、SDN&SDWAN等网络通信领域工作,这些年的工作经验对我而言,有这些感触:
- 除非你选择在华为这样的公司只负责复系统中的一小部分,否则以我的经验来看,具备较好的系统编程功底,会非常有助于你更好的理解通信网络,因为你可能会逐渐懂得一个数据包是如何从网卡到应用程序的过程,而这过程中,又需要大量系统编程的知识,如锁、多线程争用等。
- 对我个人而言,需要多年的积累与思考才能逐渐明白各种网络通信协议的工作机制以及协议制作者的思考,比如我以高绩效从华为离职多年后,才逐渐对在华为的工作内容有了进一步的理解。也难怪网络领域的国外工程师普通年纪偏大。
- 互联网是一个天然的分布式系统(TODO)
基于这些原因,以及当年需要给同事进行培训的原因,我感到自己很有必要编写一本讲网络通信领域内的书籍,将网络通信与系统编程技术进行融合,既总结这些年自己的收获,同时也能给帮助到有志于在此领域工作的新人,应该是一件比较有意思的事。
是为记,此书将在我的工作之作,持续更新。