编程中以太网和TCP / IP协议之间的区别?

时间:2016-11-04 12:45:01

标签: tcp network-programming ethernet tcp-ip raw-ethernet

如果套接字打开以太网,那么它与TCP / IP中的套接字是否相同?在一些现有的代码中,我发现它支持以太网协议,这是否意味着我可以使用TCP套接字客户端连接到这个以太网套接字。

我很困惑,请帮忙。

提前致谢 Sagar的

2 个答案:

答案 0 :(得分:0)

原始以太网套接字,例如SOCK_RAW,如果没有编写协议处理程序(您不想这样做),则不能用于TCP通信。在原始以太网模式下打开套接字时,您应该知道如何序列化/反序列化以太网帧。 SOCK_STREAM是TCP的模式,互联网充斥着TCP客户端/服务器代码的示例。

答案 1 :(得分:0)

有一些混乱。以太网是OSI模型和TCP / IP模型中的第1层和第2层技术。对于直接通过802.3进行通信,在Linux中,您可以使用packet sockets直接生成802.3帧并通过NIC发送出去。您还可以使用数据包套接字来接收802.3帧。不同的是TCP套接字,stream sockets。使用流套接字进行TCP连接。使用数据包套接字,您始终可以接收包含IP数据报的802.3帧,该数据报包含TCP段。但是,为了建立TCP连接,您需要在两点之间建立TCP通信。如果您看到的代码是" Ethernet protcol",您应该检查它实际上是在做什么,这可能只是程序员方面的误解。检查他们正在使用的套接字类型。