能利用 SMTP/IMAP 互相发送 IP+遍历猜测 port 来实现 P2P 的 UDP 通讯吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ashiamd
V2EX    问与答

能利用 SMTP/IMAP 互相发送 IP+遍历猜测 port 来实现 P2P 的 UDP 通讯吗?

  •  
  •   ashiamd 2020-11-14 21:42:19 +08:00 1228 次点击
    这是一个创建于 1869 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 首先,说下我自己对 NAPT 的理解:

      ( 1 )平时如果要自己通过 NAPT 来实现两个无公网 IP 的客户端的对接,那么正常是要通过一个拥有公网的服务器(主机)来完成双方互相发现的过程。

      ( 2 ) NAPT 根据我所知,就是无公网 IP 的普通用户其 IP+Port 被 ISP 网络服务提供商映射到一个公网 IP+Port,然后用这个 ISP 的公网 ip+port 和外部联系。

      ( 3 )之前我一个项目里服务器收到的客户端 IP 就是 ISP 的 IP,印象里我那时候测试,自己本地是大概 40-50 秒左右 NAPT 会变更端口,如果开多个客户端,则 30 ~ 40 秒左右是一个稳定的 NAPT 能保活的时间(即能复用原本的 port )

    ============================

    1. 然后就是我对 SMTP/IMAP 来实现 NAPT 的猜想

    大致猜想如下:

    ( 1 )因为 SMTP/IMAP 有很多开发包+大多数邮箱提供对应的支持,那么能不能定时发送加密后的邮件到邮箱服务器;另一头再自动拉取邮件解密,然后通过邮件里的信息得知对面的 IP(其网络服务提供商 ISP 进行映射后的 IP)。 ( 2 )第一步骤只知道 ip,然后需要猜测端口 port 是多少,端口总共 65535 个,假设 4 核 CPU 开 4 线程并行执行发送 UDP 包给远程 IP(通过邮件得知的对面 ISP 的公网 IP),假设 port 保活就 30s,那么大概需要发送( 65535 / 4 / 30 )= 546.125 个包每秒。 ( 3 )假设这么夸张的 UDP 发送,没被 ISP 限流什么的,那接收方就能根据收到的 UDP 包(假设数据加密,只有自己能解密)得知对方的 IP+port ;然后回发 UDP 数据 ( 4 )双方互相得知对方 IP+port 之后,之后就 UDP 交流了。 

    =================================

    突然冒出这种奇怪的想法,请问这类想法可行不?

    1 条回复    2020-11-16 14:47:44 +08:00
    julyclyde
        1
    julyclyde  
       2020-11-16 14:47:44 +08:00   1
    1 其实内容都不用写,看看邮件头就行了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2584 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 06:39 PVG 14:39 LAX 22:39 JFK 01:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86