一般来说,ip包的抓取和转发可以用赫赫有名的libpcap来做,发包时不仅仅需要构造ip包,也需要构造以太网帧的头部,并指定链路层的device。但有的同学会觉得libpcap太重了,如果只是用于学习和简单调试,在这里我来简单的介绍另外一种ip包嗅探和转发的方法: 使用raw socket,并提供一个简单对http请求进行ip包转发demo。

在阅读这篇文章及案例前,需要对OSI网络模型有些基本的了解,tcp,ip,http头部信息结构可以看看对应的维基,在此我就不再赘述了。


debug一直是开发者的心头之痛,时常有人吐槽“20%的时间在写代码,而80%的时间都在调试代码”,哪怕项目发布后,一个线上问题也可能需要花很多时间去排查。那么我们如何在开发阶段多花点精力从而减少线上风险以及后续debug的时间投入呢? 显而易见,增加程序的鲁棒性的方法之一便是的正确的错误处理,下面我将总结下在nodeJs应用中应该如何进行合理的错误处理。


move

  • 0 jump to line header
  • ^ jump to line header without blank
  • $ jump to end of line
  • w skip next word head
  • e skip next word end
  • % jump match brackets
  • * jump to next same word with cursor
  • # jump to previous same word with cursor
  • f<letter> jump to letter eg: fa
  • <num>f<letter> jump to letter appear third time eg: 3fa


为何要去hack?

在业务开发过程中,往往会依赖一些node工具,hack这些node模块的主要目的是在不修改工具源码的情况下,篡改一些特定的功能。可能会是出于以下几种情况的考虑:

  1. 总是存在一些特殊的本地需求,不一定能作为工具的通用需求来暴露正常的API给更多的用户。
  2. 临时且紧急的需求,提PR已经来不及了。
  3. 为什么不直接去改源码?考虑到工具会不定期升级,想使用工具的最新特性,改源码可维护性太差。


kino lee

Dreamer, Lolicon, Web Developer
To share technology and life in here

Alibaba

Hangzhou. China