[Comprensión recomendada] Práctica de transmisión eficiente de punto a punto IPFS

Práctica de transmisión eficiente de IPFS punto a punto

IPFS,有着远大的志向要成为“星际文件系统--InterPlanetary File System”。 
在我看来,它确实是一种具有代表性的点对点分布式文件系统,
与传统互联网规则不同之处在于,IPFS以内容进行寻址,而不是先找主机再找内容的方式。

Este artículo intentó transferir archivos IPFS punto a punto.
Tenga en cuenta que la premisa de esta transferencia de archivos es:
(1) Remitente de archivo conocido
(2) Obtener índice de archivo
(3) Datos del remitente de archivo en línea

Hay muchos tutoriales en línea sobre el proceso de descarga e instalación de IPFS, por lo que no los repetiré aquí.
Si tienes alguna duda, puedes dejar un mensaje y responder cuando lo veas

Una inicialización

Después de instalar IPFS, realice la inicialización de IPFS en los nodos de envío y recepción, respectivamente.
En esta práctica, el remitente es mi computadora portátil y el destinatario es el host remoto de Alibaba Cloud.

>ipfs init

La estructura de directorios .ipfs generada por este comando es la siguiente:
directorio de archivos .ipfs
Entre ellos, el almacén de claves se utiliza para almacenar claves privadas.

Dos nodos de inicio

Realice por separado tanto en el remitente como en el receptor:

ipfs daemon

Los ejemplos de información de salida son los siguientes:

Initializing daemon...
go-ipfs version: 0.6.0
Repo version: 10
System version: amd64/linux
Golang version: go1.14.4
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/127.0.0.1/udp/4001/quic
Swarm listening on /ip4/192.168.1.127/tcp/4001
Swarm listening on /ip4/192.168.1.127/udp/4001/quic
Swarm listening on /ip6/xxxxxxx人为匿了xxxxxxxxxx/tcp/4001
Swarm listening on /ip6/xxxxxxx人为匿了xxxxxxxxxx/udp/4001/quic
Swarm listening on /ip6/xxxxxxx人为匿了xxxxxxxxxx/tcp/4001
Swarm listening on /ip6/xxxxxxx人为匿了xxxxxxxxxx/udp/4001/quic
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /ip6/::1/udp/4001/quic
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/127.0.0.1/udp/4001/quic
Swarm announcing /ip4/192.168.1.127/tcp/4001
Swarm announcing /ip4/192.168.1.127/udp/4001/quic
Swarm announcing /ip6/xxxxxxx人为匿了xxxxxxxxxx/tcp/4001
Swarm announcing /ip6/xxxxxxx人为匿了xxxxxxxxxx/udp/4001/quic
Swarm announcing /ip6/::1/tcp/4001
Swarm announcing /ip6/::1/udp/4001/quic
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

El nodo ahora usa el puerto 4001 para recibir información de pares y establecer contacto.
Podemos visitar el puerto 5001 para obtener la página de visualización.
[La ID de pares que se muestra en la página se actualizará cada vez que se inicialice el nodo ( ipfs init )]
Página de visualización

Tres nodos de conexión

Tanto el remitente como el destinatario pueden iniciar un enlace Hay dos métodos:
(1) Método 1: Operación de la página Después de
Conectar operación de página de nodo
hacer clic en Archivo, seleccione "+ Importar" en la página actual. Luego, seleccione de IPFS en el cuadro de candidatos .
Ingrese el índice de nodo proporcionado por la otra parte, como:

/ip4/102.92.10.209/udp/4001/quic/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw

Entre ellos:
ip4 = tipo de dirección ipv4;
102.92.10.209 = dirección ipv4;
4001 = número de puerto de escucha de pares
QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw = ID de nodo de pares

Cómo obtener el enlace: Véalo a
través del comando ipfs id en el host de la otra parte y copie uno en Direcciones (se recomienda copiar la IP pública).
Ejemplo:

