微信视频网站建设多少钱,网站代码审计,软件开发是前端还是后端,大数据获客系统TP 采用两个 TCP 连接来传输一个文件。
控制连接#xff1a;服务器以被动的方式#xff0c;打开众所周知用于 FTP 的端口 21#xff0c;客户端则主动发起连接。该连接将命令从客户端传给服务器#xff0c;并传回服务器的应答。常用的命令有#xff1a;list——获取文件目…TP 采用两个 TCP 连接来传输一个文件。
控制连接服务器以被动的方式打开众所周知用于 FTP 的端口 21客户端则主动发起连接。该连接将命令从客户端传给服务器并传回服务器的应答。常用的命令有list——获取文件目录reter——取一个文件store——存一个文件。数据连接每当一个文件在客户端与服务器之间传输时就创建一个数据连接。FTP 的两种工作模式。
每传输一个文件都要建立一个全新的数据连接。FTP 有两种工作模式分别是主动模式PORT和被动模式PASV这些都是站在 FTP 服务器的角度来说的。
主动模式下客户端随机打开一个大于 1024 的端口 N向服务器的命令端口 21 发起连接同时开放 N1 端口监听并向服务器发出 “port N1” 命令由服务器从自己的数据端口 20主动连接到客户端指定的数据端口 N1。
被动模式下当开启一个 FTP 连接时客户端打开两个任意的本地端口 N大于 1024和 N1。第一个端口连接服务器的 21 端口提交 PASV 命令。然后服务器会开启一个任意的端口 P大于 1024返回“227 entering passive mode”消息里面有 FTP 服务器开放的用来进行数据传输的端口。客户端收到消息取得端口号之后会通过 N1 号端口连接服务器的端口 P然后在两个端口之间进行数据传输。
DHTDistributed Hash Table的去中心化网络。每个加入这个 DHT 网络的人都要负责存储这个网络里的资源信息和其他成员的联系信息相当于所有人一起构成了一个庞大的分布式存储数据库。
任何一个 BitTorrent 启动之后它都有两个角色。一个是 peer监听一个 TCP 端口用来上传和下载文件这个角色表明我这里有某个文件。另一个角色 DHT node监听一个 UDP 的端口通过这个角色这个节点加入了一个 DHT 的网络。 在 DHT 网络中朋友之间怎么沟通呢
Kademlia 算法中每个节点只有 4 个指令。
PING测试一个节点是否在线还活着没相当于打个电话看还能打通不。STORE要求一个节点存储一份数据既然加入了组织有义务保存一份数据。FIND_NODE根据节点 ID 查找一个节点就是给一个 160 位的 ID通过上面朋友圈的方式找到那个节点。FIND_VALUE根据 KEY 查找一个数据实则上跟 FIND_NODE 非常类似。KEY 就是文件对应的 160 位的 ID就是要找到保存了文件的节点。
DHT 网络中朋友圈如何更新呢
每个 bucket 里的节点都按最后一次接触的时间倒序排列这就相当于朋友圈里面最近联系过的人往往是最熟的。每次执行四个指令中的任意一个都会触发更新。当一个节点与自己接触时检查它是否已经在 k-bucket 中也就是说是否已经在朋友圈。如果在那么将它挪到 k-bucket 列表的最底也就是最新的位置刚联系过就置顶一下方便以后多联系如果不在新的联系人要不要加到通讯录里面呢假设通讯录已满的情况PING 一下列表最上面也即最旧的一个节点。如果 PING 通了将旧节点挪到列表最底并丢弃新节点老朋友还是留一下如果 PING 不通删除旧节点并将新节点加入列表这人联系不上了删了吧。 此文章为9月Day17学习笔记内容来源于极客时间《趣谈网络协议》推荐该课程。