pero aqui solo
vamos a usar el identificador de datagrama ya que nos hemos asegurado
que no se van a repetir estos identificadores en ningun datagrama IPv4
durante toda la simulacion.
(ver atributo ID de la clase DatagramaIPv4)
|
Field Summary |
private Buffer |
buffer
Buffer |
private CabeceraIPv4 |
cabecera
Datos de la cabecera del datagrama fragmentado |
private DatagramaIPv4 |
datagrama
Datagrama reensamblado |
private int |
datagramaID
Identificador del datagrama que se esta reensamblando |
private boolean |
fragmentoInicialRecibido
Indicador de fragmento inicial recibido |
private int |
instanteInicial
Instante inicial en que se inicio la reconstruccion
(util para el 'reasembly timeout (icmp)' |
private boolean |
procesoTerminado
Indica si el proceso de reensamblado ha terminadp |
private Buffer |
rcvbt
Fragment Reveived Bit Table, mapa binario de bytes recibidos
(ver el algoritmo en el RFC 791, pagina 28) |
private int |
TDL
Total Data Length, Tamaņo total del datagrama, que sera conocido cuando se reciba el
ultimo fragmento |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
buffer
private Buffer buffer
- Buffer
instanteInicial
private int instanteInicial
- Instante inicial en que se inicio la reconstruccion
(util para el 'reasembly timeout (icmp)'
datagramaID
private int datagramaID
- Identificador del datagrama que se esta reensamblando
rcvbt
private Buffer rcvbt
- Fragment Reveived Bit Table, mapa binario de bytes recibidos
(ver el algoritmo en el RFC 791, pagina 28)
procesoTerminado
private boolean procesoTerminado
- Indica si el proceso de reensamblado ha terminadp
cabecera
private CabeceraIPv4 cabecera
- Datos de la cabecera del datagrama fragmentado
datagrama
private DatagramaIPv4 datagrama
- Datagrama reensamblado
fragmentoInicialRecibido
private boolean fragmentoInicialRecibido
- Indicador de fragmento inicial recibido
TDL
private int TDL
- Total Data Length, Tamaņo total del datagrama, que sera conocido cuando se reciba el
ultimo fragmento
Reensamblado
public Reensamblado(int instante,
DatagramaIPv4 fragmento)
- Constructor
- Parameters:
instante - Instante en que se inicia el reensambladofragmento - Fragmento del datagrama recibido
getID
public int getID()
- Devuelve el identificador del datagrama que esta siendo reensamblado
- Returns:
- ID del datagrama
ProcesoTerminado
public boolean ProcesoTerminado()
- Comprueba si el proceso de reensamblaje ha acabado
- Returns:
- Cierto si el datagrama ya se ha reensamblado
InstanteInicial
public int InstanteInicial()
- Devuelve el instante en que se inicio el reensamblado del datagrama
- Returns:
- Instente inicial de reensamblado
NuevoFragmento
public void NuevoFragmento(DatagramaIPv4 fragmento)
- Procesa un nuevo fragmento recibido. Implementa el algoritmo descrito en la
pagina 28 del RFC 791, a partir del paso (6)
- Parameters:
fragmento - Fragmento del datagrama
mapaCompleto
private boolean mapaCompleto(int longitud)
- Comprueba que el mapa de bytes recibidos esta completo
- Parameters:
longitud - Tamaņo total del datagrama
- Returns:
- Ciero si el mapa esta completo (todo a unos)
getDatagrama
public DatagramaIPv4 getDatagrama()
- Devuelve el datagrama reensablado
- Returns:
- Datagrama reensablado
FragmentoInicialRecibido
public boolean FragmentoInicialRecibido()
- Comprueba si se ha recibido el fragmento inicial
- Returns:
- Cierto si el fragmento inicial se ha recibido