CS 공부/기타

[etc] NTP 란 무엇인가?

강_토발즈 2025. 8. 21. 22:48

서버 관리나 DB 운영을 하다 보면 시간이 어긋나는 문제를 자주 경험한다. 특히 로그 분석, 트랜잭션 처리, 인증서 검증 등은 모두 시간이 정확해야 한다. 오늘은 이를 해결해주는 NTP(Network Time Protocol) 를 정리해보자

 

1. NTP란 무엇인가?

 

NTP 는 네트워크를 통해 서버와 클라이언트, 혹은 네트워크 장비들이 동일한 표준 시각을 맞추는 프로토콜이다. 분산된 컴퓨터가 각자 시계를 가지고 있으나, 시간이 조금씩 어긋나면 데이터 정합성과 보안에 문제가 발생 하기 때문에 이를 통합하기 위해 NTP 사용한다. 즉 다양한 서비스를 제공하는 서버들이 있다고 하면, 이 서버들이 함께 동작해야 하는 시간이 필요하기 때문에 그 기준 시간을 정하는 방법이라고 볼 수 있다.

 

2. NTP의 동작 원리

시간을 맞추고 싶은 클라이언트(특정 서버, 네트워크 장비 등)가 NTP 서버(예: 회사에서 지정한 표준 서버, kr.pool.ntp.org)에 요청한다. 이후 왕복 지연시간(RTT)을 고려해 서버 시각과의 오차 계산한다. 시간 차이가 많이 날 경우 OS 시스템 클럭을 갑자기 점프하지 않고, 서서히 보정 하는 특징이 있다고 한다.

 

3. NTP와 포트

 

NTP 는 UDP 123번 포트 사용한다. 클라이언트는 아웃바운드 123/udp만 필요하고 서버는 인바운드 123/udp도 열려 있어야 한다. 시간을 동기화 하고자 하는 클라이언트가 NTP 서버의 123 포트로 udp 요청을 보내고, 임시로 연결한 포트를 통해 시간 정보를 받아오고 통신이 종료된다. 서버에서는 ss -lunp | grep 123 명령어로 해당 포트가 Listen 중인지 확인하면 된다.

 

 

4. 비유로 이해하기

  • 회사에 여러 부서(서버)가 있다.
  • 각자 시계를 차고 있지만, 회의 시간(로그/트랜잭션)을 맞추려면 사장님(NTP 서버)의 시계를 기준으로 모두 동기화해야 한다.
  • 한 부서라도 시계가 틀리면 회사의 스케줄이 엉망이 된다.
  • 그래서 정기적으로 사장님 시계를 보고 맞추는 것이 바로 NTP 동기화다.