Redes de computadoras y protocolos de computación
Enviado por LeonardHusGrye • 24 de Agosto de 2022 • Biografía • 1.411 Palabras (6 Páginas) • 54 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")
...