互联网技术、职位及其局限性
写在前面
互联网技术大大地改变了人们的生活方式。社交、休闲、新闻、理财、出行、住宿、就餐等等,互联网在每个领域里都有各种各样的解决方案。互联网把信息传递的成本变得微乎其微,促使了信息的流动;而信息一旦流动起来,人、事、物之间的距离就变得不那么明显了,实现了“足不出户知天下、得天下”的便易。
从本世纪初的传统互联网到今天的移动互联网,互联网的应用场景越来越多,支撑它运转的硬件、软件也都经历了好几代更迭。不过从应用的层面讲,我们可以把互联网抽象成一个简单的模型(如上图《一个简单的请求链路》所示),几乎所有硬件和软件的更新,都是为了能让这个模型更快、更稳定地工作。
《白话互联网技术》将从互联网的简单模型进行展开,尝试一层层剥开它的神秘面纱。
一个简单的请求链路
当我们在浏览器中输入WhereSmile.com
,从点击“确认”(或回车)开始一直到看到页面,网络链路基本上是这样的:
- ① 我们在电脑或手机(为方便,后面统称为计算机)的浏览器里输入一个网址(比如
WhereSmile.com
),并发起了请求。 - ② 计算机通过DNS(可以类比为互联网中的通讯录,通过它可以把
WhereSmile.com
这个名称对应的IP号码找出来)得到网址所在的IP地址,于是就可以把请求发送到互联网了。 - ③ 请求在被发送到互联网之前,里面包含了源地址(我们自己计算机的IP地址)和目标地址(
WhereSmile.com
这个名称对应的IP地址),互联网会根据请求中的目的地址,把请求努力发送到目的地址所在的服务器上面。 - ④ 服务器接收到来自远方的请求,它从请求中提取出源地址、用户传入的参数(假如有参数)、用户的身份信息(假如有身份信息)等等,根据后端工程师设定的逻辑产生一定的内容,接着就把内容打包(称为响应),把这个包的目的地写成请求中的源地址(这个时候响应的目的地址是我们计算机的IP地址),然后发送到互联网上。
- ⑤ 互联网根据响应中的目的地址,把响应的数据包努力地发送到我们的电脑上。浏览器把响应中的数据拿出来,并按照特定的规范进行一定的渲染,我们就可以看到
WhereSmile.com
这个页面了。
网络链路中包含的互联网技术及职位
网络链路的过程是简单,但是里面包含了很多复杂的技术。如果读者是IT圈里的一名工程师,那么自己所做的工作很大程度上属于这个链路的一环或者几环。下面我简单罗列一下这些技术,以及每项技术所创造的职位。
- 我们可以在浏览器中输入任何网址,从而获取网址所在的页面。那么我们获取某个页面的请求时如何发出去的?在服务端返回了响应以后,浏览器如何拿出响应中所包含的内容进行渲染的?这部分涉及到浏览器内核的知识。国内腾讯、阿里、百度、360、搜狗等均有定制自己的浏览器,因此会存在浏览器研发相关的工作。
- 在浏览器中输入的网址(比如
WhereSmile.com
),一般是为了方便大家记忆,而非某台服务器的真实地址。互联网中的信息流使用IP进行定位,因此在请求发送前首先需要把网址转变成IP地址,DNS(Domain Name System,域名系统)便充当了这样一个角色。由于DNS的技术已经存在了很久,且技术发展相对成熟,定制化需求较低,因此对口的工作非常少。很难看到专职开发DNS服务器的职位,不过配置DNS是大部分运维工程师必备的技能之一。 - 当提及访问互联网服务,前提是计算机(电脑或手机)已接入互联网。如果不是使用4G网络,而是通过WiFi或网线的方式接入互联网,则涉及到多台计算机共享网络(比如一个宿舍的几个同学通过一台路由器同时上网)、4G网络与WiFi网络互相切换等问题。这里涉及到网络底层的技术,网络七层协议、四层协议等等。硬件方面有路由器研发相关的职位,软件方面有嵌入式开发工程师,产品方面有网络连接工程师(优化网络连接、切换方案)等。
- 当一个请求到达互联网,这个请求按照什么样的路线进行转发最后找到服务器的呢?对于一个千里之外的服务器,可以肯定,我们的计算机与它之间并不是由一条网线直连,而是由很多交换机和路由器节点网格连接起来的,那么请求沿着网格的哪一条进行路由的呢?计算机网络是一门包含了很多内容的基础课程,未来我可能会就其中几个关键点进行描述。职位方面,华为作为通信行业的大佬,它在通信基础设施建设上的职位可谓很多很多了。
- 请求到达服务器后,如何从请求中拿到数据,并根据这份数据执行对应的逻辑,这部分就是业务开发工程师要做的了。不得不说,这部分是技术种类最多、职位最多的一块,包含了前端工程师、后端工程师、运维工程师等几个大的种类。根据所侧重工作的不同,前端工程师可以细分成交互设计工程师、UI工程师、前端工程师(侧重编码)等,后端工程师可以细分成业务开发工程师、中间件研发工程师、性能优化工程师、测试工程师等,运维工程师可以细分成业务运维工程师、系统运维工程师、网络运维工程师等。这里需要提一下,根据技术栈的不同,后端工程师还可以细分成Java工程师、Golang工程师、Ruby工程师、PHP工程师,等等。
互联网技术的局限性
过去的二十年里,互联网技术创造了很多传奇的企业和个人;年轻人曾一度为它疯狂,包括搞技术的、搞产品的、搞投资的,等等。我也曾是这些年轻人中的一员,甚至现在也在为它痴迷,燃烧自己的激情。
不过,在肯定互联网技术潜力无限的同时,我们也应注意到它的局限性,这样才能把它的效能发挥到极致,同时不会影响我们对其他领域的投入。
互联网价值的本质是信息的流动,这种流动从某种程度上促使了物质的流动。比如网络版社交、新闻促进了人与人之间的交流,网络版理财促进了资本的更合理分配,出行订票、住宿订房和就餐预定等更便捷。不过,互联网无法替代实体经济,仅仅靠它造不出飞机、高铁、汽车、公路、房子、桌子、米饭、馒头等;对于个人来说,互联网能带给人们的也只局限于获取信息的便捷,它将不能减轻我们生存的压力、成长的烦恼,反而需要避免被它麻痹从而影响了我们个人的进步。