¿Qué puerto utiliza Feige para la transmisión?
Este artículo solo contiene traducciones al chino de algunos de los comandos y mecanismos operativos más importantes. Para obtener más detalles, consulte el documento en inglés del protocolo IPMSG al final del artículo.
Descargo de responsabilidad: el siguiente protocolo omite parte del contenido del protocolo que no se utiliza en el proceso de programación. El texto original del acuerdo Ipmsg está en japonés. El siguiente contenido del acuerdo está traducido por mí mismo del documento en inglés del Sr. Kanazawa (cugb_cat). Este documento traducido se puede distribuir y utilizar libremente.
Protocolo de transporte de mensajería IP (novena edición borrador) 21/02/1996
Revisado el 14/01/2003
H.Shirouzu
[correo electrónico]shirouzu @ h . email . jp[/email]
Acerca de IP Messenger:
IP Messenger utiliza el protocolo TCP/UDP para proporcionar mensajes y enviar y recibir. de archivos (directorios).
Características:
IP Messenger se puede instalar en cualquier sistema operativo con una pila de protocolos TCP/IP instalada. Utiliza el mecanismo de identificación dinámica de los usuarios en línea para intercambiar información con todos los usuarios en línea. .
Introducción al mecanismo operativo:
Utilice el puerto TCP/UDP (el puerto predeterminado es 2425), utilice el protocolo UDP para enviar y recibir mensajes y utilice el protocolo TCP para enviar y recibir archivos (carpetas).
1, palabra de comando:
1) Palabra de comando básica (8 bits inferiores de la palabra de comando de 32 bits)
IPMSG_NOOPERATION no hace nada.
El usuario IPMSG_BR_ENTRY está en línea.
IPMSG_BR_EXIT El usuario sale.
IPMSG_ANSENTRY Notificación en línea
IPMSG_SENDMSG envía un mensaje.
IPMSG_RECVMSG notifica el mensaje recibido.
IPMSG_GETFILEDATA solicita la transferencia de archivos vía TCP.
IPMSG_RELEASEFILES deja de recibir archivos.
IPMSG_GETDIRFILES solicita carpetas de transferencia.
2) Bits de opción (24 bits altos de la palabra de comando de 32 bits)
Verificación de transmisión IPMSG_SENDCHECKOPT (requiere que la otra parte proporcione información de confirmación)
Opción de archivo de transmisión IPMSG_FILEATTACHOPT
3) Comando de tipo de archivo adjunto (8 bits inferiores de la palabra de comando de tipo de archivo)
IPMSG_FILE_Archivo ordinario regular
Archivo de directorio de archivos IPMSG p>
IPMSG_FILE_RETPARENT regresa al directorio anterior.
2. Formato del paquete de datos (usando cadena):
1) Formato del paquete de datos (formato versión 1)
Número de versión (1): Número de paquete: Nombre del remitente: Nombre del host del remitente: Palabra de comando: Información adicional.
2) El ejemplo es el siguiente
" 1:100:shirouzu:Jupiter:32:Hello "
3. p>
1) Identificación del usuario
Cuando se inicia IPMSG, transmite el comando IPMSG_BR_ENTRY a la red, avisando a todos los usuarios en línea que ha llegado un nuevo usuario (es decir, "Estoy aquí todos en línea"); los usuarios agregarán nuevos usuarios en línea a su propia lista de usuarios y enviarán el comando IPMSG_ANSENTRY (es decir, "Estoy en línea") al nuevo usuario en línea; el nuevo usuario en línea agregará el usuario en línea a su lista de usuarios después de recibir el comando IPMSG_ANSENTRY; .
2) Enviar y recibir mensajes
Utilice el comando IPMSG_SENDMSG para enviar un mensaje y el contenido del mensaje se agrega a la información adicional al recibir el mensaje, si la otra parte lo requiere; una confirmación de respuesta (el bit IPMSG_SENDCHECKOPT está activado), luego debe enviar el comando IPMSG_RECVMSG e ingresar el número del paquete enviado por la otra parte en la información adicional y enviarlo al remitente.
3) Extensión de archivos adjuntos (agregada en la versión 9)
El comando IPMSG_SENDMSG con el bit IPMSG_FILEATTACHOPT se puede utilizar para transferir archivos. Los atributos y el contenido del archivo se agregan en la información adicional, y el contenido del archivo se agrega después del contenido del mensaje y se separa de ellos por '\0'. Al transferir archivos, se agregará la siguiente información después del contenido del mensaje (incluido el formato): Número de serie del archivo: Nombre del archivo: Tamaño (unidad: bytes): Hora de la última modificación: Atributos del archivo [: atributos adicionales = val1 [, val2.. .] [: Información adicional =...]:\ a:Número de serie del archivo...
(El tamaño del archivo, la hora de la última modificación y los atributos del archivo son todos números hexadecimales. Si el nombre del archivo contiene " :", utilice "::" ".
Cuando el receptor comience a recibir el archivo, el comando de solicitud de transferencia de archivo IPMSG_GETFILEDATA se enviará al puerto TCP del remitente (el mismo que el puerto de envío UDP) , el número de paquete y el número de secuencia del archivo enviado por el remitente, el desplazamiento (ambos en formato hexadecimal) se escribirán en el área de información adicional y se enviarán juntos después de que el remitente del archivo reciba la información de la solicitud y verifique que sea correcta (sin ningún formato). o cifrado), comenzará a enviar el archivo p>
Cuando el extremo receptor reciba el archivo del directorio, enviará un comando IPMSG_GETDIRFILES, que contiene el área de información adicional del número de paquete: número de archivo: desplazamiento (todo en formato hexadecimal) enviado por el extremo emisor, para solicitar la transmisión de archivos de directorio, el remitente agrega la longitud de la información del encabezado en el área de información adicional: nombre del archivo: tamaño del archivo: atributos del archivo: contenido del archivo (excepto el archivo). nombre y contenido del archivo, el resto está en hexadecimal), y la longitud de la información del encabezado es La longitud de la información del encabezado es el número de caracteres del delimitador ':' antes del contenido del archivo. El atributo es IPMsg_FILE_DIR, IPMsg puede identificarlo automáticamente como un directorio y los datos del siguiente archivo están después del directorio.
Cuando el atributo del archivo es IPMsg_FILE_RETPARENT, IPMsg reconoce que su acción es volver al anterior. directorio En este caso, el nombre del archivo es "." y su atributo es el valor del directorio actual >Versión en inglés con protocolo IPMSG:
Cita:
El ipmsg original. la especificación del protocolo fue escrita en japonés
Este documento fue traducido por el Sr. Kanazawa
Este documento no ha sido verificado
-
. Protocolo de comunicación IP Messenger (Draft-9) 21/02/1996
Modificado el 5 de junio de 2003
H.Shirouzu
[correo electrónico]shirouzu@h .email.ne.jp[/email]
-
Acerca de IP Messenger
Este es un servicio de envío/recepción de mensajería que utiliza puertos TCP/UDP p>
Características
Si utiliza TCP/IP en la máquina, IP Messenger se puede instalar en cualquier sistema operativo.
La identificación dinámica de membresía se puede realizar dentro de su. red o una red designada
Puedes hacer esto en todas las máquinas. Los mensajes se intercambian entre los miembros de IPMsg.
Descripción de la función
Usa el puerto TCP/UDP (predeterminado: 2425).
Consulte la siguiente descripción
(Envío/recepción de mensajes: UDP, Envío/recepción de archivos: TCP)
1) Comando
1) Función de comando (comando). número Los 8 bits inferiores de 32 bits)
IPMSG_NOOPERATION sin operación
Entrada de servicio IPMSG_BR_ENTRY (iniciada con comando de transmisión)
Servicio de salida IPMSG_BR_EXIT (finaliza con comando de transmisión) )
IPMSG_ANSENTRY Notificación de nuevas entradas
IPMSG_BR_ABSENCE Cambiar modo de ausencia
IPMSG_BR_ISGETLIST Buscar miembros de host emisores válidos
IPMSG_OKGETLIST Notificación de envío de lista de hosts
p>
IPMSG_GETLIST Solicitud de envío de lista de hosts
IPMSG_ANSLIST Envío de lista de hosts
Transmisión de mensajes IPMSG_SENDMSG
Verificación de recepción de mensajes IPMSG_RECVMSG
Notificación de apertura de mensaje IPMSG_READMSG
Notificación de descarte de mensaje IPMSG_DELMSG
Notificación de confirmación de apertura de mensaje IPMSG_ANSREADMSG (aumentado desde la versión 8)
Transferencia de archivos IPMSG_GETFILEDATA de TCP request
IPMSG_RELEASEFILES descarta los archivos adjuntos
IPMSG_GETDIRFILES solicitud de archivos adjuntos en capas
Obtiene información de la versión de IPMSG.
IPMSG_SENDINFO envía información de la versión IPMSG.
IPMSG_GETABSENCEINFO obtiene la sentencia de ausencia
IPMSG_SENDABSENCEINFO envía la sentencia de ausencia
IPMSG_GETPUBKEY Adquisición de clave pública RSA
Respuesta de clave pública IPMSG_ANSPUBKEY RSA p>
2) Indicador de opción (24 bits altos del número de comando de 32 bits)
IPMSG_ABSENCEOPT Modo ausente (comando de identificación de miembro)
Servidor IPMSG_SERVEROPT (reservado) p>
IPMSG_DIALUPOPT Enviar comando de respaldo de miembro individual
IPMSG_SENDCHECKOPT Verificación de transporte
IPMSG_SECRETOPT Mensaje de sello
IPMSG_READCHECKOPT Verificación de mensaje de sello (agregado desde la versión 8)
Bloqueo IPMSG_PASSWORDOPT
Mensaje IPMSG _Broadcast
IPMSG_MULTICASTOPTMulticast (Selección de multicast)
IPMSG_NEWMUTIOPT Nueva versión Multicast (Reservado)
p>IPMSG_AUTORETOPT respuesta automática (protección contra ping pong)
IPMSG_NOLOGOPT sin archivo de registro
IPMSG_NOADDLISTOPT notifica a miembros distintos de BR_ENTRY
Archivo adjunto IPMSG_FILEATTACHOPT
Código IPMSG_ENCRYPTOPT
IPMSG_NOPOPUPOPT (ya no es válido)
IPMSG_RETRYOPT indicador de reenvío (usado al obtener la lista de hosts)
3 ) indicador de código extendido (combinación de formato hexadecimal)
IPMSG_RSA_512
IPMSG_RSA_1024
IPMSG_RSA_2048
RC2_40
IPMSG_RC2_128
IPMSG_RC2_256
IPMSG_BLOWFISH_128
IPMSG_Blowfish_256
IPMSG_SIGN_MD5
4) Archivo de extensión del archivo adjunto (8 bits inferiores de fileattr)
IPMSG_File_General p>
IPMSG_File_Directory
IPMSG_FILE_RETPARENT
IPMSG_FILE_SYMLINK
IPMSG_FILE_CDEV
IPMSG_FILE_BDEV
IPMSG_FILE_FIFO
IPMSG_FILE_RESFORK
5) Atributos extendidos del archivo adjunto (alto 24 bits de fileattr)
IPMSG_FILE_RONLYOPT
IPMSG_FILE_HIDDENOPT
IPMSG_FILE_EXHIDDENOPT p>
IPMSG_FILE_ARCHIVEOPT
IPMSG_FILE_SYSTEMOPT
6) Atributos de archivo extendidos de los archivos adjuntos
IPMSG_FILE_UID
IPMSG_file_username
IPMSG_FILE_GID
IPMSG_file _Nombre del grupo
IPMSG_FILE_PERM
IPMSG_FILE_MAJORNO
IPMSG_FILE_MINORNO
IPMSG_FILE_CTIME
IPMSG_File_Time
IPMSG_FILE
_ATIME
IPMSG_FILE_CREATETIME
IPMSG _File_Creator
IPMSG _File_FileType
IPMSG _File_Find Información
p>
IPMSG_FILE_ACL
IPMSG_FILE_ALIASFNAME
IPMSG_FILE_UNICODEFNAME
2. Formato del comando (usar todas las cadenas)
1) Comando (Formato Versión-1) p>
Ver(1): Número de paquete: Nombre del remitente: Host del remitente: Número de comando: Parte adicional
2) Usar el comando actual Ejemplo de formato para enviar/recibir mensajes
" 1:100:shirouzu:Jupiter:32:Hola "
3. Descripción general del proceso de comando
1) Aprobación del miembro
Se emite el comando IPMSG_BR_ENTRY a los miembros actuales
en el momento de la creación.
Todos los miembros agregarán el nuevo miembro a su lista después de recibir el mensaje de notificación.
El comando IPMSG_ANSENTRY envía un mensaje al nuevo miembro.
Los nuevos miembros obtienen los datos del miembro actual
Comando IPMSG_ANSENTRY. Todos los miembros pueden comunicarse siempre que existan paquetes IP.
El comando IPMSG_BR_ABSENCE transmite la cancelación del modo de ausencia o
cambio de apodo para todos los miembros. Sin embargo, el comando IPMSG_ANSENTRY
no devuelve un mensaje, a diferencia del comando IPMSG_BR_ENTRY
.
Comandos IPMSG_BR_ENTRY, IPMSG_ANSENTRY e IPMSG_BR_ABSENCE
Utilice el indicador IPMSG_ABSENCEOPT para el modo de ausencia. Introduzca un apodo para...
Comando adicional.
Agregue el indicador IPMSG_DIALUPOPT para usuarios de acceso telefónico inalcanzables
Comando de transmisión. Los comandos de identificación de miembros deben
enviarse individualmente a los miembros con este indicador opcional.
(Grupo extendido) Comandos IPMSG_BR_ENTRY e IPMSG_BR_ABSENCE
Envíe el nombre del grupo agregando el nuevo nombre del grupo después del nombre del grupo actual
Cadena de formato de comando (en el actual
Nombre del comando y extensión).
2) Enviar/recibir mensajes
Para enviar mensajes, use el comando IPMSG_SENDMSG que puede ingresar mensajes en el área extendida.
Recibir mensajes solo envía de vuelta el comando IPMSG_RECVMSG
si el indicador IPMSG_SENDCHECKOPT está activado. Ingrese el número de paquete original
en el área de extensión.
Los mensajes de difusión se envían mediante el comando IPMSG_BOADCASTOPT
y el indicador IPMSG_SENDMSG debe estar activado.
El paquete de envío automático (notificación de ausencia) debe agregarse a IPMSG_AUTORETOPT
para protección contra ping-pong. Si uno u otro paquete está abierto, el paquete de confirmación/envío automático no se devuelve.
Para enviar un sello de mensaje se requiere un paquete IPMSG_SECRETOPT.
En este caso se envía el comando IPMSG_READMSG para recibir el mensaje.
Ingrese el número del paquete original en el área de extensión.
(Append IPMSG_NOADDLISTOPT)
Cuando el esclavo
no está en su lista de envío/recepción, IPMsg confirmará el host a través de
Envíe el comando IPMSG_BR_ENTRY o agregue el nombre de host a la lista de envío/recepción.
Sin embargo, es necesario evitar las operaciones de envío/recepción de mensajes únicos.
Agregue el indicador IPMSG_NOADDLISTOPT al comando IPMSG_SENDMSG.
(IPMSG_READCHECKOPT adicional en la versión 8)
Cuando el comando IPMSG_READMSG contiene el indicador IPMSG_READCHECKOPT, el
proceso IPMSg es el mismo que el proceso IPMsg con p>
Logotipo IPMSG_SENDCHECKOPT.
Sin embargo, Enviar mensaje utiliza el comando IPMSG_ANSREADMSG,
en lugar de IPMSG_RECVMSG.
3) Extensión de cifrado de envío/recepción de mensajes (agregada en la versión 9)
Utiliza una combinación de clave pública (RSA) y clave pública (RC2/Blowfish).
(El área de extensión cifrada utiliza formato hexadecimal.)
(Adquisición de clave pública) Envíe el comando IPMSG_GETPUBKEY para recibir el
mensaje. El mensaje receptor obtiene IPMSG_ANSPUBKEY, lo que significa recibir la clave pública RSA del mensaje emisor.
IPMSG_get pubkey/IPMSG_ANSPUBKEY todos requieren valores
Los indicadores de capacidad de cifrado (por ejemplo, IPMSG_RSA_1024) usan primero "o"
Parte de extensión
En Además, en IPMSG_ANSPUBKEY, la clave pública se escribe como EE-NNNNNN
E = exposición n = método) devideby ":". E ingrese el separador f '-'
entre E y n.
Después del segundo proceso de envío/recepción se puede omitir esta secuencia
Memoria de la clave pública y datos cifrados.
(Mensaje cifrado) El remitente crea una clave pública
compatible tanto con el remitente como con el receptor para cifrar el mensaje.
Además, la clave pública está cifrada por la clave pública del destinatario.
(Transmisión de mensajes cifrados) IPMSG_ENCRYPTOPT se utiliza para
IPMSG_SENDMSG. En la primera parte de la extensión, el valor de entrada
es el resultado de la verificación de la clave pública y del tipo de clave pública.
La clave pública se cifra luego utilizando la clave pública separada por ":".
Luego ingresa el mensaje cifrado con clave pública separado por ":".
Agregue ':' y firma si ambos admiten IPMSG_SIGN_XXX.
Además, en el método de relleno codificado, la clave PKCS#1ECB se usa para RSA,
la clave pública PKCS#5 CBC se usa para RC2/Blowfish.
Además, se muestran los paquetes asociados a la entrada
Soporte de cifrado mediante IPMSG_ENCRYPTOPT
4) Extensión con archivos adjuntos (disponible desde la versión 9) p>
Comando IPMSG_SENDMSG con indicador IPMSG_FILEATTACHOPT
La notificación de transferencia de archivos (permiso de descarga) envía un mensaje
Con archivo adjunto.
Ingrese ' \0 ' después del mensaje y los datos del archivo adjunto.
ID de archivo:nombre de archivo:tamaño:mtime:fileattr[:extend-attr = val 1
[, val2...][:extend-attr2=...]]: \a:fileID...
(tamaño, mtime y fileattr describen el formato hexadecimal.
Si el nombre del archivo contiene ":", reemplácelo con "::". )
Al recibir un mensaje para descargar un archivo adjunto, el comando IPMSG_GETFILEDATA
solicita un paquete de transferencia de datos desde el puerto TCP con el mismo número
que el UDP número de puerto de envío. Ingrese packageID:fileID:offset en la medida.
(Todo en formato hexadecimal.
)
La parte que transfiere el archivo recibe la solicitud. Después de darse cuenta de que se trata de una solicitud correcta,
Luego se envían los datos especificados (sin formato).
Cuando el destinatario de los datos descarga el archivo adjunto en capas,
Utilice el comando IPMSG_GETDIRFILES e ingrese ID de paquete:ID de archivo
y envíe el paquete de solicitud de transferencia de datos.
(Formato hexadecimal completo)
El remitente de datos envía el siguiente formato de datos jerárquico.
tamaño-encabezado:nombre de archivo:tamaño-archivo:atributo de archivo[:extend-attr = val 1
[, val2...][:extend-attr2=... ]]:Content-Data
Siguiente tamaño del título: Siguiente nombre de archivo...
(Todo en hexadecimal excepto nombre de archivo y content-data)
p>Encabezado -size va desde el principio del tamaño del encabezado hasta el delimitador ":"
Eso está antes de los datos del contenido. extend-attr se puede omitir y utilizar varias veces
Atributos extendidos. Utilice "=" para ingresar datos.
Cuando fileattr es IPMSG_FILE_DIR, IPMSG lo reconocerá automáticamente
En el directorio, los siguientes datos del archivo están después del directorio.
Cuando fileattr es IPMSG_FILE_RETPARENT, IMPsg reconoce que regresa
al directorio principal. En este caso, el nombre del archivo es siempre "." y el valor del atributo son los datos del directorio actual.
El proceso de envío comienza directamente desde el archivo adjunto y regresa
El comando IPMSG_FILE_RETPARENT se agrega al directorio del archivo adjunto.
Agregue el indicador IPMSG_FILEATTACHOPT al paquete de entrada para admitir
archivos adjuntos.
5) Otros comandos
Al obtener diferentes versiones enviar el comando IPMSG_GETINFO.
El receptor envía la cadena de información de la versión al
área de extensión.
Envíe el comando IPMSG_GETABSENCEINFO para obtener información de ausencia.
Si el estado es modo ausente, el receptor devuelve IPMSG_SENDABSENCEINFO.
Si el estado no está en modo ausencia, se devuelve una cadena "No en modo ausencia".
6) Confirmación/Reintento
Si el paquete de confirmación para IPMSG_SENDMSG o IPMSG_RECVMSG no se entrega dentro del tiempo especificado, se enviará nuevamente.
El número o intervalo de acciones de reintento depende de las condiciones actuales.
4. Otros
1) Saltos de línea
Los saltos de línea en los mensajes enviados están estandarizados utilizando el tipo UNIX ("0").
Sustituir si es necesario.
2) El delimitador ":"
:' se utiliza como delimitador. Este separador no se puede utilizar para nombre de usuario
y nombre de host.
Si el uso/nombre de host contiene ":", reemplácelo con otro símbolo,
por ejemplo ";".
Aunque usar este delimitador todavía no es un problema, puedo crear una
secuencia de escape.
3) Codificación Kanji
SJIS
5. Dirección de correo electrónico de contacto
Correo electrónico [email]shirouzu@h.email. ne . jp[/email]
Nota
Consulte ipmsg.h para ver el código de comando.
Por favor envíame tus comentarios y sugerencias por correo electrónico.