private void ProcesarPaquete(Packet paquete) { if (PaqueteRecibido != null) { PaqueteRecibidoEventArgs evento = new PaqueteRecibidoEventArgs(paquete, BusinessLogic.Threads.ThreadManager.HoraActual); PaqueteRecibido(this, evento); } }
private void EnviarNotifacionSegmentoEnviado(Packet paquete) { if (SegmentoEnviado != null) { TCPSegmentTransmitido evento = new TCPSegmentTransmitido(paquete, ThreadManager.HoraActual); SegmentoEnviado(this, evento); } }
private void EnviarSegmentos(List<TCPSegment> segmentos, ControladorSesion controlador) { foreach (TCPSegment segmento in segmentos) { Packet paquete = new Packet(controlador.IpOrigen, controlador.IpDestino, segmento); _capaRed.EnviarPaquete(controlador.IpDestino, paquete); EnviarNotifacionSegmentoEnviado(paquete); } }
public void Ping(string ipDestino) { Packet paquete = new Packet(CapaDatos.Puerto.IPAddress, ipDestino, new EchoMessage()); EnviarPaquete(ipDestino, paquete); }
public override void EnviarPaquete(string ipDestino, Packet paquete) { bool perteneceAlaRed = IPAddressFactory.PerteneceAlaRed(CapaDatos.Puerto.IPAddress, ipDestino, CapaDatos.Puerto.Mascara); if (perteneceAlaRed) { CapaDatos.EnviarPaquete(paquete, ipDestino); } else { CapaDatos.EnviarPaquete(paquete, _pc.DefaultGateWay); } }
protected virtual void ProcesarPaquete(Packet paquete) { if (paquete.IpDestino == CapaDatos.Puerto.IPAddress) { if (paquete.Datos is EchoReplyMessage) { OnEchoMessage(true, paquete.IpOrigen); return; } else if (paquete.Datos is EchoMessage) { EnviarPaquete(paquete.IpOrigen, new Packet(CapaDatos.Puerto.IPAddress, paquete.IpOrigen, new EchoReplyMessage())); OnEchoMessage(false, paquete.IpOrigen); } } }
public virtual void EnviarPaquete(string direccionIP, Packet packet) { _capaDatos.EnviarPaquete(packet, direccionIP); }
private void RemoverValor(Packet paquete, Dictionary<Guid, Packet> paquetesNoEnviados) { Guid idPacket = Guid.Empty; foreach (KeyValuePair<Guid, Packet> item in paquetesNoEnviados) { if (item.Value == paquete) { idPacket = item.Key; break; } } if (idPacket == Guid.Empty) { throw new Exception(); } paquetesNoEnviados.Remove(idPacket); }
public void EnviarPaquete(Packet paquete, string ipDestino) { string broadCastAddress = IPAddressFactory.GetBroadCastAddress(_puerto.IPAddress, _puerto.Mascara); if (ipDestino == broadCastAddress) { EnviarFrame(paquete, MACAddressFactory.BroadCast); return; } if (_protocoloArp.ContieneLaDireccionDe(ipDestino)) { string macDestino = _protocoloArp.GetMacAddressFromIPAddress(ipDestino); EnviarFrame(paquete, macDestino); if (_paquetesNoEnviadosConDestino.ContainsKey(ipDestino)) { Dictionary<Guid, Packet> paquetesNoEnviados = _paquetesNoEnviadosConDestino[ipDestino]; if (paquetesNoEnviados.ContainsValue(paquete)) { RemoverValor(paquete, paquetesNoEnviados); } if (paquetesNoEnviados.Count == 0) _paquetesNoEnviadosConDestino.Remove(ipDestino); } return; } else { Guid idPacket = Guid.NewGuid(); PreguntarPorDireccion(ipDestino,idPacket); Dictionary<Guid, Packet> paquetesNoEnviadosEnDir = null; if (!_paquetesNoEnviadosConDestino.ContainsKey(ipDestino)) _paquetesNoEnviadosConDestino.Add(ipDestino,new Dictionary<Guid,Packet>()); paquetesNoEnviadosEnDir = _paquetesNoEnviadosConDestino[ipDestino]; paquetesNoEnviadosEnDir.Add(idPacket,paquete); } }
public TCPSegmentRecibido(Packet paquete, TimeSpan horaTransmision) { _TCPRecibido = paquete; _horaDeTransmision = horaTransmision; }
public TCPSegmentTransmitido(Packet segmento, TimeSpan horaTransmision) { _TCPTransmitido = segmento; _horaDeTransmision = horaTransmision; }
public void EnviarRutas(List<RutaSOA> rutasTotales) { IPacketMessage mensajeRutas = new RoutesMessage(rutasTotales); string broadCastAddress = IPAddressFactory.GetBroadCastAddress(CapaDatos.Puerto.IPAddress, CapaDatos.Puerto.Mascara); Packet paqueteRutas = new Packet(CapaDatos.Puerto.IPAddress, broadCastAddress, mensajeRutas); CapaDatos.EnviarPaquete(paqueteRutas, broadCastAddress); }
protected override void ProcesarPaquete(Packet paquete) { if (paquete.Datos is EchoMessage) { foreach (PuertoEthernetCompleto puerto in _router.PuertosEthernet) { if (puerto.Habilitado && puerto.IPAddress == paquete.IpDestino) { EnviarPaquete(paquete.IpOrigen, new Packet(puerto.IPAddress, paquete.IpOrigen, new EchoReplyMessage())); OnEchoMessage(false, paquete.IpOrigen); return; } } } if (paquete.Datos is EchoReplyMessage) { foreach (PuertoEthernetCompleto puerto in _router.PuertosEthernet) { if (puerto.Habilitado && puerto.IPAddress == paquete.IpDestino) { OnEchoMessage(true, paquete.IpOrigen); return; } } } RoutesMessage mensajeRutas = paquete.Datos as RoutesMessage; if (mensajeRutas != null) { if (!_router.RipV2.Habilitado) return; _router.RipV2.ProcesarRutas(mensajeRutas, paquete.IpOrigen, CapaDatos.Puerto.Id); return; } EntradaTablaRouter rutaInterna = _router.TablaDeRutas.BuscarRutaEnRutasInternas(paquete.IpDestino); if (rutaInterna != null) { _router.PuertoEthernetCapaRed[rutaInterna.Puerto].CapaDatos.EnviarPaquete(paquete, paquete.IpDestino); return; } EntradaTablaRouter rutaEstatica = _router.TablaDeRutas.BuscarRutaEnRutasEstaticas(paquete.IpDestino); if (rutaEstatica != null) { _router.PuertoEthernetCapaRed[rutaEstatica.Puerto].CapaDatos.EnviarPaquete(paquete, rutaEstatica.NextHopIP); return; } EntradaTablaRouter rutaDinamica = _router.TablaDeRutas.BuscarRutaEnRutasDinamicas(paquete.IpDestino); if (rutaDinamica != null) { _router.PuertoEthernetCapaRed[rutaDinamica.Puerto].CapaDatos.EnviarPaquete(paquete, rutaDinamica.NextHopIP); return; } }
public PaqueteRecibidoEventArgs(Packet paquete, TimeSpan horaDeRecepcion) { _paqueteRecibido=paquete; _horaDeRecepcion = horaDeRecepcion; }