p2p打洞之nat分类

最近学习了一些p2p的知识,这里做一些笔记。p2p首先要区分网络类型,不同的网络类型有不同的打洞的方式。

1、完全锥形

所谓的完全锥形其实表达得很形象,就是内网机器在局域网内打了一个洞,然后通过这个洞与外网通信。内网机器将数据发到网关时,路由器自动替换掉数据包中的源ip和源端口。并且将这个替换记录下来,记录在 一个表格中。

对外端口源ip源端口
8080xxxx.xxxx.xxxx.xxxxxxxx

这样,在外网发送数据到外网ip的对外端口时,就能够根据之前转发出去的表,查找出这个数据包应该发送到哪台机器的哪个端口。

这里发现,只要知道了 内网机器某个进程在网中的ip和端口,任意一台机器都可以和这台机器通信。

2.对称nat

对称nat会为内网机器的每个网络进程分配一个地址 与端口,如果有多张对外的网卡的话是可以分配不同的ip地址的。也就是说,每次内网机器往外发送数据都可能使用不同的ip地址或者是端口,那么里面应该是会记录这样的一张表。

对外ip对外端口内网ip内网端口
xxxx.xxxx.xxxx.xxxxxxxxyyyy.yyyy.yyyy.yyyyyyyy

这样根据这张表格,就能够记录下来发送包出去的路径,这样如果有回应包的话,也能根据这张表找到回包要发送到哪台内网机器上。

在处理回应包的时候,路由器还可能会对回应包的ip端口作检查,查看这个包是不是自己的应答包。

3.限制锥形 

这个完全锥形的区别在路由器于会对回包做检查,只有是发送包的目标机器回应的包才能被转发给内网机器。那么在路由中应该有这样的记录

源ip源端口目标ip
xxxx.xxxx.xxxx.xxxxxxxxyyyy.yyyy.yyyy.yyyy

 这种情况下,即使知道了内网机器在公网中暴露的ip端口,也只有先收到该机器的包之后才能正常给该机器发包,不然的话包会被路由器丢弃。

4.端口限制锥形nat

这个与限制锥形nat的区别在于即使是同一台机器对内网机器发送回应数据包,也只有通过同一端口发送的数据包才能被路由器转发。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值