是否可以发送具有不同传输层协议的数据包?

时间:2013-12-26 11:35:49

标签: sockets networking tcp udp packet

假设应用程序将带有TCP标头的数据包发送到服务器以获取特定功能,其标头为ethernet + IPv4 + TCP。是否可以使用UDP头发送相同的数据包,其中所有数据都相同?据我所知,接收方将只是逐层解复用数据包的报头,因此当UDP报头成功解复用时,应将数据包的数据传递给服务器的应用层。有什么误解吗?

3 个答案:

答案 0 :(得分:0)

接收方将不知道将数据传递到哪个应用程序,因为没有应用程序正在侦听指定的UDP端口。 pacakge将被删除。

答案 1 :(得分:0)

如果服务器侦听端口,无论使用哪种协议,顶部都会有一些应用程序逻辑,期望某些数据到达此端口。

根据您的示例,如果服务器侦听两个端口(A + B),它肯定希望在这两个端口中的每一个上都有不同的类型的数据。

如果clinet现在决定切换端口,比如将要转移到端口A的数据发送到端口B,服务器的应用程序逻辑肯定会感到困惑,因为它不知道它在端口B上收到的内容(如果设计得很好)服务器中的软件)它将断开端口B上的连接。

这种情况完全取决于使用哪种协议。

就像你试图将电脑的电源线插入网络插座但插入电源插座一样。虽然两个插座都内置在PC中,但您不能简单地使用任何插座进行任何类型的连接/传输。

答案 2 :(得分:0)

  

假设应用程序将带有TCP标头的数据包发送到服务器以获取特定功能,其标头为ethernet + IPv4 + TCP。

我无法想到这一点。应用程序不发送TCP数据包。应用程序发送数据TCP发送TCP数据包。

  

是否可以使用UDP头发送相同的数据包,其中所有数据都相同?

是的,当然,只需通过UDP套接字而不是TCP套接字发送它,假设数据符合UDP数据报。

  

根据我的知识,接收方将只对多路复用的报头进行解复用   逐层数据包,因此当UDP报头成功解复用时,数据包的数据应传递到服务器的应用层。

  1. 标题没有“解复用”。 2.如果在您发送数据的UDP端口上接收的服务器上有UDP应用程序,您所说的将会发生。如果没有,传输将被丢弃。
  2.   

    有任何误解吗?

    不是真的,但是你滥用标准术语,并将权力归功于其他地方真正存在的应用程序。该应用程序与以太网或TCP或UDP或IP标头无关。

    我也有强烈的感觉,你是在一个小山丘上建造一座山。