【问题标题】:Send complete TCP or UDP packs programmatically [closed]以编程方式发送完整的 TCP 或 UDP 包 [关闭]
【发布时间】:2012-08-26 08:37:31
【问题描述】:

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

例如带有自定义 MAC ADD 的数据包。以及发送方(请求方)的假 IP?

【问题讨论】:

  • 完整的 TCP/UDP 数据包不应操纵 L2 或 L3,它们位于较低层。 TCP/UDP 数据包是 L2/L3 的负载。但简而言之:是的,你可以做到这一点。至于如何:问一个体面的问题(哪种编程语言,你尝试过什么,你想用这个来完成什么,......?)

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


【解决方案1】:

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

sock = socket(PF_INET, SOCK_RAW, IPPROTO_UDP);

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-23
    • 2014-06-29
    • 2021-07-06
    • 2010-11-06
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多