前面介绍的 IP 协议、TCP 协议和 UDP 协议分别属于网络层和传输层协议,都是属于网络通信中的基础部分,接下来,要开始介绍网络通信中应用层协议,应用层协议非常丰富,也是我们日常打交道最多的部分:
不论是我们前面介绍过的 DNS 域名解析协议,还是我们日常 Web 网站依赖的 HTTP 协议,以及收发电子邮件时涉及到的 IMAP、POP、SMTP 协议,用于远程登录的 SSH 协议,乃至用于远程文件传输的 FTP 协议,都是属于应用层协议,后面我们会逐一对这些常见的应用层协议进行介绍,尤其要重点介绍的是 HTTP 协议,它是我们日常开发 Web 网站所离不开、绕不过的。
TCP 和 IP 等下层协议不依赖于上层应用类型,适用性非常广,而应用协议则是为了实现某种应用设计和创造的协议。
上层应用可以直接共享传输层及以下的基础部分,开发者一般只需要关心选用哪种应用协议、如何开发即可,而不必担心应用中的数据以何种方式发送到目标主机,这也是我们日常熟悉的开发方式。
有了高级开发语言和各种第三方工具、扩展包以及 Web 开发框架,甚至连应用协议层都替我们做好了封装,我们只需要按照对应的文档专注于业务迭代开发即可,但是作为一个有追求的程序员,不仅要有使用轮子实现功能的能力,玩到后面,还要有定位和修复问题的能力,以及扩展乃至自己造轮子的能力,这样一来,就对我们的能力和知识储备有了更高的要求,所以了解这些协议底层的工作原理对有更高追求的程序员来说,至关重要。不管是定位问题,还是自己造轮子,甚至创造性解决问题,都大有裨益,你会看到很多上层的应用架构和设计方案,不仅要有扎实的底层基础,而且往往也会从底层借鉴实现思路。
明天开始,我们就会开启应用层协议之旅。