导航

P2P技术入门,NAT,Udp,Tcp打洞 【转】

Posted on 2012-04-04 11:30  网名还没想好  阅读(848)  评论(0编辑  收藏  举报

1、什么是p2p:

P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义。这样一来,P2P也就可以理解为“伙伴对伙伴”的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。。。。

具体参见:http://www.kuqin.com/p2p/20080411/6476.html
我们平时所说的对等网,就是指P2P网络,P2P的概念弱化了互联网中服务器的地位,使得每台计算机都成为服务器,同时又是使用者,大家来共享自己所需要的资源。

 

2、什么是NAT:

要了解P2P就必须了解NAT,我们写一般的套接字程序时都知道,Tcp连接时,连接方如果在内网,它的内网Ip是192.168.0.2,网关是 192.168.0.1,那么它请求61.155.8.220这台公网Ip服务器时,服务器如何将信息反馈到内网的192.168.0.2呢?

要理解这个就必须先从NAT了解起?

NAT(网络地址转换)提供了局域网共享上网的简单方案,内部网络用户连接互联网时,NAT将用户的内部IP地址转换成一个外部公共IP地址,反之,数据从外部返回时,NAT反向将目标地址替换成初始的内部用户的地址。实际上NAT隐藏了内部IP地址,构成了一个天然的防火墙。

还回到上面的例子,路由器本身拥有2个ip,一个内网ip:192.168.0.1,一个公网ip:127.123.3.37;对于内网机器192.168.0.2(发起端口4000)连接61.155.8.220(端口6000),过程是这样:

192.168.0.2:4000->路由NAT转换外网一侧127.123.3.37:60000->61.155.8.220:6000;

同理翻过来的反馈

61.155.8.220:6000->路由NAT转换内网一侧192.168.0.1:60000->192.168.0.2:4000;

NAT的工作就是做了一个ip和端口的转换,以便适应内外网环境。当然不同的路由可能会有不同的NAT形式,下面就来介绍4种主要的NAT

     1、Full Cone NAT: 主机前有NAT设备,NAT规则如下:从主机UDP端口A发出的数据包都会对应到NAT设备出口IP的端口B,并且从任意外部地址发送到该NAT设备UDP端口B的包都会被转到主机端口A.

     2、Restricted cone NAT: 主机前有NAT设备,NAT规则如下:从主机UDP端口A发出的数据包都会对应到NAT设备出口IP的端口B,但只有从之前该主机发出包的目的IP发出到该NAT设备UDP端口B的包才会被转到主机端口A.

     3、Port Restricted cone NAT: 主机前有NAT设备,NAT规则如下:从主机UDP端口A发出的数据包都会对应到NAT设备出口IP的端口B,但只有从之前该主机发出包的目的IP/PORT发出到该NAT设备UDP端口B的包才会被转到主机端口A.

     4、Symmetric NAT: 主机出口处没有NAT设备,但有防火墙,且防火墙规则如下:从主机UDP端口A发出的数据包保持源地址,但只有从之前该主机发出包的目的IP/PORT发出到该主机端口A的包才能通过防火墙.

现在基本上低端的路由都是Full Cone NAT,也是对p2p网络打孔支持最好的。

1、什么是p2p:

P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义。这样一来,P2P也就可以理解为“伙伴对伙伴”的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。。。。

具体参见:http://www.kuqin.com/p2p/20080411/6476.html
我们平时所说的对等网,就是指P2P网络,P2P的概念弱化了互联网中服务器的地位,使得每台计算机都成为服务器,同时又是使用者,大家来共享自己所需要的资源。

 

2、什么是NAT:

要了解P2P就必须了解NAT,我们写一般的套接字程序时都知道,Tcp连接时,连接方如果在内网,它的内网Ip是192.168.0.2,网关是 192.168.0.1,那么它请求61.155.8.220这台公网Ip服务器时,服务器如何将信息反馈到内网的192.168.0.2呢?

要理解这个就必须先从NAT了解起?

NAT(网络地址转换)提供了局域网共享上网的简单方案,内部网络用户连接互联网时,NAT将用户的内部IP地址转换成一个外部公共IP地址,反之,数据从外部返回时,NAT反向将目标地址替换成初始的内部用户的地址。实际上NAT隐藏了内部IP地址,构成了一个天然的防火墙。

还回到上面的例子,路由器本身拥有2个ip,一个内网ip:192.168.0.1,一个公网ip:127.123.3.37;对于内网机器192.168.0.2(发起端口4000)连接61.155.8.220(端口6000),过程是这样:

192.168.0.2:4000->路由NAT转换外网一侧127.123.3.37:60000->61.155.8.220:6000;

同理翻过来的反馈

61.155.8.220:6000->路由NAT转换内网一侧192.168.0.1:60000->192.168.0.2:4000;

NAT的工作就是做了一个ip和端口的转换,以便适应内外网环境。当然不同的路由可能会有不同的NAT形式,下面就来介绍4种主要的NAT

    1、Full Cone NAT: 主机前有NAT设备,NAT规则如下:从主机UDP端口A发出的数据包都会对应到NAT设备出口IP的端口B,并且从任意外部地址发送到该NAT设备UDP端口B的包都会被转到主机端口A.

    2、Restricted cone NAT: 主机前有NAT设备,NAT规则如下:从主机UDP端口A发出的数据包都会对应到NAT设备出口IP的端口B,但只有从之前该主机发出包的目的IP发出到该NAT设备UDP端口B的包才会被转到主机端口A.

    3、Port Restricted cone NAT: 主机前有NAT设备,NAT规则如下:从主机UDP端口A发出的数据包都会对应到NAT设备出口IP的端口B,但只有从之前该主机发出包的目的IP/PORT发出到该NAT设备UDP端口B的包才会被转到主机端口A.

    4、Symmetric NAT: 主机出口处没有NAT设备,但有防火墙,且防火墙规则如下:从主机UDP端口A发出的数据包保持源地址,但只有从之前该主机发出包的目的IP/PORT发出到该主机端口A的包才能通过防火墙.

现在基本上低端的路由都是Full Cone NAT,也是对p2p网络打孔支持最好的。