0

Let's say, I have a nic, it has two addresses 10.0.1.1 and 10.0.1.2, and I have four processes with one socket each, 1 is using tcp with 10.0.1.1:30, 2 is using udp with 10.0.1.1:30, 3 is using tcp with 10.0.1.2:30, 4 is using udp 10.0.1.2:30.

Are those four socket's all receive the same packets or who differs from who? Does the fact that four sockets are in one process affect the result?

4

3 回答 3

1

套接字不仅由它们的 IP/端口对标识,而且由它们的传输标识。这就是为什么在创建套接字时必须在绑定之前指定套接字类型的原因。因此,将 TCP 套接字和 UDP 套接字都绑定到相同的 IP/端口对是完全可以的,因为它们的传输方式不同。UDP 数据包不能路由到 TCP 套接字,反之亦然(尽管它们可以路由到 RAW 套接字)。如果它们被用于相同的过程或不同的过程中,则没有任何区别。

于 2013-08-20T19:06:12.820 回答
1

你有:

TCP 10.0.1.1:30 UDP 10.0.1.1:30 TCP 10.0.1.2:30 UDP 10.0.1.2:30

他们都是不同的。用于其中一个的数据包不可能传递给另一个。

原因:

  1. TCP 和 UDP 端口占用不同的命名空间。
  2. 每个 IP 地址都有自己的一组端口。

所以没有重叠,歧义,共享,......

于 2013-08-20T09:35:29.243 回答
1

EJP 给出了正确的答案。此外,即使所有套接字都在同一个进程中,但它们仍然会接收不同的数据包。

于 2013-08-20T10:58:10.520 回答