Network
什麼是觸角連接?什麼時候使用?
比特幣客戶端硬編碼限制為 8 個出站連接和 2 個僅塊連接。您的節點將嘗試始終與可靠的對等點保持這 10 個出站連接,以防禦網路攻擊。但是有一個短暫的第 11 個出站連接,稱為觸角連接。觸角連接的目的是什麼?它是如何工作的?
觸角連接是一個短暫的出站連接,僅在您的節點建立所需的 8 個出站連接和 2個僅塊中繼的出站連接後才會啟動。觸角連接的目的是定期測試“新”表中的地址,以查看它們是否是可連接的比特幣節點。本質上,觸角連接將垃圾從“新”中清除,並使用有效地址填充“已嘗試”表。
- “新”表包含節點從八卦網路獲悉的未經測試的地址。
- “已嘗試”表包含節點已成功連接到的地址。
每 2 分鐘,觸角連接將執行以下兩項操作之一:
- 從驅逐緩衝區中拉出一個隨機對等點(考慮驅逐的地址列表,因為新對等點映射到“已嘗試”中的同一插槽)。通過嘗試連接來測試地址,如果成功,則從緩衝區中刪除該條目。如果此地址不可連接,則將其從“已嘗試”中移出並替換為不同的地址(之前從“新”中提取)。
- 如果驅逐緩衝區為空,則測試來自“新”的隨機連接,如果成功,則將其移至“已嘗試”。如果不成功,則相應地更新地址連接統計資訊。切線地,如果一個地址未能連接足夠多的時間(以及其他標準),它將被標記為“糟糕”。如果傳入地址與糟糕地址發生衝突,則該糟糕地址將從“新”表中逐出。
當 30 分鐘內沒有收到新塊時,會禁用檢測器連接。在這種情況下,檢測器連接被關閉,它的連接槽每 10 分鐘使用一次,以嘗試找到一個知道新塊的節點。這是為了嘗試檢測和規避網路分區,而不會使網路上可用的入站連接插槽數量過載。一旦發現一個新塊,檢測器連接就會恢復清除驅逐緩衝區和“新”表。
歷史
感覺連接是論文“Eclipse Attacks on Bitcoin’s Peer-to-Peer Network”的建議對策之一,並與PR#8282一起引入以增加嘗試表中的線上地址數量,後來PR#9037實施了測試-驅逐前功能。
vnprc的回答解釋了觸角連接的細節。我不確定“feeler”這個詞,所以檢查了它的含義:
一種動物器官,如天線或觸鬚,用於通過觸摸測試事物或尋找食物。
正如在其他答案中提到的,觸角連接的目的是定期測試連接的地址,因此“觸角”是此類連接的正確術語。