> For the complete documentation index, see [llms.txt](https://juan-martin-franco.gitbook.io/network-+/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://juan-martin-franco.gitbook.io/network-+/8.-servicios-de-red/8.4-ntp.md).

# 8.4 - NTP

## NTP (Network Time Protocol)

El <mark style="color:blue;">**protocolo de tiempo de red**</mark>, conocido como <mark style="color:blue;">**NTP**</mark>, es un **protocolo que se utiliza para la sincronización de relojes entre diferentes sistemas de computadoras que se comunican a través de las redes de datos de conmutación de paquetes de latencia variable**, como por ejemplo las redes TCP/IP.&#x20;

NTP es utilizado para sincronizar el tiempo a través de todos nuestros servidores conectados a internet.

Este protocolo envía sus datos a través del **puerto 123 sobre el protocolo UDP**.

El protocolo NTP es realmente importante en nuestras redes de computadoras ya que asegura que todos los sistemas utilizan el mismo tiempo.

NTP fue diseñado para sincronizar los relojes de todos los ordenadores participantes a unos pocos milisegundos del UTC (Tiempo universal coordinado - Coordinated Universal Time).

Se puede tener un **servidor NTP interno** dentro de nuestra red, el cual usualmente es mucho más preciso que unos pocos milisegundos, aunque también se puede utilizar un **servidor NTP externo**, el cual está públicamente disponible en internet, siendo la precisión de este último un poco menor (decenas de milisegundos).

<mark style="background-color:green;">**La importancia de NTP**</mark>

La razón de por que utilizar NTP y asegurarnos de que el tiempo es preciso es tan importante es que muchos de nuestros protocolos de seguridad confían en el tiempo para que las cosas funcionen correctamente.

Por ejemplo:&#x20;

Si el tiempo entre nuestra estación de trabajo y nuestro servidor está apago por más de 5 minutos, podemos obtener un error que previene que nos loguemos en el dominio.&#x20;

<mark style="background-color:green;">**Como asegurarnos de que NTP funciona**</mark>

NTP está diseñado para utilizar un sistema de semi-capas jerárquico de fuentes de tiempo.

Para entender como funciona NTP, necesitamos conocer 3 componentes:

* <mark style="color:blue;">**Clientes**</mark><br>
* <mark style="color:blue;">**Servidores**</mark><br>
* <mark style="color:blue;">**Stratums**</mark>: A cada una de las capas del modelo jerárquico se la conoce como Stratum.\
  Los stratums se comienzan a contar desde el Stratum 0 en adelante a medida que bajamos en la jerarquía.\
  \
  El <mark style="color:green;">**Stratum 0**</mark> corresponde a los dispositivos que tenemos acceso y que mantienen el tiempo más preciso, como por ejemplo: GPS, Reloj atómico, entre otros dispositivos que generan un pulso por segundo.\
  Si estamos conectados de manera directa a una fuente de tiempo como esta, estamos en el Stratum 0.\
  Estos relojes de Stratum 0 son conocidos como **relojes de referencia**.\
  \
  El <mark style="color:purple;">**Stratum 1**</mark> corresponde a **los primeros servidores NTP que tenemos en nuestra jerarquía**, los cuales son cualquier computadora cuya fuente de tiempo está sincronizada a unos pocos microsegundos de un dispositivo conectado a un stratum 0. \
  Para verificar su tiempo, estos servidores de Stratum 1 se emparejan con otros servidores de Stratum 1, y de esa forma pueden verificar que su tiempo sea preciso.\
  Estos servidores de Stratum 1 son conocidos como **servidores de tiempo primarios**.\
  \
  El <mark style="color:red;">**Stratum 2**</mark> corresponde a los servidores que están conectados a un servidor sincronizado de Stratum 1. \
  A menudo, los servidores de Stratum 2 están configurados para consultar múltiples servidores de Stratum 1 para asegurarse de poseer una fuente de tiempo estable y robusta, para proveerle el tiempo preciso a los otros dispositivos dentro de su grupo. \
  \
  El <mark style="color:orange;">**Stratum 3**</mark> corresponde a los servidores que están sincronizados con los servidores de Stratum 2. <br>

  <figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FredNZswnodkA61rzIeAs%2Fimage.png?alt=media&amp;token=fb14afc2-4df9-4d69-9491-433cc8d40646" alt=""><figcaption></figcaption></figure>

  \
  Este patrón continúa con Stratum 4 sincronizando el Stratum 3, Stratum 5 sincronizando el Stratum 4, y así sucesivamente. \
  Cada vez que se baja un nivel en las capas (Stratums), se agrega un poco de delay al tiempo preciso, y el tiempo de cada Stratum se aleja del tiempo del Stratum 0.\
  \
  NTP puede soportar un máximo de 15 niveles de Stratums.

<mark style="background-color:green;">**¿Cómo se ve NTP en las redes empresariales?**</mark>

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2F4j817nBXd3oHbtASxBtV%2Fimage.png?alt=media&amp;token=6f889983-0928-43a7-99d0-ea23267d62f8" alt=""><figcaption></figcaption></figure>

Usualmente conectamos un servidor de tiempo a nuestra red, o corremos un servicio de tiempo en algo como nuestro controlador de dominio con un reloj de referencia de hardware dedicado.

Este reloj estará en uno de los niveles de los Stratums, dependiendo de que tan lejos esté de la fuente de tiempo que tenemos en Stratum 0.

Luego, se instala un software cliente en cada estación de trabajo para hacer de interfaz con nuestro servidor y obtener el tiempo.

Si utilizamos Windows, tiene dicha función incorporada en sus estaciones de trabajo y nuestro controlador de dominio puede correr el servicio NTP para actuar como fuente de tiempo a un nivel de los Stratums.

De esta forma, podemos asegurarnos de que cada persona tiene el mismo tiempo en nuestra red, y nadie tiene problemas logueándose en nuestro dominio.
