【问题标题】:If I open a raw socket and start reading the packets, are the packets that have been read not delivered to the destined TCP sockets?如果我打开一个原始套接字并开始读取数据包,是否已经读取的数据包没有传递到目标 TCP 套接字?
【发布时间】:2018-10-10 19:26:42
【问题描述】:

我认为这个问题可以充分说明问题。

另一种说法:通过原始套接字读取的数据包是否完全从通信通道中删除,因此它们甚至不会传递到它们最初打算用于的 TCP 套接字。例如,如果在我的主机上运行了一个 Web 服务器,监听 80 端口,并且我打开一个原始套接字监听所有 TCP 协议数据包,那么 Web 服务器将永远不会收到这些发送到端口 80 的数据包吗?

谢谢。

【问题讨论】:

  • RAW 套接字通常用于启用混杂侦听(数据包嗅探),在这种情况下,数据包仍会传递到目标套接字以及 RAW 套接字。

标签: tcp raw-sockets


【解决方案1】:

根据我的经验,在原始套接字上读取的数据包不会从通信中删除。您甚至可以同时拥有多个原始套接字并且都获得相同的包。但是引用Linux: man raw

原始套接字可以利用 Linux 中的所有 IP 协议,甚至是像 ICMP 或 TCP 这样在内核中有一个协议模块的协议。在这种情况下,数据包同时传递给内核模块和原始套接字在可移植程序中不应该依赖这一点,许多其他 BSD 套接字实现在这里都有限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多