你好,我是Chris。现在在亚马逊任职工程师。本硕留学美国,之后在美一直工作至今,本科方向通信,研究生毕业于美国纽约大学 - 研究网络方向。从毕业至今,我一直从事软件工程师的工作,包括前端,后端,devops,架构。做过资深工程师也做过Tech Lead,有着丰富的和网络相关的经验。经过多年的摸爬滚打深深的体会到网络协议和数据机构还有算法一样都是必备的基础知识。
- 前端 - 比如怎么去优化网页的加载,包括DNS,TCP等等。。
- 后端 - 为什么需要HTTPS?为什么HTTP1.1已经不够好了,我需要HTTP2 等等。。
- Devops - 有什么部分可以自动化,申请SSL怎么自动化,Load Balancer怎么自动化等等。。
- 架构 - 考虑吞吐量,网络互通等等。。
以上只是一些简单的例子,现实中很会有更多于网络协议相关的例子。可以说是数不胜数。再比如比较火的容器技术Docker,网络部分其实才是最难和最核心的部分。不知道你有没有遇到过以下的情况
- 对协议名HTTP,TCP,UDP,DNS,IP 只知其名,不知其用和原理。
- 在Linux中的众多网络相关的指令中,不知道使用哪个指令来进行网络的诊断。
- 对于IP地址和子网掩码完全不知如何入手。
- 对于TCP这种网络的核心,只知道握手和分手,其他一概不知。
- 设计API的时候,怎么可以让API更安全更高可用。
- 面试的时候被问到,只得沮丧的低头。
如果你有以上的问题,那么恭喜你,你找到组织了。因为编程不可能离开网络协议。