好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

2022年UDPTCP打洞.docx

16页
  • 卖家[上传人]:资****
  • 文档编号:269177197
  • 上传时间:2022-03-22
  • 文档格式:DOCX
  • 文档大小:300.44KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • <转) UDP/TCP打洞<穿越 NAT)技术2021-04-17 16:03转自:内容概述:在 p2p 通信领域中,由 NAT〔Network Address Translation , 网络地址转换 >引起的问题已经众所周知了 ,它会导致在 NAT 内部的p2p 客户端在无论以何种有效的公网 ip 都无法拜访的问题;虽然目前已经进展出多种穿越 NAT 的技术 ,但相关的技术文档却很少,用来证明这些技术的稳固性和优点的实际数据更少;本文的目的在于描述和分析在实际中运用得最广泛、最牢靠同时也是最简洁的一种 NAT 穿越技术,该技术通常被称为 “打洞 ”技术;目前, “打洞 ”技术已经在 UDP 通信领域中得到了广泛的懂得和应用,在此,也将争论如何利用它实现牢靠的 p2p 的 TCP 流通信;在收集了大量的 “打洞 ”技术可以穿越的NAT 设备和网络的数据以后,我们发觉 82%的已测 NAT 设备支持UDP 形式的 “打洞”穿越, 64%的已测 NAT 设备支持 TCP 流形式的 “打洞”穿越;由于重量级 p2p 应用程序 〔如, VOIP 、BT、嬉戏等 >的用户需求量连续上升,并且该事实也已经引起了 NAT 设备生产厂商的广泛关注,因此,我们认为将来会有越来越多的 NAT 设备供应对 “打洞”穿越技术的支持;1、介绍用户量高速增长以及大量安全问题的庞大压力迫使 Internet 技术不断向前进展,但是这些新兴的技术很大程度地增加了应用程序开发的成本和复杂性; Internet 最初的地址体系是每个节点有一个唯独不变的全局地址,可以通过该地址直接与任何其它的节点进行通信,而现如今, 该地址体系已经被新的实际上广泛使用的地址体系所替换,新的地址 体系是由全局地址域和通过 NAT 接入全局地址域的大量私有地址域组成;在新的地址体系中 <如图 1 所示),只有在 “main全”局地址域中的节点可以在网络中很简洁地与任何其它的拥有全局地址的节点通信,由于该节点拥有全局的、唯独的、可路由的地址;在私有网络中的节点可以与在同一个私有网络中的其它节点进行通信,并且在通常情形下可以向全局地址中的某个 “闻名 ”的节点发起 TCP 连接或发送 UDP 数据包; NAT 设备在此扮演的角色就是为从内网向公网发起的连接的节点安排暂时的转发 session,将来自内网的数据包的地址和端口转换为公网的地址和端口,将来自公网的数据包的地址和端口转换为内网的 端口和地址,同时 NAT 将屏蔽全部未经授权的来自公网的数据包;15 / 14新的 Internet 地址体系特别适合于 “客户端 /服务器 ”这样的通信模式,一个典型的 C/S 通信模式是:客户端在内网 <私有地址域),服务器在公网<全局地址域),通过 NAT 将内网和公网连接起来;这种地址体系使得在不同内网 <私有地址域)中的两个节点很难直接通信,而这恰恰是 p2p 应用 〔如,会议或嬉戏 >中最基本的要求;很明显,我们需要一种方法即使在 NAT 设备存在的前提下,仍旧能够无障碍地实现 p2p 通信;在不同内网的两个节点之间建立 p2p 连接的最有效的方法就是 “打洞”;该技术在基于 UDP 的应用程序中得到了广泛的应用,同样的, 该技术也可以用于基于 TCP 的应用程序;好玩的是,与 “打洞 ”字面上的意思刚好相反,该技术不会影响到内网的安全;事实上, “打洞 ”技术使得 p2p 软件的绝大部分功能都在 NAT 设备默认的安全策略的掌握之下,这些都由 NAT 设备建立的 session来治理;本文阐述了适用于UDP 和 TCP 的“打洞”技术,并具体描述了重要 “打洞 ”过程中,应用程序和 NAT 设备之间的行为;不幸的是,由于 NAT 设备的响应和行为不是标准的,所以没有任何技术可以穿越现有的全部 NAT 设备;本文供应了一些在现有 NAT 设备上进行 “打洞 ”的试验结果;我们收集的数据来自于互联网上使用了“ NAT Check工”具并在大量不同生产厂商的 NAT 设备上进行 “打洞 ”实验的用户;由于数据是来自于一个叫做 “se-lfselecting 的”用户社区,或许不会完全代表在 Internet 上真正部署和使用的 NAT 设备,但是结果无论如何仍是很令人兴奋的;在做基本的 “打洞”操作评估的时候,我们应当指出在现有的 NAT 设备“打洞 ”的复杂度上,不同的复杂度会有不同的结果;但目前我们把讨论的重点集中于开发最简洁的,可以应用于任何网络拓扑结构的、稳定的、有正确 NAT 响应的 NAT 设备上的 “打洞 ”技术;我们有意防止使用一些 “聪慧的小把戏 ”通过欺诈某些 NAT 设备来达到短期内穿越较多的 NAT 设备,但从长期来看会引起网络未知错误的技术;尽管引入 IPv6 会极大地增加互联网的地址空间,从而削减对于 NAT 设备的需求量,但短期内 IPv6 的确增加了对 NAT 设备的需求量,由于 NAT 设备本身供应了一种便利的方法进行 IPv4 与 IPv6 地址域转换;另外私有网络上建立匿名和加密拜访节点也有利于组织机构的安全性以及不受外界干扰,这些都意味着 NAT 仍将存在相当长的一段时间;同样,防火墙技术也不会由于有了足够的 ip 地址而消逝, IPv6 的防火墙仍旧会默认丢掉全部未经授权的数据包,仍旧可以让在 IPv6 环境下工作的应用程序 “打洞”;本文接下来的部分根据如下的方式组织:其次章介绍基本的 NAT 穿越概念和术语;第三章介绍 UDP“打洞”过程;第四章介绍 TCP“打洞”过程;第五章介绍支持 “打洞”的 NAT 设备必需具有那些特性;第六章介绍我们在目前流行的 NAT 设备上的 “打洞”试验结果;第七章争论相关的网络问题;第八章全文总结以及终止语;2、基本概念本节介绍了本文使用到的基本的 NAT 术语,着重描述了适用于 UDP 和 TCP 两种协议的通用的 NAT 穿越技术;2.1 、NAT 术语本文绝大部分术语和分类来自于 RFC 2663 定义,另外一些来自于较新的 RFC 3489 中的定义;懂得 session是很重要的;一个 TCP 或 UDP 的 session endpoint是由一个 IP 地址,端口号组成,每个 session是由两个 session endpoint构成;从内网节点的角度来看,一个 session由 4 部分组成分别为:本地IP,本地端口,远端 IP,远端端口; session的方向通常代表了数据包的初始流淌的方向;对于 TCP 来说就是 SYN 包的流向,对于 UDP 来说就是第一个用户数据包的流向;NAT 有许多种,但最普遍的一种类型叫做 “传统 ” NAT,或者 “向外”NAT;他们在内网和公网之间供应了一个 “不对称 ”桥的映射; “向外”NAT在默认情形下只答应向外的 session穿越 NAT :从外向内的的数据包都会被丢弃掉,除非 NAT 设备事先已经定义了这些从外向内的数据包是已存在的内网 session的一部分;“外向 ” NAT会造成 p2p 协议的纷乱,由于当 p2p 的双方打算向在不同NAT 后面的对方开头通信的时候,无论哪一方试图初始化一个session,另一方的 NAT 都会拒绝这个恳求; NAT 穿越的核心思想就是让 p2p 的双方的 NAT 看上去都是 “向外 ”的 NAT ;“向外 ” NAT有两种类型: <1) “基础 ” NAT,该 NAT 只转换 IP 地址,不转换端口号; <2) NAPT〔Network Address/Port Translation>NAPT 转换整个 session endpoints;由于 NAPT 答应内网的多个节点通过共享的方式使用同一个的公共的 IP 地址,因此,支持 NAPT 的 NAT 设备才会越来越多;尽管本文通篇争论的内容都是基于支持 NAPT 的 NAT 设备的,但这些规律和技术同样适用于 “基础”NAT;2.2 转发方式最牢靠但同时也是效率最低的 p2p 穿越 NAT 进行通信的方法是采纳类似 C/S 方式的转发;假定两个节点 A 和 B 每个节点都有向外的 TCP 或UDP 连接,联入公共的已知服务器 S,S 的公网 IP 地址是18.181.0.31,端口号是 1234<如图 2 所示) ,每个客户端位于不同的私有内网中,并且它们的 NAT 设备阻碍了客户端之间直接的 p2p 连接;做为对直连方案的替代方案,两个客户端可以利用公共的服务器 S 进行消息的转发;例如, A 为了将消息送给 B,A 只需将消息发给 S,然后由 S 转发给 B,这一过程将使用 A 与 B 事先与 S 建立好的连接;转发方式通常只能在双方客户端都连接到服务器的时候有效;这种方式的缺点在于,它假定服务器的处理才能和网络带宽以及通信推迟都是抱负的情形下,不会受到客户端个数的影响;但是,由于没有其它的方法能够像转发方式那样,可以穿越现存的全部 NAT 设备,因此在构建高牢靠性的 p2p 系统的时候,通过服务器转发的方式照旧是一个特别有用的保证系统牢靠性的方法; TURN 协议定义了如何实现安全的转发方式;2.3 反向连接方式一些 p2p 的应用程序采纳了直接但是有所限制的技术来实现 NAT 穿越,该技术叫做 “反向连接 ”,这是用于当两个节点联入服务器 S 的时候,只有一个一个节点在 NAT 设备的后面 <如图 3 所示);假如 A 希望建立与 B 的连接,那么 A 可以直接联入 B,由于 B 是在公网中存在的,没有经过 NAT 转换,而且 A 的 NAT 设备也答应 A 直接由内网发起向外网的连接;假如 B 期望建立与 A 的连接,很不幸, A 的 NAT 设备会阻挡该操作,此时, B 可以借助于转发服务器 S,向 A 发送 “反向连接 ”恳求,由 A“主动”连接 B,从而达到 A 与 B 的 p2p 通信的目的;尽管该技术的局限性特别明显,但是使用已知的服务器做为中介帮助p2p 客户端双方进行 p2p 连接的思想已经成为了更加通用的 “打洞 ”技术的基本思想;3 UDP 打洞方式即使两个 p2p 客户端都位于 NAT 设备后面, UDP 打洞方式也能够通过已知的服务器实现 p2p 客户端直连;该技术在 RFC 3027 的第 5.1 节中曾有所提及,在网络上可以找到对其较模糊的描述,在最近的 IP 协议试验中得到应用,在多种嬉戏协议中得到了应用;3.1 集中服务器打洞技术假定客户端 A 和 B 可以与公网内的已知的集中服务器建立UDP 连接<可以互发 UDP 数据包);当一个客户端在 S 上登陆的时候,服务器记录下该客户端的两个 endpoints

      点击阅读更多内容
      相关文档
      5.江苏省扬州市2023-2024学年高一上学期1月期末检测数学试题.docx 山西省长治市2023-2024学年高二上学期期末化学试题.docx 1.甘肃省张掖市某重点校2023-2024学年高一上学期9月月考数学试题.docx 山东省日照市第一中学2023-2024学年高一上学期12月月考数学试卷.docx 5.湖北省武汉市部分重点中学2023-2024学年高二上学期期中联考数学试题.docx 2.河南省部分名校2023-2024学年高二上学期1月期末考试数学试题.docx 山东省日照市第一中学2023-2024学年高二上学期第二次单元过关测试(12月)数学试题.docx 四川省德阳市高中2023-2024学年高二上学期期末教学高中政治试题.docx 3.安徽省合肥市普通高中联盟2023-2024学年高二上学期1月期末联考数学试题.docx 12.山西省晋中市2023-2024学年高一上学期期末调研数学试题.docx 天津市四校2023-2024学年高一上学期期末联考政治试题.docx 4.山西省太原市2023-2024学年高二上学期期中学业诊断数学试卷.docx 4.甘肃省武威市2023-2024学年高二下学期6月月考数学试题.docx 山东省威海市2023-2024学年高二上学期期末考试化学试题.docx 3.福建省莆田市五校联盟2023-2024学年高二上学期期中数学试题.docx 9.安徽省马鞍山市2023-2024学年高一上学期2月期末数学试题.docx 7.山西省2023-2024学年高二上学期11月期中考试数学试题.docx 9.重庆第十一中学校2023-2024学年高二下学期3月月考数学试题.docx 3.湖南省名校联考联合体2023-2024学年高一上学期期末考试数学试题.docx 4.江苏省徐州市2023-2024学年下学期高二年级第三次检测数学试题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.