编程中以太网和TCP/IP协议之间的区别?
问题描述:
如果以太网插座是开放的,那么它和TCP/IP中的插座是一样的吗?在我发现的一些现有代码中,它支持以太网协议,这是否意味着我可以使用TCP套接字客户端连接到此以太网套接字。编程中以太网和TCP/IP协议之间的区别?
我很困惑,请帮忙。
预先感谢 萨加尔
答
甲原始的以太网插座,例如SOCK_RAW
,不能用于TCP通信而无需您编写协议处理程序(您不希望这样做)。当以原始以太网模式打开套接字时,您应该知道如何序列化/反序列化以太网帧。 SOCK_STREAM
是TCP的模式,因特网充斥着TCP客户端/服务器代码的例子。
答
有一些混淆。以太网是OSI模型和TCP/IP模型中的第1层和第2层技术。要直接通过802.3进行通信,可以在Linux中使用packet sockets直接生成802.3帧并通过NIC将其发送出去。您也可以使用数据包套接字来接收802.3帧。不同的是TCP套接字,stream sockets。使用流套接字进行TCP连接。使用数据包套接字,您始终可以收到包含包含TCP段的IP数据报的802.3帧。但是,为了建立TCP连接,您需要在两点之间建立TCP通信。如果你看到的代码是“Ethernet protcol”,你应该检查它实际上是在做什么,它可能只是程序员方面的一个误解。检查他们正在使用的套接字的类型。