1. 理解最基本的协议,可以看下协议相关的RFC和BaiduGoogle的文档, 最重要的就是理解协议头在通信过程中的值的变化了,如果可以用类似于wireshark,
tcpdump 来实际看一些协议数据会更加有帮助的,如果可以看类似于tcpdump这样软件的源码,找到相关协议的源码, 再去分析它,这样的话,对这个协议的
理解可能会更好。。如果自己还是程序员的话,而且还是网络应用程序员。。 可以看些相关协议的实现,如:分析FTP协议,可以看个简单的FTP的服务器和
客户端的源码,如:vsftpd和lftp, 如:分析ICMP协议,可以看下ping 程序的源码, 这样的话,基本上对协议的理解已经很深入了。这个阶段不出意外的话
,自己应该有能力定义新的通信协议,并且能够通过程序来实现整个协议的通信过程。 像一些网络游戏服务器,视频存储数据服务器。 一般就可以编写了。
呵呵。 当然自己要根据自己的需求,晋生到一定的级别就OK了,假如自己是系统管理员的话,那看源码神马的,没得必要啦。假如自己就是个学生,就想知
道这个协议是怎么回事,也不想分析它,就看看一些Baidu,Google那些文档,就OK了。。
2. 可能需要有足够的背景知识。 比如:分析tftp协议的时候,要知道这个协议是用来做什么的(简单的文件传输,在局域网内部), 以及自己知不知道 有
一个或多个应用程序支持这样的协议传输数据(linux 有tftp-hpa, windows 下有tfptd 32). 那自己会不会使用其中一个或多个。 当这一系列的背景知识
具备之后,就可以去分析这个软件的协议了。 不过,这可能只适合初学协议分析,当协议学习得多了,分析到二十种以上的时候,可能很多东西都浮云了,
只看到协议,只要一看协议就知道那些个程序是如何通信的了。这种能力在现实世界还是很有用的。
3. 你对协议敏感吗?能保持一颗平常心吗? 激动不?你歧视一些协议吗? 你心中有疑问吗?.......THINKING......
4. 永远要记住自己为什么进行协议分析? 为了学习一些网络协议的报文格式,还是为了查看当前网络是否有人攻击,还是想截获特定的协议的网络数据包?
还是为了开发某些解析特定协议的应用程序? 还是你想移植TCP/IP协议栈? 还是你想开发整个TCP/IP协议栈?