网络协议,网络工程师一生的心理阴影

大家好,我是老杨。

只要参加过网工这岗位面试的,应该很难逃开面试官问网络协议的相关问题。

网络协议是一个很大的范畴,你要细说,咱们这公众号的「每天5分钟」系列,已经拆开细说的明明白白。

很多小白会有一个误区,就是学习一个东西,就想去买一本书,一次性搞定。

想学网络协议,很多人会选择买经典书籍,比如《TCP/IP详解》

对于书本里这些枯燥的讲解,看不懂就算了,打瞌睡也就算了,最重要的是不知道怎么才能和工作结合起来,用起来,真正的掌握它……

我不看还不行吗,我不学了!

可是,你在实际的网络工作中又会发现,网络协议是永远绕不开的命题。

我的天,这是不是你的难题?

今天这篇文章,我就花上一点时间,和你说说网络协议那些事儿。

今日文章阅读福利:《TCP/IP详解卷一:协议》

私信我,发送暗号“TCP”,我会把老网工常看的TCP/IP经典入门书籍发送给你,以作参考。

01 网络协议,有哪些?

所以,话说回来,网络协议到底是什么啊?

在计算机科学和网络通信领域,协议是指用于在不同系统之间进行通信和交流的规则和约定。

网络协议定义了通信的格式、数据的传输方式、错误处理机制以及参与通信的各个实体的角色和责任。

例如,你想和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。

为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。

在这里,你可以把网络协议理解为网络世界的“合同”、“规则”甚至是“法律”。

每个人都要按着法律有秩序的生活,每个网络设备,网络传输方式,也都会按着网络协议定义的那样运行。

只有这样,数据才有办法“沟通”。

举个不算太恰当的例子,更直接的说明一下:

我说福州话,你说英语,我俩相互都听不懂对方说话,但这时候,国家规定,在中国,你只能说“标准普通话”,有了一个统一的规则之后,我俩都去学习了普通话,这下就可以交流了。

说完"是什么",我们说说"有什么"。

常见的网络协议有TCP/IP协议、UDP协议、HTTP协议、FTP协议、Telnet协议、SMTP协议、NFS协议等。

很多时候,你只要理解常见的网络协议工作过程就可以了,因为他们是“根”,理解这些协议,再去学习其他协议,就有一种水到渠成之感。

学习最忌讳的就是抓不住重点瞎学,尤其是初学者和小白,一开始就容易把经理放在太多细节和末枝上,榨干自己的所有精力,反而一无所获。

例如,数据包的结构,浏览一下各字段的作用就可以了,能记住就记住,记不住也没关系.

你只需要先重点理解IP头部里的目的地址、源地址和TCP头部里的目的端口号、源端口号,这几个东西搞懂了就行,点到为止。

学习不要贪多。

但话说到这里,肯定就有朋友会问,那我就是想学所有的网络协议,到底是有多少?

我们回到最开始对于网络协议的定义来看:

网络协议是一种规则,为了让网络世界更好运行而设,那么有需要网络的地方,就有网络协议,没错吧?

网络协议中,最活跃的一个部分,就是在OSI七层模型里。也就是我们常说的OSI七层协议。

萌新在这一块,就得学上不少时间。

每个层级,都会对应不同的网络协议,比如传输层主要的两个协议,就是UDP协议和TCP协议。

如果你想要具体了解,也可以私信我,发送暗号“网络技术”,领取由我本人亲自整理的网络协议图谱大全。

为什么网络协议看上去贼多?

感觉根本学不完?

咋整啊?

你要知道,数据通信本身作为底层架构,它所辐射的面积很广,什么数据安全、数据传输、数据控制等。

你的业务场景越多,你需要的“法律”就会有微妙的变化,自然就要具体问题具体定制。

就像码农学编程一样,为什么会有这么多编程语言啊,都学java不就好了?

每个语言都有自己得天独厚的优势,没有最好的语言,只有最合适这个业务场景下的语言。

当然,如果你想要更好的了解网络协议,我建议你可以从它的发展历史去入手,比如先选一本大学生教科书入手,比如《网络通信概论》,粗浅且全面,适合新手。

