Redes.IPv4
Class DatagramaIPv4

java.lang.Object
  extended byRedes.Buffer
      extended byRedes.IPv4.DatagramaIPv4
Direct Known Subclasses:
CabeceraIPv4

public class DatagramaIPv4
extends Buffer

Datagrama IP


Field Summary
private static int ID
          Atributo de la clase, que se utiliza para tener identificadores unicos para cada datagrama
 
Fields inherited from class Redes.Buffer
 
Constructor Summary
  DatagramaIPv4(Buffer buffer)
          Constructor, crea un paquete copiando bit a bit el contenido de otro
  DatagramaIPv4(DatagramaIPv4 datagrama, Buffer datos)
          Constructor
  DatagramaIPv4(DireccionIPv4 origen, DireccionIPv4 destino, Buffer datos)
          Constructor
protected DatagramaIPv4(int tam)
          Constructor Crea un datagrama.
  DatagramaIPv4(java.lang.String origen, java.lang.String destino, Buffer datos)
          Constructor
 
Method Summary
 int CalculaSumaDeComprobacion()
          Calcula la suma de comprobacion de la cabecera
 java.lang.String Contenido()
          Devuelve una cadena de texto informativa sobre el datagrama
 boolean EsCorrecto()
          Comprueba el datagrama
 int getD()
          Devuelve el valor del campo TOS.TypeOfService.Delay
 DireccionIPv4 getDestino()
          Devuelve la direccion IP del equipo al que va dirigido el datagrama
 int getDF()
          Devuelve el valor el bit Don't Fragment
 int getFragmentOffset()
          Devuelve el desplazamiento del fragmento dentro del datagrama
 int getHeaderChecksum()
          Devuelve la el valor de la suma de comprobacion de la cabecera IP
 int getID()
          Devuelve el identificador de datagrama
 int getIHL()
          Devuelve el la longitud total de la cabecera IP
 int getMF()
          Devuelve el valor del bit 'More Fragments'
 DireccionIPv4 getOrigen()
          Devuelve la direccion IP del origen
 int getPrecedence0()
          Devuelve el bit 0 del campo TOS.Precedence
 int getPrecedence1()
          Devuelve el bit 1 del campo TOS.Precedence
 int getPrecedence2()
          Devuelve el bit 2 del campo TOS.Precedence
 int getProtocol()
          Devuelve el protocolo usado por la porcion de datos del datagrama
 int getR()
          Devuelve el calor del campo TOS.TypeOfService.Reliability
 int getT()
          Devuelve el valor del campo TOS.TypeOfService.Throughput
 int getTotalLength()
          Devuelve el valor del campo Total Length
 int getTTL()
          Devuelve el tiempo de vida del datagrama
 int getVersion()
          Devuelve el contenido del campo Version de la cabecera IP
 void setD(int D)
          Pone un valor en el campo TOS.TypeOfService.Delay (retardo)
 void setDestino(DireccionIPv4 destino)
          Cambia la direccion IP de destino de un datagrama
 void setDF(int DF)
          Cambia el valor del bit 'Don't Fragment'
 void setFragmentOffset(int desplazamiento)
          Pone un valor en el campo 'Fragment Offset' (Desplazamiento del fragmento) (este desplazamiento se cuenta en unidades de 8 bytes)
 void setHeaderChecksum(int suma)
          Cambia el valor del campo 'header checksum'
 void setID(int id)
          Cambia el valor del campo ID
 void setIHL(int longitud)
          Pone un valor en el campo IHL (Internet Header Length/Longitud de la cabecera IP)
 void setMF(int MF)
          Cambia el valor del bit 'More Fragments'
 void setOrigen(DireccionIPv4 origen)
          Cambia la direccion IP de origen de un datagrama
 void setPrecedence(int p0, int p1, int p2)
          Pone un valor en el campo TOS.Precedence (012)
 void setProtocol(int protocolo)
          Cambia el valor del campo 'protocol'
 void setR(int R)
          Pone un valor en el campo TOS.TypeOfService.Reliability (confiabilidad)
 void setT(int T)
          Pone un valor en el campo TOS.TypeOfService.Throughput (rendimiento)
 void setTotalLength(int longitud)
          Cambia el tamaņo del campo 'Longitud total' del datagrama
 void setTTL(int ttl)
          Cambia el valor del campo TTL
 void setVersion(int numVersion)
          Pone un valor en el campo Version de la cabecera IP
 
