0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文读懂p2p实现原理和NAT的类型

C语言专家集中营 来源:feiyan 2018-12-09 10:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

p2p实现原理

什么是打洞,为什么要打洞

由于Internet的快速发展 IPV4地址不够用,不能每个主机分到一个公网IP 所以使用NAT地址转换。

下面是我在网上找到的一副图

一文读懂p2p实现原理和NAT的类型

一般来说都是由私网内主机(例如上图中“电脑A-01”)主动发起连接,数据包经过NAT地址转换后送给公网上的服务器(例如上图中的“Server”),连接建立以后可双向传送数据,NAT设备允许私网内主机主动向公网内主机发送数据,但却禁止反方向的主动传递,但在一些特殊的场合需要不同私网内的主机进行互联(例如P2P软件、网络会议、视频传输等),TCP穿越NAT的问题必须解决。

下面是NAT的几种类型

NAT设备的类型对于TCP穿越NAT,有着十分重要的影响,根据端口映射方式,NAT可分为如下4类,前3种NAT类型可统称为cone类型。(1)全克隆( Full Clone) : NAT把所有来自相同内部IP地址和端口的请求映射到相同的外部IP地址和端口。任何一个外部主机均可通过该映射发送IP包到该内部主机。(2)限制性克隆(Restricted Clone) : NAT把所有来自相同内部IP地址和端口的请求映射到相同的外部IP地址和端口。但是,只有当内部主机先给IP地址为X的外部主机发送IP包,该外部主机才能向该内部主机发送IP包。(3)端口限制性克隆( Port Restricted Clone) :端口限制性克隆与限制性克隆类似,只是多了端口号的限制,即只有内部主机先向IP地址为X,端口号为P的外部主机发送1个IP包,该外部主机才能够把源端口号为P的IP包发送给该内部主机。(4)对称式NAT ( Symmetric NAT) :这种类型的NAT与上述3种类型的不同,在于当同一内部主机使用相同的端口与不同地址的外部主机进行通信时, NAT对该内部主机的映射会有所不同。对称式NAT不保证所有会话中的私有地址和公开IP之间绑定的一致性。相反,它为每个新的会话分配一个新的端口号。

先假设:有一个服务器S在公网上有一个IP,两个私网分别由NAT-A和NAT-B连接到公网,NAT-A后面有一台客户端A,NAT-B后面有一台客户端B,现在,我们需要借助S将A和B建立直接的TCP连接,即由B向A打一个洞,让A可以沿这个洞直接连接到B主机,就好像NAT-B不存在一样。

实现过程如下:1、 S启动两个网络侦听,一个叫【主连接】侦听,一个叫【协助打洞】的侦听。2、 A和B分别与S的【主连接】保持联系。3、 当A需要和B建立直接的TCP连接时,首先连接S的【协助打洞】端口,并发送协助连接申请。同时在该端口号上启动侦听。注意由于要在相同的网络终端上绑定到不同的套接字上,所以必须为这些套接字设置 SO_REUSEADDR 属性(即允许重用),否则侦听会失败。4、 S的【协助打洞】连接收到A的申请后通过【主连接】通知B,并将A经过NAT-A转换后的公网IP地址和端口等信息告诉B。5、 B收到S的连接通知后首先与S的【协助打洞】端口连接,随便发送一些数据后立即断开,这样做的目的是让S能知道B经过NAT-B转换后的公网IP和端口号。6、 B尝试与A的经过NAT-A转换后的公网IP地址和端口进行connect,根据不同的路由器会有不同的结果,有些路由器在这个操作就能建立连接,大多数路由器对于不请自到的SYN请求包直接丢弃而导致connect失败,但NAT-A会纪录此次连接的源地址和端口号,为接下来真正的连接做好了准备,这就是所谓的打洞,即B向A打了一个洞,下次A就能直接连接到B刚才使用的端口号了。7、 客户端B打洞的同时在相同的端口上启动侦听。B在一切准备就绪以后通过与S的【主连接】回复消息“我已经准备好”,S在收到以后将B经过NAT-B转换后的公网IP和端口号告诉给A。8、 A收到S回复的B的公网IP和端口号等信息以后,开始连接到B公网IP和端口号,由于在步骤6中B曾经尝试连接过A的公网IP地址和端口,NAT-A纪录了此次连接的信息,所以当A主动连接B时,NAT-B会认为是合法的SYN数据,并允许通过,从而直接的TCP连接建立起来了。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • P2P
    P2P
    +关注

    关注

    0

    文章

    152

    浏览量

    28537
  • NAT
    NAT
    +关注

    关注

    0

    文章

    169

    浏览量

    17219

原文标题:p2p实现原理及打洞技术介绍

