说 ff 为以太网打开了一个套接字,那么它与 TCP/IP 中的套接字相同吗?在我发现的一些现有代码中,它支持以太网协议,这是否意味着我可以使用 TCP 套接字客户端连接到这个以太网套接字。
我很困惑,请帮助。
提前感谢萨加尔
说 ff 为以太网打开了一个套接字,那么它与 TCP/IP 中的套接字相同吗?在我发现的一些现有代码中,它支持以太网协议,这是否意味着我可以使用 TCP 套接字客户端连接到这个以太网套接字。
我很困惑,请帮助。
提前感谢萨加尔
SOCK_RAW
如果不编写协议处理程序(您不想这样做),原始以太网套接字(例如)就不能用于 TCP 通信。当套接字以原始以太网模式打开时,您应该知道如何序列化/反序列化以太网帧。SOCK_STREAM
是 TCP 的模式,互联网上充斥着 TCP 客户端/服务器代码的示例。
有一些混乱。以太网是 OSI 模型和 TCP/IP 模型中的第 1 层和第 2 层技术。对于直接通过 802.3 进行通信,在 Linux 中,您可以使用数据包套接字直接生成 802.3 帧并通过 NIC 将其发送出去。您还可以使用数据包套接字来接收 802.3 帧。不同的是 TCP 套接字,流套接字. 使用流套接字进行 TCP 连接。使用数据包套接字,您始终可以接收包含 IP 数据报的 802.3 帧,该数据报包含 TCP 段。但是,为了建立 TCP 连接,您需要在两点之间建立 TCP 通信。如果您看到的代码显示“以太网协议”,您应该检查它实际上在做什么,这可能只是程序员方面的误解。检查他们正在使用的套接字类型。