一般来说,ip包的抓取和转发可以用赫赫有名的libpcap来做,发包时不仅仅需要构造ip包,也需要构造以太网帧的头部,并指定链路层的device。但有的同学会觉得libpcap太重了,如果只是用于学习和简单调试,在这里我来简单的介绍另外一种ip包嗅探和转发的方法: 使用raw socket,并提供一个简单对http请求进行ip包转发demo。
在阅读这篇文章及案例前,需要对OSI网络模型有些基本的了解,tcp,ip,http头部信息结构可以看看对应的维基,在此我就不再赘述了。
IpV4:
https://en.wikipedia.org/wiki/IPv4#Header
Tcp: https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
Http-request-header: https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Request_fields
debug一直是开发者的心头之痛,时常有人吐槽“20%的时间在写代码,而80%的时间都在调试代码”,哪怕项目发布后,一个线上问题也可能需要花很多时间去排查。那么我们如何在开发阶段多花点精力从而减少线上风险以及后续debug的时间投入呢? 显而易见,增加程序的鲁棒性的方法之一便是的正确的错误处理,下面我将总结下在nodeJs应用中应该如何进行合理的错误处理。
0
^
$
w
e
%
*
#
f<letter>
<num>f<letter>
Ctrl-b s
tmux ls
在业务开发过程中,往往会依赖一些node工具,hack这些node模块的主要目的是在不修改工具源码的情况下,篡改一些特定的功能。可能会是出于以下几种情况的考虑: