【网络技术】p2p技术原理浅析

rw-book-cover

Metadata

  • Author: leopardpan
  • Full Title: 【网络技术】p2p技术原理浅析
  • Category: articles
  • Summary: P2P技术是一种点对点的网络模型,与传统的C/S模型不同,没有中心服务器。P2P的发展背景源自IPv4的限制,导致NAT技术的引入,使得IP地址得以复用,解决了IPv4地址不足的问题。P2P技术的优势包括并行处理能力强、无中心服务器、减少网络传输节点,但也存在架构复杂、安全性低等劣势。不同类型的P2P根据中央化程度和网络拓扑结构进行分类,如一般型、特殊型、结构型、无结构型等。NAT技术在P2P中扮演关键角色,可以穿透NAT设备,确保通信顺畅。
  • URL: https://keenjin.github.io/2021/04/p2p/#1-%E6%A6%82%E8%BF%B0

Highlights

  • 具体而言,就是对于NAT设备自身,作为公有网络的一部分,其他人可以访问,而NAT设备又直接与私有网络之间形成硬件互联。一般而言,请求是由客户端发起的,而客户端是可以触达服务端的(因为服务端是在公有网络上,地址可以访问),服务端是不能直接触达客户端的,因为客户端是在私有网络。这样,当客户端发起请求,请求经过NAT设备出去,我们知道请求是通过五元组信息进行定位,NAT设备此时就负责将请求源(也就是客户端)的IP修改为NAT设备的公有IP,目的是让服务端收到请求后,可以往一个有效地址回复数据,同时记录一下这一次请求的客户端IP到公有IP的转换到一个映射表。 (View Highlight)
  • 当服务端收到数据包,就会往NAT的公有IP回复数据包,数据到达NAT,会再次通过前面记录的映射表,查询到是哪个客户端请求的数据包,进而将数据包中转给对应的客户端。 (View Highlight)
    • Note: 1. 端口号的使用 当内网设备通过NAT设备(如路由器)向外部服务器发起请求时,NAT设备会将该请求的私有IP地址和源端口号转换为公网IP地址和一个新的源端口号。这个新的源端口号是在公网IP地址范围内唯一的,用于标识来自同一公网IP地址的不同请求。 2. NAT映射表 NAT设备维护一个映射表,记录内网设备的私有IP地址和源端口号与公网IP地址及其对应的新源端口号之间的映射关系。这样,当从外部服务器返回响应时,NAT设备可以通过查找映射表,根据目的端口号将响应正确地转发回原始请求的内网设备。
  • P2P的Session建立原理: • 客户端A和客户端B分别向集中服务器登录,集中服务器记录下他们各自的内外网IP端口(这里集中服务器需要保活和刷新各自IP端口信息) • 客户端A最初不知道如何向客户端B发起连接,于是A向集中服务器发送消息,请求集中服务器帮助建立与客户端B的UDP连接 • 集中服务器将含有B的内外网IP端口发送给A,同时也将A的内外网IP端口发送给B • A开始向B的内外网地址二元组发送UDP数据包,并且A会自动锁定第一个给出响应的B的地址二元组(为何需要同时发两组数据包?因为并不清楚B是与A在同一个NAT网关下,还是不同NAT网关下) • B开始向A的内外网地址二元组发送UDP数据包,并且B会自动锁定第一个给出相应的A的地址二元组 (View Highlight)