怎么实现对局域网内的主机访问

如何实现对局域网内的主机访问?
例如,主机A在一个局域网内,主机B在另一个局域网内(即两个主机不在同一局域网),这两个局域网都连在Internet上。现在想要A和B直接进行通讯,要怎么做呢?主机A访问主机B的外网IP是不行的。
------解决方案--------------------
vpn法1
利用vpn搭建虚拟专网,这样你俩就在一个局域网内了。一般的vpn软件还是需要一个外网服务器,否则无法拨号

vpn法2
有一个很牛的软件叫TeamViewer,里面自带vpn。相当于此商家为你提供了免费的外网服务器

p2p法
需要一个额外的外网服务器来做协商,实现p2p连接。但这种连接往往是基于udp的,tcp的p2p不一定能实现

端口映射法
其中一方能够将自身地址映射到外网上,另一方连接这一方即可