自信、冷静、专注。 —— TM熊的自我勉励
网络专题系列文章将针对网络相关技术进行展开,涉及
TCP/IP
协议栈,HTTP
常见应用协议,时下热门网络技术,RPC
,开源网络组件,网络框架模型等方面,内容会将理论和编程实践结合(踩坑人的衷告)。
如果觉得对您有帮助可以持续关注。
网络
什么是网络?
网络的定义是:网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。
说人话:网知道吧,渔网,蜘蛛网,网袜(doge),网上边的交点和那些联线,每两个点之间又有若干条路径可以联通,就点和点之间的关系呗。
现实中的网络抽象就是这样子的(简单的是用网线把电脑连接起来),不过网本身只是一个基础设施,需要在这个基础设施之上传输信息、数据才能发挥网的作用,比如蜘蛛网蜘蛛传递捉到猎物的振动信息,渔网用于各个节点组合受力,可以认为传力的是力,而我们所说的网络用来传递图片、文字、小电影啥的。
为什么要网络协议?
干任何事情都得有个规范吧,不然都得乱套了,而且节点网络节点之间有不同层次、组合,它们的用途都不一样,得有规范来区分。网上的点之间要是有联系的话得双方约定好,这个约定就是协议,不然传递的信息无法被读懂。比如语言不通的两个人对话,你骂的可嗨了,对方也听不懂,还笑哈哈。
为什么有那么多种网络协议?
种类多无非是使用场景多,用途多,不同场景、时机使用不同的姿势是不是更舒服些,随着网络的发展,可以预见将会有越来越多的网络协议出现。
网络协议那么多,如何学?
网络协议再多,都离不开
TCP/IP
协议栈作为基础,其他的协议基本上都是数据应用层协议,只要把TCP/IP
协议栈基础打好,面对其他任何协议都很容易上手(不要把协议想得那么困难,无非就是围绕结构数据的处理,我们前面说过网络就是用来传输数据的,协议就是对有格式的数据进行处理)。这里说个题外话,也算个人经验吧,基础为什么那么重要:普遍现象是很多人的知识面很广,但是比较零散,不系统,不够精通,导致很多问题没法探究它的本质,软件编写无法再次提高,陷入一个瓶颈,很多时候你就需要倒回来好好巩固你的基础知识,你会发现原来还有那么多细节自己以前忽略掉了。给的建议是选定一个方向,必须的核心基础知识吃透彻,相关技术知识用于扩充广度,其他的感兴趣知识可以补充性学习。
为什么要开网络专题
如果你不知道知道网络编程能力的重要性,我在这里告诉你。
武侠影视剧看过吧,武功都分那种内功和招式,好多影视剧里都有这种情况:
招式花样多,内功空虚,导致后劲不足,不持久;内功深厚,根基扎实,前期虽然笨笨的,但是学习其他的招式很快(九阳神功知道吧),后期随便吊打别人。
对于我们程序员来说也是一样,有内功(语言,设计模式,算法,网络等)、招式(编程技巧,工具使用等),只有内外兼修才能晋升大牛(涨薪),我本人是一名编程爱好者,从我自身的角度来讲,网络编程是一名合格程序员的专业素养,不管是工作、生活中所见所闻,亲身经历,网络编程都是重中之重。
从几个现实角度来体现网络编程的重要性:
- 日常使用软件有多少能离开网络(2020年了,还没有互联网时代的觉悟么),时下很多技术都是围绕网络服务发展起来的,微服务、云、物联网等等;
- 招聘信息中谁不提一两条网络相关专业知识要求;
- 面试必问,都是定律了;
- 不会你写的软件都是
hello world
吧;
你会有什么收获
如果你正在阅读这一系列文章,那么对网络编程知识无非有以下三方面需求:
- 对网络编程不了解想要入门,那很好,本系列文章将通俗易懂,图文并茂,提供可运行demo,你要是入不了门就来捶我;
- 有过网络编程经历,但是不系统、不精通,想要对自己的知识进行巩固,那你得多关注了,系列文章不仅仅对网络编程这一块进行一个系统性的梳理,还会对工作当中遇到到的问题疑难、面试常问点进行原理性的深入讨论;
- 想了解时下热门的前沿网络技术,系列文章的重点是对网络编程基础和深入,但是仍然会对网络新技术进行讨论(来自编程爱好者追求)。
系列文章的安排
网络专题系列文章将会循序渐进地展开,大体有以下几个部分:
linux
进程间通信;TCP/IP
协议栈理论基础;TCP/IP
编程实战;HTTP
、FTP
、MQTT
、RPC
等;webRTC
、websocket
等也会涉及;NAT
、P2P
等网络技术;- 网络架构模型;
- 开源网络组件;
其中除了协议栈理论和编程实践会严格按照先后顺序之外,其他的不会严格按照先后顺序,不过都会进行类型区分,以方便查阅。
关注微信公众号:南极熊club