趣谈网络协议-应用层(P2P协议)

2023-10-30

一、FTP

1. 概述

FTP:文件传输协议,使用两个TCP连接来传输文件

  • 控制连接:客户端主动发起连接,服务端被动打开21端口。改连接将客户端命令传送给服务器,并回传服务器应答(list-获取文件目录;reter-取一个文件;store-存一个文件)
  • 数据连接:当有文件进行传输时,创建数据连接用以传输数据

2. FTP两种工作模式

FTP工作模式:主动模式(PORT)和被动模式(PASV)

主动模式:

  1. 客户端随机打开大于1024的端口N,向服务器21端口发起连接,同时客户端监听N+1端口,并通过21端口向服务器发送"port N+1"命令
  2. 服务器将自己的数据端口20连接到客户端指定端口N+1

被动模式:

  1. 客户端打开任意端口N(大于 1024)和 N+1
  2. N端口连接服务器21端口,并发送PASV 命令。服务端开启端口P,服务端21端口返回“227 entering passive mode”消息,消息包含服务器开放用来传输数据的端口P
  3. 客户端收到消息取得端口号之后,会通过 N+1 号端口连接服务器的端口 P,然后在两个端口之间进行数据传输。

二、P2P

1. 概述

FTP问题:难以解决一服务器的带宽压力

P2P(peer-to-peer)特点:

  • 资源分散存储在多个设备中
  • 下载文件时,需要获得已经存储了文件的peer,和这些peer建立点对点连接。一旦下载了文件,当前机器也成了peer的一员。旁边的机器也会从当前机器中下载文件。因此p2p软件一般有下载流量,也有上传流量

2. 种子(.torrent)文件

.torrent 文件:下载文件时,获取有哪些peer有该文件数据

.torrent 文件组成:announce(tracker URL)和文件信息

文件信息:

  • info区:该种子有几个文件、文件有多长、目录结构,以及目录和文件的名字
  • Name字段:顶层目录名字
  • 每个段大小:BitTorrent(简称 BT)协议把一个文件分成很多个小段,然后分段下载。
  • 段哈希值:将整个种子中,每个段的 SHA-1 哈希值拼在一起。

P2P下载流程:

  1. BT客户端解析.torrent文件,得到tracker地址,连接tracker服务器
  2. tracker服务器响应下载者,将其他下载者的IP地址提供给下载者
  3. 下载者连接其他下载者,两者告知对方自己已经有的数据块,交换对方没有的数据块
  4. 下载者每得到一个块,需要计算出下载快的HASH验证码,与.torrent 文件中的对比。若哈希值一致,则说明数据正确,否则需要重新下载该数据块

上述P2P下载流程的特点:

  • 下载过程非中心化
  • 加入P2P网络时,需要依赖tracker(tracker服务器是用来登记有哪些用户在请求哪些资源)

3. 去中心化网络

DHT去中心化网络:

  • 目的:使得tracker去中心化
  • 特点:每个加入这个 DHT 网络的人,都要负责存储这个网络里的资源信息和其他成员的联系信息

Kademlia协议:

  • 每个BitTorrent启动,会承担两个角色,分别是peer(监听TCP 端口以上传和下载文件)、DHT node(监听一个UDP 的端口,加入DHT 的网络)
  • DHT 网络里面,每一个 DHT node 都有一个 ID,DHT node 都有责任掌握一些知识,也就是文件索引,也即它应该知道某些文件是保存在哪些节点上。每个DHT node不会知道全局信息

Kademlia协议指令:

  • PING:测试结点是否在线
  • STORE:要求一个节点存储一份数据
  • FIND_NODE:给定节点 ID 查找一个节点
  • FIND_VALUE:根据文件哈希值(160bitID)查找保存了文件的结点

4. 哈希值

作用:通过哈希算法计算出每个DHT node保存的文件索引

DTH哈希算法特点:

  • 每个文件可以计算出一个哈希值,而 DHT node 的 ID 是和哈希值相同长度的串
  • 如果一个文件计算出一个哈希值,则和这个哈希值一样的那个 DHT node,就有责任知道从哪里下载这个文件,即便它自己没保存这个文件。
  • 除了一模一样的DHT node 应该知道文件存储位置,ID 和这个哈希值非常接近的 N 个 DHT node 也应该知道

DTH哈希算法计算流程:

  1. 种子.torrent 文件里面存储的 node 的地址,这些 node 在 DHT 网络里
  2. 新加入的节点node new通过种子文件获取上述node,找到一个可用的node,加入DHT网络
  3. node new计算文件1的哈希值,通过hash值获取与该哈希值相近的node id,获取下载方式
  4. node new通过DHT 网络获取文件下载索引,通过索引获取存有真实数据的结点node b
  5. node new与node b建立peer连接,下载文件。
  6. node new下载文件后,本地也有该文件,因此需要告知node c以及和node c的ID相近的结点(索引节点),将node new加入node c索引(索引表征含有真实数据的结点)

哈希算法node ID相似度计算方法:通过异或计算

3. DHT网络组织方式与查找方法

DHT网络组织方式:按距离分层。假设基础结点为node1,则与node1异或值为 00001的结点归为“k-bucket 1”;异或值为00010 和 00011的结点为“k-bucket 2”;倒数第 i 位开始不同,与基础节点的距离范围为[2^(i-1), 2^i),归为“k-bucket i”

DHT网络查找其他节点方法:

  1. 假设在node A(00110)查找目标结点10000,计算异或值,得到结果10110。由异或结果可知,目标结点所在的类别为k-bucket 5
  2. node A查找k-bucket 5中是否存在目标结点,存在则返回;不存在则在k-bucket 5随机找一个节点(假设为node c),node c与目标结点距离在2^4内。按同样的方法查找,请求C,在C找计算异或值,定位bucket,找相似结点,直到找到目标结点
  3. 该查找机制通过折半来缩小范围,最坏情况下,时间复杂度为log2(N)(总结点数量为N)

