Compartir tecnología

programación de red Python-TCP/IP

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

capa de enlace

Composición del marco (en orden):

MAC objetivo: 6B

MAC de origen: 6B

Tipo: 2B

Datos: 46B-1500B

CRC: 4B

Entre ellos, la MAC de origen es la dirección de la tarjeta de red del host, el tipo es el tipo de datos de la capa de red de origen, ipv4 es 0800, arp es 0806, pppoe es 8864, 1qtag es 8100, ipv6 es 86dd.

Python puede obtener la dirección mac nativa a través del módulo uuid

Capa de red

Estructura del datagrama

Encabezado: 20-60B, de los cuales los primeros 20B son obligatorios y los últimos 40B son opcionales.

Datos: 0-65516B

estructura del encabezado

Versión: 4 dígitos, indicando ipv4 o ipv6

ihl: 4 bits, que indica la longitud del encabezado, la unidad es 4B, por lo que el máximo es 4x15 = 60B, que es exactamente la longitud máxima del encabezado

ds: servicios diferenciados, 8 bits, los primeros tres bits indican prioridad, los siguientes cuatro bits indican retraso mínimo, rendimiento máximo, mayor confiabilidad y costo mínimo, el último bit no se utiliza

Longitud total: 16 bits, indicando la longitud total de la cabecera y los datos, en B.Tenga en cuenta que la longitud de los datos de la capa de enlace es 46-1500. Cuando el datagrama de la capa de red sea inferior a 46 B, los datos se completarán. Cuando exceda 1500, se dividirán.

Identificación: 16 bits, que indica la identificación única de los datos fragmentados.

Bandera: 3 bits, el bit más alto es un bit reservado, el segundo bit indica si se puede fragmentar, 0 significa que se puede fragmentar, 1 significa que no se puede fragmentar, el último bit indica si el datagrama está fragmentado, 0 significa que no fragmentado, y es el último fragmento, 1 significa fragmento, y hay fragmentos después

Desplazamiento de fragmentos: 13 bits, 8B

Vida útil, 8 bits, máximo 255, que indica el número máximo de saltos en la ruta.

Protocolo: 8 bits, que indica el tipo de datagrama ip, como ICMP, IGMP, TCP, UDP, etc.

Suma de comprobación del encabezado: 16 bits

Dirección IP de origen y dirección IP de destino, 32 bits cada una

Python puede obtener información de la red a través de los dos módulos psutil y netifaces. La versión de netifaces está obsoleta. Puede instalar netifacce2.

capa de transporte

unidad de disco duro

No hay garantía de que los datos sean accesibles.

Encabezado 8B: puerto de origen 2B, puerto de destino 2B, longitud 2B, suma de comprobación 2B

Datos 0-65527B

Protocolo de control de tráfico

Apretón de manos de 3 vías para crear conexión, apretón de manos de 4 vías para cerrar la conexión

Estructura del datagrama

Primera parte 20-60B

Datos 0-65535B

estructura del encabezado

Puerto de origen 16 bits

Puerto de destino 16 bits

Número de serie: 32 bits: cada byte de datos tiene un número de secuencia,Después de alcanzar pow (2,32), comienza desde 0

Número de confirmación: 32 bits. El receptor envía el número de secuencia del primer byte del siguiente mensaje de datos al remitente. Por ejemplo, si el remitente envía 0-999 bytes, el número de confirmación enviado por el receptor es 1000.

Desplazamiento de datos: 4 bits, bit unitario 4B, similar al ihl del encabezado ipv4

Reservado: 6 bits, normalmente 0

URG: 1 bit, 1 indica datos urgentes, el puntero urgente es válido

ACK: 1 bit, 1 significa que el campo del número de confirmación es válido

PSH: 1 bit, 1 significa que el mensaje se crea y se envía inmediatamente. El extremo receptor lo entregará inmediatamente al proceso después de recibirlo, en lugar de colocarlo en el caché y esperar hasta que el caché esté lleno antes de enviarlo.

RST: 1 bit, si es 1, significa que hay un problema grave con la conexión actual. Xu Ao liberará la conexión y volverá a crear la conexión. RST de 1 también se puede usar para negarse a aceptar mensajes ilegales. negarse a abrir conexiones ilegales.

SYN: 1 bit, 1 indica que el mensaje es una solicitud de conexión o un mensaje de aceptación de conexión

FIN: 1 bit, 1 indica que los datos se han enviado y es necesario liberar la conexión.

Ventana: 16 bits, enviada por el receptor al remitente, indicando la longitud del siguiente mensaje que se espera que sea aceptado.

Suma de comprobación: 16 bits

Puntero urgente: 16 bits Cuando URG es 1, indica la posición final de los datos urgentes.

Python obtiene información de la red

psutil puede obtener algunas estadísticas de red. El método net_io_counters recopila estadísticas de red de toda la máquina de forma predeterminada. Al ingresar el parámetro pernic=True, se recopilarán estadísticas de cada tarjeta de red por separado.

