La Red de Conocimientos Pedagógicos - Aprendizaje de japonés - ¿Qué puerto utiliza Feige para la transmisión?

¿Qué puerto utiliza Feige para la transmisión?

Recientemente, vi que un amigo encontró algunos problemas al escribir programas de red, así que publiqué los documentos que traduje cuando estaba trabajando en IPMSG con la esperanza de que fueran útiles para los principiantes en programación de redes. Los estudiantes que busquen proyectos de programación también pueden consultar este documento para escribir IPMSG por sí mismos.

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

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

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

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

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)

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

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

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)

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

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)

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.