各结点DHT网络结构更新方法:

  1. 每个bucket中,结点ID按最后一次接触的时间倒序排列
  2. 每次执行Kademlia协议指令时更新结构
  3. 当一个节点node new与本节点接触时,检查它是否已经在 k-bucket 中。若结点不在bucket中,且该结点DHT网络信息存储空间已经满了,则ping一下bucket中最旧的结点,若ping通了,则更新最旧的结点的接触时间,将其挪到队列最底端,抛弃node new;否则抛弃最旧的结点,将node new加入bucket
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

趣谈网络协议-应用层(P2P协议) 的相关文章

  • 电商数据接口API深度解析

    随着电子商务的快速发展 电商平台之间的竞争也日益激烈 为了在市场中保持领先地位 电商平台需要不断地优化用户体验 提供个性化的服务和精准的推荐 而这一切都离不开数据 电商数据接口API作为一种高效 便捷的数据交互方式 被广泛应用于电商领域 本
  • 思腾合力赞助CCF YOCSEF太原第十一届学术委员会第三次全体会议

    2024年1月6日 由思腾合力赞助的 CCF YOCSEF太原第十一届学术委员会第三次全体会议暨AC换届选举活动 在山西大学举办 华北区教育行业负责人宋肖敏出席本次会议 会议汇聚了众多学术界和企业界的精英 共同探讨人工智能和计算机科学的未来
  • S281 LoRa网关在智能电力监测系统中的应用

    随着能源消耗的增加和环境保护的要求 智能电力监测系统在电力行业得到了广泛的应用 作为一家领先的科技公司 钡铼技术有限公司推出的S281 LoRa网关为智能电力监测系统提供了强大的支持和解决方案 本文将重点介绍S281 LoRa网关在智能电力
  • 【计算机开题报告】 网上茶叶销售平台设计与开发

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 1 研究背景 随着社会经济的迅速发展和科学技术的全面进步 以计算机与网络技术为基础的信息系统正处于蓬勃发展的时期 随着经济文化水平的提高 近年来 随着科学
  • 八路视频光端机技术导论:多通道视频传输的高效解决方案

    随着光通信技术的快速发展 八路视频光端机 已成为多通道视频传输的有效解决方案 本文将探讨该技术的原理 优势及应用前景 为光通信行业的技术人员和研究学者提供参考 技术原理 八路视频光端机基于 波分复用 WDM 技术 通过一个光纤同时传输多路视
  • 如何使用内网穿透实现iStoreOS软路由公网远程访问局域网电脑桌面

    文章目录 简介 一 配置远程桌面公网地址 二 家中使用永久固定地址 访问公司电脑 具体操作方法是 简介 软路由 是PC的硬件加上路由系统来实现路由器
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 掌握内网渗透之道,成为实战高手,看《内网渗透实战攻略》就够了

    文末送书 文末送书 今天推荐一本网络安全领域优质书籍 内网渗透实战攻略 文章目录 前言 如何阅读本书 目录 文末送书 前言 当今 网络系统面临着越来越严峻的安全挑战 在众多的安全挑战中 一种有组织 有特定目标 长时间持续的新型网络攻击日益猖
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • 「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

    1 什么是 CSRF 面试的时候的著名问题 谈一谈你对 CSRF 与 SSRF 区别的看法 这个问题 如果我们用非常通俗的语言讲的话 CSRF 更像是钓鱼的举动 是用户攻击用户的 而对于 SSRF 来说 是由服务器发出请求 用户 日 服务器
  • HPE Aruba Networking:五大网络现代化策略助力实现校园数字化转型

    作者 Aruba中国区技术销售总监 俞世丹 全球数字化进程日益加深 科技已成为加速教育行业发展的重要驱动力 人工智能 大数据 云计算 物联网 虚拟现实等新兴技术的快速发展 正在深刻改变着教育的形态和模式 为了更好地满足学校师生个性化教育教学
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 网工内推 | 上市公司同程、科达,五险一金,年终奖,最高12k*15薪

    01 同程旅行 招聘岗位 网络工程师 职责描述 1 负责职场 门店网络规划 建设 维护 2 负责网络安全及访问控制 上网行为管理和VPN设备的日常运维 3 负责内部相关网络自动化和系统化建设 4 优化与提升网络运行质量 制定应急预案 人员培
  • 如何通过peerJS 点对点连接接收数据?

    我正在尝试使用peerJS 连接两个对等点 我几乎只是在遵循他们的 入门 但我仍然在挣扎 下面是我到目前为止得到的代码
  • HTML5 Websockets 可以在不使用服务器的情况下直接连接 2 个客户端(浏览器)吗? (P2P)[重复]

    这个问题在这里已经有答案了 使用 HTML5 Websockets 我可以直接在 2 个客户端 浏览器 之间打开套接字 假设我知道它们的 IP 地址并且不存在 NAT 遍历问题 我想将一些数据直接从一个浏览器发送到另一个浏览器 本质上是创建
  • 比特币客户端如何确定第一个连接的IP地址?

    据我所知 比特币是一种 p2p 协议P2P协议必须有一个专用的中央服务器 https stackoverflow com questions 310607 peer to peer methods of finding peers 但据说比
  • 使用 STUN 打孔

    我目前正在尝试通过 Internet 发送 UDP 消息 并且必须为端点 A 和 B 都位于 NAT 后面 设置防火墙 为此 我想使用 STUN 服务器进行打孔 当 A 创建对 STUN 服务器的请求 例如 私有 85 1 1 12 600

随机推荐