Capa de aplicación

http

HTTP es una comunicación sin estado de forma predeterminada y los servicios con estado se pueden realizar a través de cookies.

El puerto http es generalmente 80.

Estructura del mensaje

Mensaje de solicitud: método, URL, versión, otros campos de encabezado, entidad del mensaje (opcional)

Mensaje de respuesta: versión, código de estado, frase, otros campos de encabezado, entidad del mensaje (opcional)

Métodos: hay 8 tipos, obtener, publicar, encabezar, poner, eliminar, opción, conectar, rastrear

Versión: número de versión http

Otros campos de encabezado: como Cache-Control, Accept-Encoding, etc.

Entidad del mensaje: sin límite de longitud, puede ser 0

Código de estado: 404, tres dígitos.1xx indica que el servidor ha recibido la solicitud, 2xx indica que el servidor acepta la solicitud del cliente, 3xx indica que el servidor redirige la solicitud del cliente, 4xx indica que la solicitud del cliente es incorrecta y 5xx indica que hay un problema con el servidor. .

Frase: comentario sobre el código de estado. Por ejemplo, la frase correspondiente al código de retorno 202 es Aceptar y la frase correspondiente al código de retorno 404 es No fuente.

https

http no tiene garantía de seguridad y se puede capturar. https utiliza SSL o TLS para cifrar paquetes de datos y luego los transmite a través de TCP.443

Generalmente se utiliza el cifrado simétrico y el cifrado asimétrico. El cifrado simétrico se utiliza generalmente para el cifrado de mensajes y el cifrado asimétrico generalmente se utiliza para el cifrado de contraseñas.

Proceso de solicitud

Cuando el cliente lo solicita, enviará al servidor un conjunto de reglas de cifrado que admite.

El servidor combina un conjunto de algoritmos de cifrado y hash basados ​​en las reglas de cifrado del cliente y lo devuelve al cliente en forma de un certificado digital junto con su propia información de identidad.

El cliente verifica la validez del certificado del servidor, genera una contraseña de número aleatorio después de pasarlo y cifra la contraseña de número aleatorio con la clave pública del servidor.El cliente calcula el hash del mensaje a enviar, cifra el mensaje a enviar y el valor hash del mensaje con una contraseña de número aleatorio, y finalmente cifra la clave pública del servidor con una contraseña de número aleatorio y cifra el mensaje y el mensaje. con la contraseña del número aleatorio se combinan y regresan al servidor.

Después de recibir los datos del cliente, el servidor usa su propia clave privada para descifrar la contraseña de número aleatorio, luego usa la contraseña de número aleatorio para descifrar el mensaje y el valor hash del mensaje, y compara el valor hash descifrado con el valor hash del mensaje recibido. para ver si es consistente. Si son consistentes, la conexión entre el cliente y el servidor se establece exitosamente. Después de eso, ambas partes usan contraseñas de números aleatorios para cifrar y descifrar los datos.Durante la transmisión de datos posterior, si se produce un error o el hash es inconsistente, la conexión finalizará automáticamente.

FTP

Nombre de dominio

SNMP-español:SNMPE

Protocolo de transferencia de correo simple SNMP, utilizado para transferir correo desde la dirección de origen a la dirección de destino, el puerto generalmente es 25

Es un protocolo de envío de correo electrónico de uso común. Después de enviar un correo electrónico, el correo electrónico se enviará al servidor SNMP.

pop3

El destinatario se utiliza para aceptar correos electrónicos que otros usuarios le envían desde su propio servidor. El puerto suele ser 110.

pop3 es un protocolo fuera de línea Cuando el usuario inicia sesión, los correos electrónicos del servidor pop3 se descargarán al área local al mismo tiempo, los correos electrónicos del servidor se eliminarán automáticamente.

imap es un protocolo de recepción de correo en línea, que compensa el problema fuera de línea de pop3. Actualmente es el protocolo de recepción de correo más utilizado. El puerto es generalmente 143.

DHCP

Cuando un cliente con dhcp se conecta a la red, transmitirá un mensaje de descubrimiento de dhcp. Después de un número limitado de transmisiones de acuerdo con ciertas reglas, si no se recibe respuesta, dhcp fallará.

Después de recibir el mensaje, el servidor seleccionará una IP del grupo de direcciones disponibles, enviará un mensaje de oferta dhcp en forma de transmisión y devolverá la IP al cliente.

Después de que el cliente reciba la IP asignada por el servidor dhcp, enviará una solicitud arp para ver si la IP está ocupada. Si está ocupada, el cliente enviará un informe de rechazo de dhcp al servidor dhcp. enviará una solicitud dhcp al servidor. Después de recibirla, el servidor enviará una respuesta de confirmación dhcp al cliente. En este punto, finaliza el proceso del servicio dhcp.

El puerto del servidor dhcp es generalmente 67 y el puerto del cliente dhcp es generalmente 68. dhcp utiliza comunicación udp.