网络通信知识地图
【网络通信知识地图】我在之前一段时间做过网络通信的系列文章,但是文章还是偏散,没有一个整体脉络,本篇就以知识地图的形式来进行梳理。
知识地图是一种知识导航系统,并显示不同的知识存储之间重要的动态联系。本篇主要就是从更高的视角将之前的文章的结构思路展现出来。文章结构的思路实际上也是达到架构师程度要掌握的网络通信知识学习路线。
目的意义
在咱们【编程一生】用户群里,我看到有朋友提出一个问题:觉得很多事情是运维人员做的。实际上运维人员由于不懂业务,在实际工作中起不到相应的帮助。也有些很给力的运维人员,人家有问题不推脱,有时候靠着查开发人员的代码把问题解决了。
上面提到的就涉及到一个人员分工的问题。在十几年前啊,前端后端都是没有明确分工的,所有的开发都是全栈。前后端分工是为了让大家能把事情做精做细。这几年分工有越来越精细的趋势。但是随着职位的增高,那些职位高的人往往什么都懂一些。因为他要负责的是一件事情,不是一个部分。
分工的目的是为了更好地解决事情。而排查问题是事情的一方面。我的建议是不要太计较这到底属于谁的职责。职责是为事服务的。能搞定事的人绝不会受亏待。
总结一下:学习网络通信相关的知识对于排查生产问题和架构都至关重要,要以事为中心,不要给自己设限。
基础知识
操作系统和网络基础
因为站在排查问题的角度,生产环境一般会选用linux环境。所以网络通信有4大基础。先说前2大基础,对应我之前两篇反馈不错的文章:《白话linux操作系统原理》和《白话TCP/IP原理》。
要深入细节,就会涉及平时面试中的一些高频问题。《深入浅出操作系统的零拷贝》和《网络字节序列-大端序和小端序》都是必须要掌握的基础。
面试中问得比较多的,还得是IO相关。一般面试,了解《轻松搞懂5种IO模型》和《趣谈IO多路复用的本质》就差不多了。
应用层协议
《HTTP状态码1XX深入理解》和《【答案公布】客户端与服务端通信时,所有的http状态码是否都是服务端返回的?》两篇文章对http的状态码做了深入的讲解,能把这些讲清楚,相信能让很多面试官眼前一亮。要是我面试的话,我会认为面试者思考问题很细致。
网络安全
《架构师之路-https底层原理》和《懂了!国际算法体系对称算法DES原理》对证书和加解密、加验签算法做了讲解,这一块作为网关等基础设施的开发是必修课。
架构底蕴
在网络通信相关的中间件中,有一些通用的逻辑设计,对应着《网络通信之Session的历史血脉》、《状态保持解决方案-分布式session的历史血脉》、《深入理解MQ生产端的底层通信过程-理解channel》和《接下来一段时间会对大家进行网络通信的魔鬼训练-理解socket》这4篇文章。
作为架构师要对整个链路有全面的了解。《一个http请求进来都经过了什么(2021版)》、《一个请求过来都经过了什么?(2017年http版)》和《一个请求过来都经过了什么?(Thrift版)》就是在讲一个架构师平时要做哪些方面的梳理。
应用案例
网络通信很大的一方面价值是用来排查解决生产问题。在《https引起的跨域问题-COE&casestudy》、《池式结构-连接池》和《懂得三境界-使用dubbo时请求超过问题》中,我就介绍了生产上网络问题的案例,学以致用。
《手撕Dubbo源码,彻底理解RPC原理》这篇文章是想作为完结篇,说明学习了上面的知识,自己也可以轻松写出一个框架了。
总结
本文介绍了掌握网络通信的学习脉络。做到架构师水平能掌握到这种程度的也不多。是不是也没有那么难?
编程一生
因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。
PDCA方法论,检查自己是否错过更新:每周三晚上8点左右,我都会更新文章,如果你没有收到,记得点开【编程一生】公众号找一下(*^▽^*)
推荐阅读
- 企业知识管理常见的误区及解决方案
- 琐琐碎碎小知识|利用 ToDesk 远程控制帮助小伙伴安装 SQL Server 2019
- 笔记|嵌入式网络的基础知识
- C++面向对象程序设计
- Android基础知识梳理-四大组件之Content Provider
- Linux|Linux socket编程(C语言socket实现客户端与服务器网络通信)
- linux远程开发|linux远程开发——网络通信(客户端与服务器建立连接)
- Qt-大屏电子看板|Qt编写可视化大屏电子看板系统32-模块10大屏地图
- 四大件之操作系统|操作系统知识点整理(三)
- 学习新编程语言的 5 个小知识