请教各位 C++大佬,现在网络通信库满天飞,深入学习网络编程相关的内容是否还有必要?

2022-06-25 16:29:28 +08:00
 liuguangxuan

一直对网络编程比较感兴趣,想深入学习,但是学好了,可能顶多做一个网络通信的中间件出来。

目前 C/C++通信库的轮子已经有很多了,像 libevent 、muduo 、asio 等等。在考虑是否还有必要深入学习这方面的知识。因为人的经历总是有限的。

所以想请教各位大佬:

  1. 如果学好了网络通信方向的知识,有哪些方面的工作可以从事?
  2. 如果不推荐网络通信方向的话,C++目前有哪些推荐的方向?
5144 次点击
所在节点    C++
33 条回复
cnbatch
2022-06-26 05:18:59 +08:00
网络通信、网络编程的范围非常大,除了前面大家都提到的,其实还有 OSI 第一层和第二层的部分。

例如网卡驱动,不但牵涉到 OSI 第一层和第二层,还涉及系统内核编程(不管是 Windows 还是 Linux 或 BSD ,写驱动都要跟内核打交道,绕不开的)。这可不是简单的事情。

还有 VPN 软件,需要熟悉 OSI 第二层和第三层,因为很大可能需要手动处理 IP 路由分派部分,以及对二层⟷三层的解包 /打包。而 IP 协议还分为 IPv4 和 IPv6 ,相关知识点并不会少。

既然都提到 IP 路由了,那么还可以提一提各种路由协议。假如以后会进入到网络设备公司干编程的活,那就很有可能需要维护各种路由协议相关的源码,这种情况下路由协议必定需要学,就算不精,也得“知道这个协议是干什么、怎么用的”。
说起网络设备,那就很大可能需要再学一学 SCTP 。目前有部分较新的路由器(不是指“网关”的那种)、基站不但已经支持 SCTP ,而且还依赖 SCTP 来传输数据(主要是信令)。了解 TCP 和 UDP 的人多得是,但了解 SCTP 的相对较少。万一需要维护 SCTP 相关的源码,那就必须先把 SCTP 搞明白。
liuguangxuan
2022-06-26 08:35:52 +08:00
@cnbatch #21 多谢老哥,看 UNP 的时候,正好把所有跟 SCTP 相关的章节全跳过了,路由相关的内容对我来说有非常大的知识盲区,看来如果想在这个方向有所发展,还有很长的路要走。

通过老哥的回答,感觉老哥应该是这方面的专业从业人员,能说说一下这个方向的前景呢?
iuuu
2022-06-26 12:32:03 +08:00
@liuguangxuan #5 老哥回复的真好,中文社区最大的问题就是怎么提问都会被怼,也算是特色了 233
frodez
2022-06-26 12:57:32 +08:00
有必要,你可以写一个库和其他人的库比试一下,再不济也可以到处打广告吹嘘嘛
wtdd
2022-06-26 15:33:32 +08:00
如果经常使用肯定是有必要了解的,懂工具的原理才能用的更得心应手,当然具体算法细节没必要个个深究
cnbatch
2022-06-26 17:37:13 +08:00
网络设施方向的前景啊……
跟互联网行业相比的话,它有 1 个特点:稳定。也许还有“低”薪。(注意我加了双引号)

网络设备在目前这个时代已经成了基础设施,需求量相对稳定,人员需求也相对稳定,大变化大需求当然也会有(比如未来推行 6G 、7G ,或者有人发展出了新的路由协议),但远不如互联网龙头行业来得频繁、变动那么大。

同样的还有网络安全,它一直都不可或缺,并且越来越重要。但有一个缺点,这个方向属于“运维”这一块,部分公司要求 7×24 轮班,换句话说,会有通宵夜班。虽然没有什么 996 、007 ,但通宵夜班肯定跑不掉的。
cnbatch
2022-06-26 19:49:15 +08:00
忘了说,还有编写网络安全软件的,也会用到 C++(当然了,需要懂的还不止 C++)。这样一来,单单理解各种异步网络库绝对不够。就比如专门针对某某 CVE 漏洞报告制作出扫描软件或测试软件,需要的基础知识远超“异步网络库”。

研究下 Kali Linux 各种内置工具就很好地理解我在说什么了。
acctv2
2022-06-27 08:20:26 +08:00
你提了一个典型的 X-Y problem ,需求是 X ,换成 Y 的说法提出来了,导致别人容易误解。

你的核心问题还是 C++网络这个方向好不好找工作吧,前面的说法很容易让人觉得你是基于兴趣使然不是就业需求。
NeoZephyr
2022-06-27 10:37:49 +08:00
@liuguangxuan 老哥,怼得好。上来就说教,听着就烦
TrevorPhillips
2022-06-27 11:19:40 +08:00
@liuguangxuan 兄弟你这回复太漂亮了,你这种提问被喷的情况我也经常碰到,就是苦于不能漂亮的怼回去,所以请教下如何提升自己的回怼能力,中文区戾气实在太重了
chenxian352
2022-06-27 15:03:16 +08:00
看到一楼被喷我就安心了。
segmentlll
2022-07-14 17:27:27 +08:00
以我的经验来谈,网络编程知道大概的概念(ip,tcp,udp....)就可以干活儿了,一般公司都有网络库不会去开荒。
不过每次面试不管面试官懂不懂 tcp 的那些细节,都会让我讲一遍。
比如拥塞控制,有几个开发的工作会涉及到这个?
coon
2022-07-23 11:09:56 +08:00
楼主如果你有想法做金融领域的应用可以 mail 我
cooncn%gmail

参见 14 楼老哥的描述

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862146

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX