再对比计算机网络:有以IP协议为基础的TCP协议,以TCP协议为基础的HTTP协议,以TCP协议为基础的FTP协议等。这里HTTP和FTP是同一层次的两种不同协议。
如下图:
高层3:HTTP协议、FTP协议 (应用层)
中层2:TCP协议、UDP协议 (网络层
底层1:IP协议 (传输层)
我们通常把上图中的底层1和中层2合在一起称为TCP/IP协议。所以,协议并不一定非要分层,有时候一种协议是几层协议的一个结合,事实上,协议分层并不是必须的。
那么有没有比“英语”更底层的协议呢?当然有。但一般我们没必要把“英语”协议再分层。现在为了讲解的需要,我把“英语”这种协议人为再分一下,英语由“单词”构成,单词不考虑语法问题。“单词”就是比“英语”低一级的协议。“单词”又由“字母”构成,字母不考虑组合成词的问题,所以26个英文“字母”就成为比“单词”更低一级的协议。
现实意义:中国人和法国人一般都认识英文字母,法文字母跟英文字母有很多都相同,但我们从小认字母当拼音,人家认来组单词。所以可以说,在字母这一层协议上,中国人和法国人是可以交流的,换个说法:中国人写的字母法国人也认识。但是,这没有太多实际意义。所以才需要更高一级的“英语”协议来支持。
同样道理,上图中“底层1:IP协议”以下还有更底层的协议。“高层3:HTTP”协议以上还可以有更高层的应用协议。我们可以任意一层协议为基础制订自己的更高一层的协议。
比如:我们可以以字母这一层为基础,重新创立一种新的语言。也可以以IP协议为基础,制定自己的传输协议。
不同的设备可以安装不同的协议,识别不同层次的协议。
比如:
1、可以安排一个人,只要能识别字母“a、b、c……”就成。这是最低层协议的实现。
2、再安排一个人,能够识别字母组成的单词,并删除错误单词。这就是第二层协议的实现。
3、再安排一个人,能够识别单词组成的句子,并理解句子。这就是第三层协议
4、再安排一个人,这个人能够翻译英语“黑话”,这个就最第四层协议了
5、还可以安排更高层的人,能够把黑话中隐藏的更专业的意思解读出来
根据需要,你可以随时发明自己的协议,如果这种协议高效易用,被大众所认同,那就成为了一种流行标准。
说到底:协议是人规定的一套通信规范,所以任何人都可以规定自己的协议,只要通信的双方能够共同遵守,你就实现了你的协议。
事实上协议本身是可以无所谓分层的概念,分层只是为了方便人们处理复杂的协议而人为做出的划分。
所以,初学者请不要网络协议深遂的面孔吓倒,更不要被网络分层的假相所迷惑。你只要认清了网络协议的本质,大胆得去实践,你完全可以创造出属于你自己的网络协议。
旧的协议日益成熟,新的协议层出不穷,正是那些勇于创新的开拓者们创新了日新月异的网络世界。向发明网络协议的创新者们致敬!
以我自己的经历:网络通信技术初学者接解到的第一本网络教程,应该首先避免过多技术层次的东西,少用专业术语,最好能通过接近生活实际的例子,将网络技术的基本原理解释清楚。我认为初学者越早搞懂网络协议的本质,学习后续网络课程就会越容易。
后记:
从事软件开发多年,最早接触网络协议是在20年前,那个时候没有老师教,完全靠啃教材自学。当然,教材的作者就是我的老师。可是这些教材无一例外上来就是专业术语、技术性太强。什么协议标准,协议分层,什么数据结构,让初学计算机没几年的我云里雾里。花了很长时间也没把网络协议这东西搞清楚,网络编程于是成为令我感到“难”的一件事情。
事实上,大概很多人都认为网络编程是很“难”的。的确,当我弄清楚网络协议和网络编程是怎么回事以后,反而更加深刻得理解了网络编程的难度。不过回过头来看一看,如果当年能有遇到一本深入浅出的教材帮我很快理解网络协议的本质,如果这本书能让我感觉网络协议很简单,那么我学习的速度和效率将会高得多。
以上只是自己一些个人经验,跟大家交流,有不足之处,欢迎批评指正!谢谢。