Methods inherited from class Redes.Buffer
getBit, getByte, getByteH, getByteL, imprimible, Redimensiona, setBit, setByte, setByteH, setByteL, Tam
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ID

private static int ID
Atributo de la clase, que se utiliza para tener identificadores unicos para cada datagrama

Constructor Detail

DatagramaIPv4

public DatagramaIPv4(DireccionIPv4 origen,
                     DireccionIPv4 destino,
                     Buffer datos)
Constructor

Parameters:
origen - direccion IPv4 de origen
destino - direccion IPv4 de destino
datos - datos contenidos
Throws:
java.lang.IllegalArgumentException - si alguno de los valores de entrada es nulo

DatagramaIPv4

public DatagramaIPv4(java.lang.String origen,
                     java.lang.String destino,
                     Buffer datos)
Constructor

Parameters:
origen - Direccion origen del datagrama
destino - Direccion de destino
datos - Carga de datos del datagrama

DatagramaIPv4

protected DatagramaIPv4(int tam)
Constructor Crea un datagrama. Su informacion util se limita a los datos de la cabecera. Este tipo de 'pseudo-datagrama' se usa solo con propositos de reensamblado de fragmentos a traves de la clase derivada CabeceraIPv4.

Parameters:
tam - Tamaņo de la cabecera en bytes
Throws:
java.lang.IllegalArgumentException - si el tamaņo especificado no es valido

DatagramaIPv4

public DatagramaIPv4(DatagramaIPv4 datagrama,
                     Buffer datos)
Constructor

Parameters:
datagrama - Datagrama del que se copiara la cabecera
datos - Bytes del campo de datos
Throws:
java.lang.IllegalArgumentException - si alguno de los valores de entrada es nulo

DatagramaIPv4

public DatagramaIPv4(Buffer buffer)
Constructor, crea un paquete copiando bit a bit el contenido de otro

Parameters:
buffer - Paquete que se quiere copiar
Method Detail

setVersion

public void setVersion(int numVersion)
Pone un valor en el campo Version de la cabecera IP

Parameters:
numVersion - Numero de version, 4 para IPv4
Throws:
java.lang.IllegalArgumentException - si el numero de version no es valido

getVersion

public int getVersion()
Devuelve el contenido del campo Version de la cabecera IP

Returns:
Version de IP usada en el datagrama

setIHL

public void setIHL(int longitud)
Pone un valor en el campo IHL (Internet Header Length/Longitud de la cabecera IP)

Parameters:
longitud - Longitud de la cabecera IP
Throws:
java.lang.IllegalArgumentException - si la longitud especificada no es valida

getIHL

public int getIHL()
Devuelve el la longitud total de la cabecera IP

Returns:
Longitud de la cabecera

setPrecedence

public void setPrecedence(int p0,
                          int p1,
                          int p2)
Pone un valor en el campo TOS.Precedence (012)

Parameters:
p0 - valor para el bit 0
p1 - valor para el bit 1
p2 - valor para el bit 2
Throws:
java.lang.IllegalArgumentException - si algun bit especificado no es correcto

getPrecedence0

public int getPrecedence0()
Devuelve el bit 0 del campo TOS.Precedence

Returns:
Bit 0

getPrecedence1

public int getPrecedence1()
Devuelve el bit 1 del campo TOS.Precedence

Returns:
Bit 1

getPrecedence2

public int getPrecedence2()
Devuelve el bit 2 del campo TOS.Precedence

Returns:
Bit 2

setD

public void setD(int D)
Pone un valor en el campo TOS.TypeOfService.Delay (retardo)

Parameters:
D - Valor
Throws:
java.lang.IllegalArgumentException - si el valor del bit no es valido

getD

public int getD()
Devuelve el valor del campo TOS.TypeOfService.Delay

Returns:
Valor del campo

setT

public void setT(int T)
Pone un valor en el campo TOS.TypeOfService.Throughput (rendimiento)

Parameters:
T - Valor
Throws:
java.lang.IllegalArgumentException - si el valor del bit no es correcto

getT

public int getT()
Devuelve el valor del campo TOS.TypeOfService.Throughput

Returns:
Valor del campo

setR

public void setR(int R)
Pone un valor en el campo TOS.TypeOfService.Reliability (confiabilidad)

Parameters:
R - Valor
Throws:
java.lang.IllegalArgumentException - si el valor del bit no es valido

getR

public int getR()
Devuelve el calor del campo TOS.TypeOfService.Reliability

Returns:
Valor del campo

setTotalLength

public void setTotalLength(int longitud)
Cambia el tamaņo del campo 'Longitud total' del datagrama

