以编程方式发送完整的TCP或UDP包

时间:2012-08-25 20:13:32

标签: networking tcp network-programming udp network-protocols

根据OSI模型,数据包将在多个层中完成。 是否可以以编程方式发送完整的TCP或UDP数据包(包括标题等)。

例如,数据包自定义MAC ADD。和发送者(请求者)的假IP?

1 个答案:

答案 0 :(得分:1)

是。 如果您使用RAW套接字发送任何TCP或UDP数据包标头,您必须具有 root 访问系统的权限:

sock = socket(PF_INET, SOCK_RAW, IPPROTO_UDP);

或者您也可以直接使用以太网卡绕过linux TCP堆栈和write()以及read()。

问题是,如果你使用带有TCP的假ip,你将无法从SYN请求获得响应,因为真正的ip将拒绝它或者它不会被路由回来。如果您查询“ip spoofing”关键字,可以对此进行研究。