计算机网络协议专栏介绍以及综述

计算机科学与技术专业一门重要的课程就是计算机网络,其内容是对于网络通信协议的描述。计算机网络协议方面的知识是ICT等从业人员必备的技能之一。同时这方面的内容也是各个面试过程中必然会被问及的一个方面,因此对于程序员以及相关的从业人员来说理解,掌握并记忆这方面的内容是必要的。

为什么要写这个教程

一个重要的原因是将我多年的数据通信方面的经验进行总结,给后来者提供一个更加快速和高效的学习计算机网络的方法。事实上在我过往大学和工作的学习经验中,计算机网络协议的学习并不容易,主要原因在于我们所接触的教材和资料多注重与理论的阐述。对于一个新手或者初学者来说,去理解和记忆抽象的理论通常来说耗时较长。无论是大学课程中计算机网络所采用谢希仁老师的教材,还是国外经典教材TCP/IP协议 卷一,个人觉得对于新手来说并不友好。TCP/IP 卷二,三讲述了如何使用C语言实现协议过程,这样的难度无疑更大,而且事实上多数的程序员并不需要去深入代码层次的细节。

谢希仁老师的教材以及TCP/IP经典系列都是作者基于对于RFC的理解编写的,事实上已经做到了一定程度的简化,方便读者阅读。如果一个新手上来就看RFC的话,无异于天书,一定会失去学习网络协议的想法。这里面一点就是原始的RFC通常是由IANA等国际标准组织在制定某种协议的时候所撰写的方案,当然最终版本的方案会经过多个版本草案的演进,比如HTTP协议就包括RFC等多个版本,例如RFC2616等。

在我从事数据通信,DPI,IDS的过程中发现,发现即使对于非科班出身,没有计算机网络经验的毕业生来说,如果能够让他去分析实际的协议通信数据,那么他能够很快的理解TCP,UDP,SSL,HTTP等协议原理,而不是死记硬背TCP是有连接的,TCP是可靠的,TCP是有序的,而UDP则不具有这些特点。同时对于SSL协议是如何交换密钥和算法,证书又是如何在其中起到该有的作用,这些都可通过实际的报文进行完美的呈现,从而让学习达到事半功倍的效果。同时对于流,五元组等一些在这些书籍中没有提到的概念,同时在网络功能领域经常使用的会有清晰的认识

针对这样上述列举的情况,就促使我来撰写这样一个专栏,希望能够对于学习计算机网络协议的同学们产生一定的价值和帮助。

网络协议简述

1,什么是网络协议

如果单纯从面试的角度出发就是IP,TCP,UDP,SSL,HTTP,DNS等常见的协议交互过程,比如TCP与UDP的区别,TCP的流量控制,HTTP的状态码,SSL的对称加密和非对称加密等等。这些内容后面都会有单独的章节进行分析。

如果给定一个比较通用的说法,那我的理解就是通信的双方为了进行通信或者说是数据交换而建立的规则、标准或约定的集合。常见的计算机网络协议如刚才所述。当然网络协议远不止这些,还包括GTP,PFCP,MQTT协议等,图1是wireshark能够解析的网络协议数量:

在这里插入图片描述
图 1
可以看到wireshark中支持的公有协议数量已经非常的多,除此之外还有大量的各行各业使用的私有协议,总之网络协议的数量是非常的多。
但是多数协议往往只是应用在某个特定的领域;像GTP,PFCP应用在核心网领域,MQTT应用在物联网领域,远不如TCP/IP协议族是当今互联网的基础那应用的广泛,因此本课程只聊一聊ARP ,IP,TCP,UDP,TLS,HTTP,DNS这些最常见的协议。当你了解了这些基础协议之后,在此基础上是很容易对于其他的协议进行扩展的,比如QUIC协议就是TCP和TLS的优点集合。

2,如何快速的学习网络协议

前面已经提到一些参考书籍理论阐述是很充足,但是给初学者的感受就是较为抽象,难度偏大,学习时间长。因此本次专栏课程主要注重分析实际的网络数据包,如图2:

在这里插入图片描述
图 2
从实际报文的角度对于TCP/IP协议族中的重点协议加以说明。通过具体的通信数据,使得我们对于计算机网络的认识不仅仅停留在理论阶段,而是实际的感受到协议在数据传输过程中的具体作用。同时也能够让初学者以能够快速的理解网络协议过程,让具有一定基础的程序员能够加深并很容易记住一些抽象的过程,比如TCP流量控制,拥塞控制等等。

实际操作过程用到的工具是wireshark,这是一款应用最为广泛和著名的抓包分析工具,关于这款工具我有一个专栏做了细致和深入的讲述,感兴趣的可以作为参考。当然为了保障专栏的完整性,我也会将以前写过的一些章节会加入到本专栏中方便读者的阅读。将在下一章介绍一下网络数据包的结构,了解该结构会有助于理解wireshark提供的一些字段。

本文为CSDN村中少年原创文章,转载记得加上原创出处,博主链接这里

猜你喜欢

转载自blog.csdn.net/javajiawei/article/details/107645356