文章出处:【微信号:C_Expert,微信公众号:C语言专家集中营】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入剖析 FDFS2P753Z:集成 P 沟道 PowerTrench MOSFET 与肖特基二极管

    ,我们就来详细剖析款名为 FDFS2P753Z 的产品,它是集成了 P 沟道 PowerTrench MOSFET 和肖特基二极管的器件。 文件下载: FDFS2P753Z-D.pd
    的头像 发表于 04-21 11:10 179次阅读

    深入解析 onsemi NTJS4151P P 沟道 MOSFET

    的 NTJS4151P 这款 P 沟道 MOSFET,探讨它的特性、参数以及应用场景。 文件下载: NTJS4151P-D.PDF 产品概述 NTJS4151P 是 onsemi 公司
    的头像 发表于 04-19 17:05 1021次阅读

    Onsemi P沟道双MOSFET NTMD3P03和NVMD3P03的特性与应用

    03和NVMD3P03这两款P沟道双MOSFET,以其出色的性能和广泛的应用场景,受到了工程师们的关注。下面我们就来详细了解下这两款器件。 文件下载: NTMD3P03R2-D.PD
    的头像 发表于 04-19 16:45 573次阅读

    探索 onsemi NTMS10P02R2 P 沟道 MOSFET:特性、参数与应用分析

    我们就来详细探讨 onsemi 推出的 NTMS10P02R2 P 沟道增强型 MOSFET,起分析它的特性、参数以及适用的应用场景。 文件下载: NTMS10P02R2-D.PDF
    的头像 发表于 04-19 16:25 604次阅读

    深入解析 onsemi NTS4101P P 沟道 MOSFET

    沟道 MOSFET,了解它的特点、参数以及应用场景。 文件下载: NTS4101P-D.PDF 产品概述 NTS4101P 是 onsemi 推出的P 沟道功率 MOSFET,
    的头像 发表于 04-19 15:15 93次阅读

    探索 onsemi NTLJS7D2P02P8Z P 沟道 MOSFET 的卓越性能

    深入探讨 onsemi 公司推出的 NTLJS7D2P02P8Z P 沟道 MOSFET,了解其特点、应用以及各项电气特性。 文件下载: NTLJS7D2P02P8Z-D.PDF
    的头像 发表于 04-14 09:25 424次阅读

    安森美P沟道MOSFET:NVTFS012P03P8Z与NVTFWS012P03P8Z解析

    小尺寸的特点,非常适合对空间要求较高的紧凑型设计。对于那些需要在有限空间内实现高性能的电子设备来说,这种小尺寸封装无疑是个不错的选择。大家在设计小型化设备时,是否会
    的头像 发表于 04-07 13:55 152次阅读

    Onsemi FQD2P40 P-Channel MOSFET:性能与应用解析

    。今天,我们将深入探讨 Onsemi 公司的 FQD2P40 P - 通道增强型功率 MOSFET,了解其特性、参数及应用场景。 文件下载: FQD2P40-D.pdf 、产品概述
    的头像 发表于 03-30 11:25 227次阅读

    安森美FQD2P40 P沟道MOSFET:性能与应用解析

    安森美FQD2P40 P沟道MOSFET:性能与应用解析 在电子设计领域,MOSFET作为关键的功率器件,广泛应用于各类电路中。今天我们就来深入探讨安森美(onsemi)的FQD2P40 P
    的头像 发表于 03-29 15:25 594次阅读

    1P、1P+N与2P断路器的区别与应用

    在家庭和工业用电系统中,断路器是保障电路安全的关键设备。常见的断路器类型包括1P、1P+N和2P,它们在结构、功能和应用场景上存在显著差异。正确选择断路器
    的头像 发表于 03-05 17:08 1553次阅读

    AWR2944P/AWR2E44P等雷达传感器芯片详解

    AWR2944P/AWR2E44P等雷达传感器芯片详解 在汽车雷达应用领域,高精度、高性能的传感器是实现智能驾驶功能的关键。TI推出的AWR2944P、AWR
    的头像 发表于 01-26 09:30 2707次阅读

    C语言指针p、*p、&p、*&p、&*p分别代表什么

    的数据类型。例如,int *p; 定义了个指向int类型变量的指针变量p。 *p:解引用操作符
    发表于 01-07 07:34

    单纳秒激光P1/P2/P3刻划实现>99.3%GFF的倒置钙钛矿模组

    是通过P1、P2P3激光刻划实现子电池间的电学串联,以减少互连损耗。钙钛矿P1激光划线测试仪是
    的头像 发表于 12-22 09:03 564次阅读
    单纳秒激光<b class='flag-5'>P</b>1/<b class='flag-5'>P2</b>/<b class='flag-5'>P</b>3刻划<b class='flag-5'>实现</b>&amp;gt;99.3%GFF的倒置钙钛矿模组

    如何使用ipv4_nat模块实现SNAT转发?

    ;, 0}; cmd_ifconfig(5,argument_list1); 问题:在自己的PC机器上设置了个路由 route ADD -p 172.16.100.59mask
    发表于 09-29 06:08

    P2P技术——数据采集系统高效存储的关键

    P2P技术凭借其直连高效、低延迟的特点,已成为数据采集系统实现高效数据存储的关键技术。作为专业的数据采集与存储方案提供商,度纬科技的ASMC-PXIe-8016存储卡,不仅完美融合了P2P技术优势
    的头像 发表于 07-24 17:24 827次阅读
    <b class='flag-5'>P2P</b>技术——数据采集系统高效存储的关键