Redes de computadoras y protocolos de computación
LeonardHusGryeBiografía24 de Agosto de 2022
1.411 Palabras (6 Páginas)101 Visitas
Universidad de Guadalajara
Centro Universitario de Ciencias exactas e Ingenierías
[pic 1]
Ingeniería en computación
Redes de computadoras y protocolos de computación
A.3: Cabecera ethernet parte 2
Horario Lunes y Miércoles de 5-7 p.m.
//Hernández Granados Leonardo
Cód.: 215519274
Profesor: ANAYA OLIVEROS JORGE
13 de septiembre de 2021
descripción: Elaborar un documento PDF conteniendo una explicación de los campos contenidos en los dos primeros renglones de la trama IPv4 y con capturas de pantalla mostrando los resultados del programa. Este documento también deberá contener una impresión del código utilizado.
Contenido
Universidad de Guadalajara 1
Objetivo general 2
Objetivo particular 2
Introducción 2
Conclusión 4
Glosario 4
Codigo: 4
Objetivo general: Continuar con la programación de la sección IP
Objetivo particular: Programar hasta leer los primeros 2 renglones del flujo de datos.
Introducción:
La dirección IP es un conjunto de números que identifica, de manera lógica y jerárquica, a una Interfaz en red (elemento de comunicación/conexión) de un dispositivo (computadora, laptop, teléfono inteligente) que utilice el protocolo o (Internet Protocol), que corresponde al nivel de red del modelo TCP/IP.
La dirección IP no debe confundirse con la dirección MAC, que es un identificador de 48 bits expresado en código hexadecimal, para identificar de forma única la tarjeta de red y no depende del protocolo de conexión utilizado en la red.
Seccion Cabecera IP: Muestra los valores en su respectivo formato, al igual hace la comparacion que que tipo de servicio pertenece: en este caso pertenece al protocolo 0x0800 el cual es el protolo de Internet Version 4 (IPv4 Internet Protocol Version 4)
[pic 2].
Seccion lectura de IP
Obtiene la informacion de la version y el IHL, al igual el calculo de la longitud de la cabecera que en este caso son 20 bytes, y el identificador del paquete.
Nos muestra las banderas de fragmentacion donde siempre el primer bit sera reservado.
DF: pertenece al “Don’t Fragment” donde 1 representa que no permite fragmentacion, caso contrario de 0, que si permitiria.
MF: Al cumplir con la condicion de MF donde el ultimo fragmento del datagrama sera 0, en caso que sea 1, nos mostrara en pantalla que NO es el ultimo fragmento.
[pic 3]
Nos proporcionara el valor de tiempo de vida en 32 segundos}
Avance de lectura de flujo de datos:
00 80 5F 18 10 15 00 A0 24 57 75 BA 08 00 45 00
00 60 21 08 40 00 20 06 32 23 82 82 01 37 82 82
01 32 04 07 00 8B 00 18 D6 B3 02 31 70 23 50 18
21 E6 81 94 00 00 00 00 00 34 FF 53 4D 42 10 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 07 40 79 53 03 08 81 7A 00 11 00 04 5C 44
49 50 4C 4F 54 45 43 5C 4D 4F 44 30 31 00 00 00
00 00
Conclusión:
El programa deberá interpretar y evaluar que el flujo de datos será correcto, el formato de lectura debe alcanzar a leer todos los datos presentados en la trama IPv4.
Glosario
- Precedencia
 - Tos
 - Rutinas
 - MBZ
 - Longitud total del paquete
 - Identificación
 - Bandera
 - Desplazamiento de la fragmentación
 - Tiempo de vida
 - Protocolo
 - Checksum
 - IP.
 
Codigo:
sección Lectura de sección IP en adelante.
def IPv4(IPv4Packet):
    # seccion IP
    # Version y Longitud
    ver = stringToByte(IPv4Packet[14], 1) #Transformar cadenas a bytes
    print("\n\n                   ----------IP----------- \n                      Version:  " +
          ver[0] + "\n                          IHL:  " + ver[2] + "\n      Longitud de la Cabecera: ",
          (int(ver[0], 10)) * (int(ver[2], 10)), "bytes")
    # Servicios
    ecnmask = 3
    dscpmask = 252
    serv = int(IPv4Packet[15], 16)
    dscp = serv & dscpmask
    ecn = serv & ecnmask
    dscp = dscp >> 2
    # Longitud Total del Paquete
    tempstring = ""
    tempstring = IPv4Packet[16] + IPv4Packet[17]
    IPPacketSize = int(tempstring, 16)
    print("           Tamaño del Paquete: ", IPPacketSize, " bytes")
    # Identificador
    tempstring = ""
    tempstring = IPv4Packet[18] + IPv4Packet[19]
    print("     Identificador de Paquete:  0x" + tempstring + "\n")
    # Bandera
    zeromask = 128
    DFmask = 64
    MFmask = 32
    flag = int(IPv4Packet[20], 16)
    print("     -----------Banderas de Fragmentacion------------\n")
    zero = flag & zeromask
    zero = zero >> 7
    if zero == 0:
        print("            O: | 0 |   |   |     Bit reservado")
    else:
        print("(ERROR)")
    DF = flag & DFmask
    DF = DF >> 6
    if DF == 0:
        print("           DF: |   | 0 |   |     0 (Fragmentacion Permitida)")
    else:
        print("           DF: |   | 1 |   |     1 (Fragmentacion no Permitida)")
    MF = flag & MFmask
    MF = MF >> 5
    if MF == 0:
        print("           MF: |   |   | 0 |     0 (Ultimo Fragmento del Datagrama)\n")
    else:
        print("           MF: |   |   | 1 |     1 (No es el Ultimo Fragmento)\n")
    #       Desplazamiento de fragmentacion
    fragmask = 8191
    frag = int((IPv4Packet[20] + IPv4Packet[21]), 16)
    frag = frag & fragmask
    if frag == 0:
        print("             Partes Fragmentadas: Sin Fragmentacion")
    else:
        print("             Partes Fragmentadas: ", frag)
    #       Tiempo de Vida
    print("         Tiempo De Vida (TTL):  ", int(IPv4Packet[22], 16), " segundos")
    #       Direccion Ip Origen
    print("       Direccion IP de Origen:\t",
          int(IPv4Packet[26],16), ".",
          int(IPv4Packet[27],16), ".",
          int(IPv4Packet[28],16), ".",
          int(IPv4Packet[29],16))
    #       Direccion Ip destino
    print("      Direccion IP de Destino:\t",
          int(IPv4Packet[30],16), ".",
          int(IPv4Packet[31],16), ".",
          int(IPv4Packet[32],16), ".",
          int(IPv4Packet[33],16))
    print("                     Checksum:   0x", IPv4Packet[24], IPv4Packet[25],"\n")
...