假设我有一个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。
这四个套接字是否都收到相同的数据包或谁与谁不同? 四个套接字在一个进程中的事实会影响结果吗?
答案 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 :(得分:1)
EJP给出了正确的答案。即使所有套接字都在同一个进程中,但仍然会收到不同的数据包。
答案 2 :(得分:1)
套接字不仅由其IP /端口对识别,还由其传输识别。这就是为什么在创建套接字之前必须指定套接字类型,甚至在绑定之前。因此,将TCP套接字和UDP套接字绑定到相同的IP /端口对是完全可以的,因为它们的传输是不同的。 UDP数据包无法路由到TCP套接字,反之亦然(但它们可以路由到RAW套接字)。如果它们在相同的过程或不同的过程中使用,它就没有任何区别。