同一台机器上不同ip和传输协议的不同端口号是否不同

时间:2013-08-20 09:29:30

标签: sockets networking tcp udp ip

假设我有一个nic,它有两个地址10.0.1.1和10.0.1.2,我有四个进程,每个进程一个套接字,1个使用tcp和10.0.1.1:30,2个使用udp和10.0 .1.1:30,3是使用tcp和10.0.1.2:30,4是使用udp 10.0.1.2:30。

这四个套接字是否都收到相同的数据包或谁与谁不同? 四个套接字在一个进程中的事实会影响结果吗?

3 个答案:

答案 0 :(得分: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地址都有自己的一组端口。
  3. 所以没有重叠,含糊不清,分享......

答案 1 :(得分:1)

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

答案 2 :(得分:1)

套接字不仅由其IP /端口对识别,还由其传输识别。这就是为什么在创建套接字之前必须指定套接字类型,甚至在绑定之前。因此,将TCP套接字和UDP套接字绑定到相同的IP /端口对是完全可以的,因为它们的传输是不同的。 UDP数据包无法路由到TCP套接字,反之亦然(但它们可以路由到RAW套接字)。如果它们在相同的过程或不同的过程中使用,它就没有任何区别。