我让两台台式电脑直接互相通话。它们都具有支持千兆以太网的网络适配器。那是 1 Gbps 或 1000 Mbps。我将它们与全新的 10 米长 Cat6 UTP直连电缆连接,我非常接近理论最大值。Windows 任务管理器(网络选项卡)在一个方向上显示 844 - 946 Mbps。但在另一个方向,它只显示大约 326 - 365 Mbps。
Local: 192.168.100.152
Remote: 192.168.100.151
Run Code Online (Sandbox Code Playgroud)
本地计算机运行 Windows 8.1 Pro,我将它远程连接到另一台运行 Windows Vista Ultimate 的计算机。
Iperf 结果
我用 Iperf 做了一些测试。我每次都进行了 60 秒的测试。我对每个通信方向进行了 10 次测试。然后我将这个表格与测试结果放在一起以获得平均值。
192.168.100.152 -> 192.168.100.151 106 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 108 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 107 MB/s
192.168.100.152 -> 192.168.100.151 104 MB/s
192.168.100.152 -> 192.168.100.151 101 MB/s
192.168.100.152 -> 192.168.100.151 …Run Code Online (Sandbox Code Playgroud) 据我所知,除非我们知道路由器采用的路由机制,否则无法从网络外部向本地网络中的计算机发送数据包。
假设我们有一个如下所示的设置:
计算机-A,IP 192.168.1.2(默认网关 192.168.1.1)
计算机-B,IP 192.168.1.3(默认网关 192.168.1.1)
路由器-C,IP 192.168.1.1(外部 IP 1.1.1.1)
Router-D(外部 IP 2.2.2.2)
计算机-A、计算机-B 和路由器-C 属于同一本地网络。Router-D 想将数据发送到 Computer-A,但它不能不通过 Router-C 来做到这一点。
现在,如果目的端口是 1000,Router-C 会将数据包转发到 Computer-A,如果目的端口是 2000,则将数据包转发到 Computer-B。但可以肯定的是,唯一知道这种路由机制的设备是 Router-C 本身!连电脑 A 和电脑 B 都不知道,对吧?
所以Router-D如果通过1000端口向Router-C发送数据包,就可以向Computer-A发送数据包,但是Router-D怎么知道通过1000端口发送数据包,而不是说1001端口呢?
像 Bittorrent 这样的点对点程序是如何解决这个问题的?我能想到的唯一解决方案是让 Router-D 通过所有端口将数据包发送到 Router-C ,以便将其转发到 Computer-A,但有更好的解决方案吗?
当我播种已完成的种子时,我经常注意到除了离开我的 PC 的字节外,还有进入我的 PC 的字节。这方面的例子可以在下图中看到。我使用 Tixati 作为 torrent 客户端。
我知道我在播种时正在上传数据,但是如果 torrent 已经完成,我要下载什么?也许是P2P协议数据?(我不熟悉底层工作原理)但是,有时传入的传输大小接近 1kB,这对于简单的开销来说似乎不合理。
我收到什么数据?是坚持吗?这种行为在 Torrent 客户端中是否有所不同?

我的意思是,如果有人从我这里下载文件,这是否意味着我是主机并且他正在连接到我?
还是我和他有联系?
无论哪种方式,我们都需要一个开放端口,不是吗?
我的路由器中没有到我的计算机的任何开放端口路由,那么我是如何接受连接的?
据说,对等网络不是用于路由和处理数据的服务器基础,仅使用服务器来获取最新的节点地址(可能是它们的互联网 IP 地址)以直接连接到其他节点,而无需中间服务器。所以我的问题是,计算机(节点)A如何通过互联网与节点B建立连接。ISP 给我们的 IP 无效并且无法访问。那么这个 p2p 如何通过互联网处理这些无效的节点 IP 地址呢?
我在bittorrent 的上下文中理解术语种子和同级,但是在下载文件时,1(2) 可能代表种子,1(4) 代表同级?这是什么意思 ?
下图显示了这一点:

这意味着什么 ?
另外,torrent 的下载速度取决于什么?我想知道比例。即种子和对等点的比率应该是多少,以便下载速度最大。?
我什么时候才能获得更好的下载速度:?
2000 种子 + 5000 同行
2000 种子 + 2000 同行
5000 种子 + 2000 同行
让我验证一下,种子是拥有 100% 文件的种子,而对等点是同时下载和上传文件的种子。
我正在构建一个点对点协议,其中节点通过共享它们所连接的 IP 地址来通告其他节点的存在。此功能称为“对等发现”。我正在运行的节点之一具有静态 IPv4。我们称这台机器为“A”。
当我通过 IPv4 从办公室中连接 WiFi 的计算机连接到 A 时,这些办公室计算机无法良好连接,对等发现不起作用。但当我通过 IPv6 连接时,对等发现效果非常好。办公室机器相互连接,而不仅仅是连接到 A。办公室机器和 A 位于不同的网络上。
使用 IPv6,办公室计算机上自我报告的 IP ( ip -6 addr) 与 A 看到的 IP 匹配。当我通过 IPv4 连接时,两个报告的地址之间不匹配。
这是因为办公室机器从办公室 WiFi 路由器获取经过 NAT 处理的 IPv4 地址和全球唯一的 IPv6 地址吗?
其他 p2p 协议上也会发生这种情况吗?
我并不是要求修复 IPv4。我询问的是 IPv4 与 IPv6 的典型 NAT 行为,以及其他 p2p 应用程序协议(例如 BitTorrent 或比特币)是否也会遇到这种行为。
我想知道 Skype 如何将文件直接发送给通常位于防火墙后面的用户?这是如何工作的,因为我需要开发类似的东西,其中一个本地网络服务器(在防火墙后面)需要能够将文件直接发送/流式传输到另一个相同的服务器?
我知道需要某种可公开访问的中央服务器,通过它两者可以相互发现,我计划拥有那个,但是在那之后直接连接如何发生?
谢谢
peer-to-peer ×9
bittorrent ×5
networking ×3
connection ×1
download ×1
ethernet ×1
internet ×1
ipv4 ×1
ipv6 ×1
nat ×1
p2p ×1
ports ×1
qbittorrent ×1
skype ×1
windows ×1