Hamachi
LAN側からWAN側に通信が開始される際、NAT機器はWAN側のIPアドレス:ポート番号を一時的にLAN側のIPアドレス:ポート番号に割り当てて双方向に通信を行う(IPマスカレード)。そのため、通常はWAN側からLAN側のホストに接続を確立できない。従って、2つのホストが互いに別のNATのLAN側にある場合は、どちらからも接続が確立できないため、直接通信することができない。
Hamachiは下記の方法を用いて、互いに別のNATを利用するホスト同士の直接通信を可能にしている。
NAT機器は、LAN側のホストからWAN側のホストへのUDPパケット送信が開始された際、WAN側に返信用の不定なポート番号を一時的に割り当てる。Hamachiが通信を開始する際は、以前に割り当てられたWAN側のポート番号から、次に割り当てられるポート番号をお互いに推測し、2つのホストが同時に推測した相手方のポート番号に向かってUDPの送信を開始する。送受信が開始された後は、一定間隔で空のパケット(Keep Aliveパケット)を送り続け、タイムアウトにならないようにすることでその後の通信を継続する。
ポート番号の推測は、ほとんどのNAT機器がWAN側の返信用ポート番号を規則的に(たとえば1ずつ増やして)割り振る性質があることを利用している。従って、一部のNAT機器はHamachiを通さない物がある。