归到底在于你当下的知识体系的空缺,包括编程语言、网络、HTTP 协议等等,需要补补基础(论坛这里有不少帖子)。起步阶段我感觉,可以考虑以做懂一些赛题为目标去组织你的基础学习,先不用太急着比赛,也不要搞得太泛,抓住一个点然后发力去钻,以此一步步牵出所缺少的知识。
比如说 PHP 背后是一套框架,它工作的模式非常类似于 CSAPP 提到的 CGI 的概念。在接到 HTTP 请求,怎么读取请求的信息,怎么找到对应的 .php 脚本,用了什么去解释执行里面的代码,又如何将输出转换为 HTTP 的响应。
对应写脚本也是,主要是把握你所用的编程语言,以及这门语言所能操作的数据结构和运行时的能力,类似 Java 的各种数据类型 / JavaScript / Python 的变量等等,再对应到网络协议在这门语言中的实现姿势,就不仅仅是学习语言本身就能完全把握,更多是通用的基础知识。
从数据结构的角度,最基础在于香农的信息论,对应到数据在计算机的二进制表达。然后是怎么从二进制的角度表达一些基础的数据类型,再是怎么从基础数据类型表达更复杂的数据结构,一层层向上构建。