这样,理解了大框架,再去看你感兴趣的细节,比如路由交换等,从源头开始理解,你或许就比人多了一分通透。

02 网络协议,要怎么学?

我一直觉得网络比系统好学,因为网络不抽象,你想要知道个什么东西,都可以通过抓包来分析,一顿分析,差不多也明白了七七八八了。

而且,在聊怎么学之前,你一定要明白一点,学网络有一句话你要牢记:

知道“为什么”,比知道“怎么做”更重要。

在网络这块,你能搞懂一个技术是怎么来的、怎么去的,你上手应用就会非常快。

如果你只是执着于,我要学技术,我只想快点用到项目里,强行倒着学,只会得不偿失。

我们来聊个具体的,比如ARP协议。

你先了解ARP协议的工作过程,然后去了解下ARP攻击是怎么回事。

这个过程,就叫做学理论,也叫做我说的,了解“为什么”。

这样你就明白,ARP攻击其实就是利用ARP协议设计上的不严谨,伪造ARP数据包篡改网络里其他电脑的ARP缓存列表。

ARP协议采用广播发送协议数据包,这就导致里网络里的每一台电脑都会收到ARP的协议数据包。

而ARP协议规定即使你的电脑没有发出ARP请求,只要有ARP回应包到达你的主机,你就要对这些协议包进行处理,并将回应包中的MAC和IP对应关系放入自己的ARP缓存。

如果ARP回应包里面的网关IP与ARP对应关系是正确的,这个问题不大。

但如果有人在网络中伪造了错误的网关IP与ARP对应关系并广播到网络里,那就出问题了。

你可能也意识到,你上不了网,是因为网关IP对应的ARP对应关系出错,但是没有办法,因为你的电脑上运行的ARP协议规定,你的电脑必须要接受这个错误的对应关系。

这就是网络协议设计的不严谨,设计和实现ARP协议的时候没有想到居然会有人在网络中伪造ARP回应包并广播到网络中。

这样一趟顺下来,还有什么搞不懂的协议?

那么,要怎么围绕“为什么”去学习理论?

前面说到,很多人学网络技术都喜欢买书,而且尤其喜欢买经典读物,比如《TCP/IP 详解》,但是读不懂。

虽然《TCP/IP 详解》也是斯蒂芬森做了无数次实验总结出来的经典,但对小白来说的确晦涩,那怎么理解协议的来龙去脉?

我建议你可以看《计算机网络自顶向下方法与Internet特色》这本书,可读性非常强,方便你了解常见协议的工作全过程。

然后,其他书籍你可以选读,建议至少要覆盖路由和交换的内容,书籍不限。

但要明白一个重点,你理解理论,是要理解网络的整体架构以及了解主要技术,比如子网划分,交换机工作原理,静态路由协议,动态路由协议等的实现过程。

所有阅读行为,都要围绕这点进行。

理解完“为什么”,我们来聊“怎么做”。

只是看理论,终究还是纸上谈兵,所以,我建议你用模拟器辅助理解,也就是“怎么做”的第一步。

比如我习惯用cisco packet tracer,它有一个功能,就是可以像看动画一样,看到数据是如何在网络拓扑结构中传输和交互的。

也可以抓取指定协议的数据包,帮助新手网工更好的理解整个协议。

当然,有人会说,我有很多设备啊,直接用真机不香吗?可以啊,只不过没有模拟器上看得那么直观。

如果觉得用模拟器练手完全没重点,不知道从何下手,我建议你可以找个思科CCNP的实验内容,比较有参考性。

当然,你在上述基础上,可以结合《TCP/IP路由技术(卷1》学习,自己设计几个实验玩玩。

这样你就可以了解常用的一些技术细节,还有技术的实现过程。这样对你来说,理论不再是纸上谈兵,你能更好的吸收和理解晦涩的内容。

到这里,或许你能对网络协议的理解程度更深一些。

你有什么学习好方法?欢迎留言区告诉其他朋友

原创:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

猜你喜欢

转载自blog.csdn.net/SPOTO2021/article/details/131850235