P2P 打洞介绍

1. 什么是P2P

  正常情况下的数据交互:Client_1想要发送数据给 Client_2,需要经历下图所示的步骤:

  不同客户端进行数据交互的时候,数据都需要通过服务器进行转发。因为所有数据都通过服务器进行转发,当有大量客户端进行连接的时候,服务器接收发送的数据量很大,会导致数据交互延时,所以Client_1 与 Client_2 进行大量数据交互的时候,速度会受到Server性能的限制。

   当Client_1 与 Client_2 能够直接进行数据交互,而不通过服务器进行数据转发的话,能够提升数据交互的速度且不受服务器性能的限制。P2P的功能就是为了实现 Point To Point 的通讯方式。

 

如下图所示,就是P2P的通信方式

 

2.什么是NAT 

简单来说,在NAT网关上会有一张映射表,表上记录了内网向公网哪个IP和端口发起了请求,然后如果内网有主机向公网设备发起了请求,内网主机的请求数据包传输到了NAT网关上,那么NAT网关会修改该数据包的源IP地址和源端口为NAT网关自身的IP地址和任意一个不冲突的自身未使用的端口,并且把这个修改记录到那张映射表上。最后把修改之后的数据包发送到请求的目标主机,等目标主机发回了响应包之后,再根据响应包里面的目的IP地址和目的端口去映射表里面找到该转发给哪个内网主机。这样就实现了内网主机在没有公网IP的情况下,通过NAPT技术借助路由器唯一的一个公网IP来访问公网设备。

NAT转换映射表
方向进入路由器离开路由器
Outbound172.23.15.86:1520052.10.83.86:16350
Inbound192.168.15.86:1360062.80.76.35:16321
Outbound52.10.83.86:16350172.23.15.86:15200
Inbound62.80.76.35:16321192.168.15.86:13600

 

 

3.实现P2P

 

 

sdfs

4.demo(C语言)

 

 

http://www.52im.net/thread-50-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值