>ipfs id
输出:
{
	"ID": "QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw",
	"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ/s+ocPZBJv4L5FEHhd3pty0GKC4wEOoHXAgRxwhjgO7ngmOXWsseG7hWjR7IAKpBZEXPnKDsZIYqsPt6cwQrqMWKPwzJaRzo4qmSTO774+mqOTE4daBfnG6nENb/fuZc/C6WHL4+SGyUu97TnzYqKGc/rDuTqzE9whV70wHY2K5eFZugvzm7iFqSHmAhpxjp7XfRCyN7x8af4HzidhyzZjSSfCbJJOKL55plgeqOV/YY1xBfM3xzEDAQXpvskNrem4KrG/XwSZHRr62YK7MUxjXsq1FkTh5YbGuhqu3Q7rsb6SIbTvGF37+o2V2gRC2KVzOfBWzISJRbKlQ8fSgRAgMBAAE=",
	"Addresses": [
		"/ip4/127.0.0.1/tcp/4001/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw",
		"/ip4/172.17.55.9/tcp/4001/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw",
		"/ip6/::1/tcp/4001/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw",
		"/ip4/127.0.0.1/udp/4001/quic/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw",
		"/ip4/172.17.55.9/udp/4001/quic/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw",
		"/ip6/::1/udp/4001/quic/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw",
		"/ip4/102.92.10.209/tcp/4001/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw",
		"/ip4/102.92.10.209/udp/4001/quic/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw"
	],
	"AgentVersion": "go-ipfs/0.6.0/",
	"ProtocolVersion": "ipfs/0.1.0"
}

(2) Método 2: Línea de comando
Al igual que en los pasos anteriores, use la línea de comando para consultar el índice de conexión del nodo del mismo nivel a través del id de ipfs en el otro host .
Luego, ingrese en la línea de comando:

ipfs bootstrap add  /ip4/102.92.10.209/udp/4001/quic/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw

Es decir, el nodo opuesto se designa como el nodo semilla que se conectará primero. Debido a problemas de red, este enlace puede tardar bastante (unos 3 minutos en esta prueba).

Agregue una línea de comando ipfs ping para verificar la conectividad y el retraso:

ipfs ping /ip4/102.92.10.209/udp/4001/quic/p2p/QmZ3DTrfPdahviV2xV9Ni4LXND8BALbykRC2zqNLonw

Carga de cuatro archivos

Cuando se establece la conexión, es decir, cuando se puede hacer ping a ipfs ping , el remitente puede comenzar a cargar archivos.
[Los siguientes códigos son datos reales]

>ipfs add 20w_address.net 
added QmfN7mWDfChb9PMubEW9nC39mk6PXdX625wEtHz7kBTraP 20w_address.net
 1.45 GiB / 1.45 GiB [=================================================] 100.00%

El proceso de carga es generalmente en segundos, porque solo necesita procesar el hash del archivo localmente y cargar el hash del archivo final (el hash raíz del diagrama de Merkel) a la red.

Descarga de cinco archivos

Cuando el archivo se cargue correctamente, proceda al extremo de recepción:

>ipfs get QmfN7mWDfChb9PMubEW9nC39mk6PXdX625wEtHz7kBTraP
Saving file(s) to QmfN7mWDfChb9PMubEW9nC39mk6PXdX625wEtHz7kBTraP
 1.45 GiB / 1.45 GiB [============================================] 100.00% 8m4s

En la práctica, el tiempo de transmisión es de 8m4s, y las cargas y descargas subsiguientes mantienen una alta velocidad y no es necesario volver a realizar el descubrimiento de nodos.

Seis sentimientos

(1) Ventajas:

a) Transmisión eficiente. A través de la prueba, se encontró que la mayor pérdida de tiempo cuando IPFS realiza la transmisión de archivos de igual a igual reside en la parte de descubrimiento de nodos.
Desde la perspectiva de la transmisión de información entre nodos, su rendimiento es mucho mejor que el de Baidu W Disk (nunca he usado miembros, no conozco la velocidad de los miembros) .
b) Buena privacidad. El intercambio de punto a punto reduce los enlaces de transferencia de terceros y tiene una mejor privacidad de los datos.
c) Descentralización. El almacenamiento descentralizado de datos es conveniente para evitar un solo punto de falla, y el almacenamiento multipunto puede aumentar efectivamente la velocidad de descarga.

(2) Insuficiencia:

a) El descubrimiento de nodos es más lento. El proceso de descubrimiento entre nodos requiere mucho tiempo, es incierto y la experiencia del usuario es deficiente.
b) El remitente debe estar en línea. IPFS (especialmente en la etapa inicial de publicación de documentos) requiere que el remitente se asegure de que los datos estén en línea, pero es imposible saber cuándo los usará el destinatario.
c) Mala experiencia de usuario. Actualmente, más funciones de IPFS aún dependen de llamadas a API, lo que no favorece a los usuarios no profesionales para comenzar rápidamente.

Conclusión:
A veces, los defectos representan esperanza.

Supongo que te gusta

Origin blog.csdn.net/weixin_43347204/article/details/107888269
Recomendado
Clasificación