【问题标题】:Socket programming at low level底层的套接字编程
【发布时间】:2010-08-19 12:53:11
【问题描述】:

我无法理解或掌握;在套接字编程中在较低层进行编程意味着什么。我习惯于使用 tcp/udp/文件系统套接字。这些都围绕着他们自己的协议规范......据我所知,这将使它在堆栈中的应用程序层工作。

在我参与的项目中,我看到了一些“命名”为 LinkLayer、TransportLayer 的文件……但除了标准套接字调用之外,我没有看到任何其他调用……发送/recv/选择。 ..

您设置套接字选项这一事实是否意味着您在较低级别进行编程?是否仅限于此?还是有其他 API 授予您在内核中的表示访问权限?

【问题讨论】:

    标签: c sockets unix


    【解决方案1】:

    这通常是指使用 SOCK_RAW 套接字,这需要您组装自己的数据包头、计算校验和等。您仍然使用发送/接收/等。但现在你有责任确保每一点都在正确的位置。

    您可以使用 SOCK_RAW 套接字来实现 TCP 或 UDP 以外的协议,或者使用更高级别接口不支持的 Internet 协议执行操作(例如调整数据包的 TTL 以实现类似 traceroute 的功能)。

    【讨论】:

      【解决方案2】:

      这通常意味着在较低的 OSI 层上工作,例如,不直接发送 TCP 流或 UDP 数据包,而是制作自己的 IP 甚至以太网数据包或其他低层协议——在正常情况下——由操作系统处理。

      这可以通过特定的套接字选项来完成,这些选项使您能够在任何层接收或发送数据,甚至是第 2 层(数据链路)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-01
        • 2019-06-10
        • 2010-09-12
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        • 1970-01-01
        • 2010-10-16
        相关资源
        最近更新 更多