现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

怎样算得上熟悉TCP/IP编程

2018-06-09 05:47 工业·编程 ⁄ 共 1086字 ⁄ 字号 暂无评论

抓包

先从熟悉的下手,HTTP,FTP。

封装包 

自己封装包,和现有协议通信。TCP/IP协议作为一个底层协议,不仅可以编写聊天程序,很多高层协议都是基于TCP/IP编写的。

自己造轮子,这样也有助于理解其它协议,比如连接、查询MySQL(用Socekt函数而不是库函数),自己封装一个memched函数库…

以前我大学时用perl发送“飞鸽传书”包,经常上课的时候同学们集体收到弹出信息,却不知道发送者是谁,很有成就感。如果你做已经事没有成就感,就很快会失去动力。

他山之石

经常去github。

源码

读读TCP/IP协议的实现代码,去翻翻 linux 1.0 源码。

能进行网络编程

1.如果你说你会select,epoll,iocp模型,那会让对方觉得更靠谱

2.如果你说出你做过im,下载之类那会让对方来兴趣.

3.如果你说设计了通讯协议,会让对方觉得更贴切

4.如果你说做过,熟悉, ftp http snmp smtp 这些简单的老古董协议,会加分,但不大.

5.如果你说熟悉bt,emule,udt等协议,那会对你很有好感.

6.如果你说你破解过某大牌 qq,360内某通讯协议,那会对你加分很大.

我对熟悉的定义是:闭着眼能想起原理和实现,能和其他人侃侃而谈,能在搜索的帮助下,不慢的整出来.

精通的定义是:观点一针见血,实现一挥而就.

1)熟悉TCP/IP协议族的基本原理

IP地址的分类,定义,获得,大概的管理方法

TCP、UDP等主要协议的特点,主要格式,以及重要字段在协议交互中起到的作用。

2)对于简单的TCP/IP协议导致的问题,有基本的判断

熟悉网络问题的解决方法,一个问题,应该是由上而下(top-button),还是由下而上(button-top)来分析?

3)基本的编程知识。

在系统内,构建简单通信。

在系统间,构建简单的通信。

熟悉系统内的API,知道在什么时候,改使用哪些API协调工作。

能够熟练使用这些API,在系统间传递信息,文件。

能够熟练使用这些API,实现自己的简单的私有协议。

4)进阶编程知识

知道一两个已经封装好的框架(framwork),它们之间的差别。

使用一个框架,写过能正常工作的程序。

知道网络协议处理也是要讲究性能的,知道性能的瓶颈会在什么地方产生。

能有较好的设计技巧,将私有协议设计得更加具有弹性,优雅。

熟悉系统间协议处理的细微的差异,以及将会对业务造成的影响,时延、状态不一致、自定义字段、、、、、

5)熟练阶段的知识

针对业务的需求,快速选型,定框架。

不再认为多线程是万能的。

知道稳定性比性能更加重要。

数据包去了哪儿,不用看代码,也能预估出来。

6)源代码是最好的老师,永远都是。

给我留言

留言无头像?