当连接到使用任播提供的服务时,根据请求是使用TCP还是UDP进行的,我遇到了不同的行为。
使用TCP时,请求被作为地址A,并且随后的响应也来自A.
但是,对于UDP,当请求发送给A时,响应来自地址B.
这是正确的行为,还是应该来自UDP发送到同一个地址的UDP响应?
你在这里看到的可能是更多的操作系统默认源地址select语义的一个因素,然后是一个选播问题,虽然anycasted设置将暴露更快的问题。
在具有多个IP的系统(对于任播使用几乎总是如此),传出连接将来自机器的主IP。 由于TCP使用连接,传入数据包的目标地址与应答的起始地址之间有更强的关联; UDP没有这个那么多。
对于基于UDP的anycasted应用程序,您可能希望在服务器端查看设置以select要绑定的接口,并且可能还需要使用用于传出连接的地址的附加设置。