设备如何发送select的响应数据包

我读过当内核确定数据包的源ipv6地址时,考虑到使用什么接口来发送数据包,

( http://www.rfc-editor.org/rfc/rfc3484.txt ,第5节)规则5:优选传出接口。 如果将SA分配给将用于发送到D的接口,并将SB分配给不同的接口,则更喜欢SA。 同样,如果将SB分配给将用于发送到D的接口,并将SA分配给不同的接口,则优先selectSB。
* D =目的地址

但是界面本身是如何确定的呢? 我们以tcp握手为例:

  • 主机A有一个接口和一个IP地址1:0:0:0:0:0:0:a
  • 主机B有两个接口eth0与ip 1:0:0:0:0:0:0:b0 ,eth1与ip 1:0:0:0:0:0:0:b1
  • A发送SYN到B1:0:0:0:0:0:0:b0B用SYN-ACK做出响应。 它应该在ipv6头设置src ip。

据我所知(纠正我,如果我错了!)它会根据规则在1:0:0:0:0:0:0:b01:0:0:0:0:0:0:b1进行select在我上面链接的rfc中,但是我不能把我的思想包围在他们身上,尤其是规则5,因为我无法find界面是如何select的。

您的示例与第5节(“源地址select”)无关。

在你的例子中,当主机B正在响应来自主机A的SYN数据包时,它没有select使用哪个地址。 TCP连接是由主机A已经select的地址:端口+地址:端口组合定义的。

在你的例子中另一个奇怪的是你的例子中的主机B在不同的接口上有地址1:0:0:0:0:0:0:b01:0:0:0:0:0:0:b1 。 合理地,这两个地址看起来像是属于同一个接口(相同的前缀?)。

什么是相关的将是这样的:

主机A有多个可能被用作源地址的地址。

主机A正在创build一个新的连接(即它将发送初始的TCP SYN)到某个指定的地址时,在源地址select过程中,它将应用第5节规则5 (只是应用于select过程),这确保了主机Aselect的地址,它将优选分配给接口的地址(根据路由)通过其他地址发送到指定的目的地地址。

也就是说,无论路由表中哪一个接口用作目标地址,都会影响select哪个地址作为源地址。