跟我一起写一个抓包软件!
共 1364字,需浏览 3分钟
·
2022-05-11 07:11
大家好,我是轩辕。
问大家一个问题:你觉得学习计算机网络最好的方式是什么?
看书?
看视频?
抓包分析?
看书看视频是纸上得来终觉浅,前面看了后面就容易忘了。
领了一大堆学习资料却发现对自己没什么用?
抓包分析倒是能帮我们理解的更深入,但还不够,还可以再进一层。
你有没有想过:自己写一个抓包工具出来?
通过自己手写一个抓包工具,你可以获得:
1、软件抓包原理
2、网络协议栈工作机制
3、各层协议工作原理
4、网络数据监听的原理
5、对计算机网络更立体的认知
······
好处实在太多,比起简单的看书看视频,写一个抓包工具,对计算机网络的认知要深入全面的多。
比如实现这么一个功能:通过网络抓包,将网络中传输的HTTP数据还原,还原出浏览了什么网页、图片、视频···
要实现这样一个功能,需要逐层解析数据包协议,最关键的是把各个零散的TCP数据包按照序列号、应答号进行会话流重组,还要剔除各种重传的、没有载荷的包,收发双方的数据流各自排列拼装,然后拼出上层HTTP协议内容,最后再根据HTTP的Content-Type提取出传输的数据内容。
这个过程是对计算机编程、协议解析、IP、TCP(三次握手、四次挥手拥赛控制、超时重传、滑动窗口、延迟响应等等机制)、HTTP协议的一次综合实践和巩固。
现在,轩辕的知识星球第二期的学习活动就准备带大家一起来写一个抓包工具,来一次计算机编程和计算机网络学习的冲关体验。
我将整个学习周期划分了多个阶段,从静态数据包文件的解析,到实时抓包分析,从底层的网络协议解析,到顶层应用协议的解析,层层递进。
每个阶段我都划分了很多个小的子任务,或一天,或两天,或三天。然后将对应的知识融入进去,让大家来编程完成,最后一点点积累,完成一个完整的抓包软件。
为了考虑到大家的学习时间不一,每一周之间都会留一些时间buffer给到大家,供落下进度的同学赶上来。对于一些能力很强的同学,我也有准备一些选学的内容供你们去挑战。
我每天都会在星球检查大家提交的作业,给大家指导建议,以及任务的拆分理解,帮助大家顺利完成每一个知识点的掌握。
这是一次难得的学习机会,能够将软件编程、计算机网络知识甚至操作系统相关的知识结合起来综合实践学习。
还在学校的朋友可以系统性的学习计算机编程和网络,还可以作为一个项目经验写到以后的简历上,绝对能在如今清一水儿的web服务器开发经验的简历中脱颖而出。
那具体如何参与呢?加入我的知识星球就可以了:
可能有些新朋友不太知道知识星球是什么东西,这里简单介绍一下。
什么是知识星球?
知识星球是一个学习交流的社区,在我的星球里,你可以提问关于学习方法和方向选择的问题,比如这样:
也可以提问关于具体技术方面的问题:
或者职场工作方面的问题:
简历方面的问题:
我都会挨个细心回答。
除此之外,我还会经常分享行业信息、就业机会、大厂内推、面试技巧、Offer选择等等。
偶尔发个福利啥的:
最后,欢迎大家加入我的知识星球,一起学习一起进步!
如果你学了编程却发现缺少一个练手的项目
如果你想更系统化的掌握计算机网络协议的知识
如果你发现领了一大堆学习资料也没什么进步
如果你觉得一个人学习太孤单寂寞
那不如和我们一道,一起手撸一个抓包软件吧!
预告一下:第一阶段学习活动正式开始时间:下周一(5月9号),为期三周。