Parameters:
longitud - Longitud total del datagrama
Throws:
java.lang.IllegalArgumentException - si el valor de longitud no es correcto

getTotalLength

public int getTotalLength()
Devuelve el valor del campo Total Length

Returns:
Longitud total del datagrama en bytes

setID

public void setID(int id)
Cambia el valor del campo ID

Parameters:
id - Identificador de grupo de fragmentos (datagrama)
Throws:
java.lang.IllegalArgumentException - si el valor de identificador no es valido

getID

public int getID()
Devuelve el identificador de datagrama

Returns:
ID del datagrama

setDF

public void setDF(int DF)
Cambia el valor del bit 'Don't Fragment'

Parameters:
DF - Valor del bit
Throws:
java.lang.IllegalArgumentException - si el valor del bit no es valido

getDF

public int getDF()
Devuelve el valor el bit Don't Fragment

Returns:
Valor del bit DF

setMF

public void setMF(int MF)
Cambia el valor del bit 'More Fragments'

Parameters:
MF - Valor del bit
Throws:
java.lang.IllegalArgumentException - si el valor del bit no es valido

getMF

public int getMF()
Devuelve el valor del bit 'More Fragments'

Returns:
Valor del bit MF

setFragmentOffset

public void setFragmentOffset(int desplazamiento)
Pone un valor en el campo 'Fragment Offset' (Desplazamiento del fragmento) (este desplazamiento se cuenta en unidades de 8 bytes)

Parameters:
desplazamiento - Desplazamiento del fragmento dentro de datagrama original
Throws:
java.lang.IllegalArgumentException - si el valor es incorrecto

getFragmentOffset

public int getFragmentOffset()
Devuelve el desplazamiento del fragmento dentro del datagrama

Returns:
Desplazamiento en unidades de 8 bytes

setTTL

public void setTTL(int ttl)
Cambia el valor del campo TTL

Parameters:
ttl - Tiempo de vida del datagrama
Throws:
java.lang.IllegalArgumentException - si el valor esta fuera del rango [0,255]

getTTL

public int getTTL()
Devuelve el tiempo de vida del datagrama

Returns:
Valor del campo TTL

setProtocol

public void setProtocol(int protocolo)
Cambia el valor del campo 'protocol'

Parameters:
protocolo - Protocolo del nivel de transporte al que pertenece el datagrama
Throws:
java.lang.IllegalArgumentException - si el valor esta fuera del rango [0,255]

getProtocol

public int getProtocol()
Devuelve el protocolo usado por la porcion de datos del datagrama

Returns:
Protocolo de los datos

CalculaSumaDeComprobacion

public int CalculaSumaDeComprobacion()
Calcula la suma de comprobacion de la cabecera

Returns:
Suma de comprobacion

setHeaderChecksum

public void setHeaderChecksum(int suma)
Cambia el valor del campo 'header checksum'

Parameters:
suma - Nuevo valor
Throws:
java.lang.IllegalArgumentException - si el valor de la suma esta fuera de rango

getHeaderChecksum

public int getHeaderChecksum()
Devuelve la el valor de la suma de comprobacion de la cabecera IP

Returns:
Suma de comprobacion de la cabecera (Header Checksum)

setOrigen

public void setOrigen(DireccionIPv4 origen)
Cambia la direccion IP de origen de un datagrama

Parameters:
origen - Direccion IPv4 de origen del datagrama

getOrigen

public DireccionIPv4 getOrigen()
Devuelve la direccion IP del origen

Returns:
Direccion IPv4 del equipo que origino el datagrama
Throws:
java.lang.IllegalArgumentException - si los bytes de la direccion de origen de la cabecera son incorrectos

setDestino

public void setDestino(DireccionIPv4 destino)
Cambia la direccion IP de destino de un datagrama

Parameters:
destino - Direccion IPv4 de destino del datagrama

getDestino

public DireccionIPv4 getDestino()
Devuelve la direccion IP del equipo al que va dirigido el datagrama

Returns:
Direccion IPv4 del destino
Throws:
java.lang.IllegalArgumentException - si los bytes de la cabecera asociados a la direccion de destino son incorrectos

EsCorrecto

public boolean EsCorrecto()
Comprueba el datagrama

Returns:
Cierto si el datagrama es correcto

Contenido

public java.lang.String Contenido()
Devuelve una cadena de texto informativa sobre el datagrama

Overrides:
Contenido in class Buffer
Returns:
Cadena de texto con el contenido del datagrama