NTP(Network Time Protocol)의 동작 방식은 시간 동기화를 위해 클라이언트와 서버 간에 시간 정보를 주고받는 프로세스를 기반으로 합니다. 이를 목록으로 정리하면 다음과 같습니다:
### NTP 동작 방식
1. **클라이언트-서버 모델**
- 클라이언트(슬레이브)는 서버(마스터)에게 현재 시간을 요청하고, 서버는 그에 대한 응답을 제공합니다.
- 서버는 네트워크 상의 다른 타임 소스(예: GPS, 상위 NTP 서버)와 동기화된 정확한 시간을 유지합니다.
2. **UDP 기반 통신**
- NTP는 **UDP 포트 123**을 사용하여 통신합니다.
- 가벼운 패킷 전송을 위해 설계되었으며, 빠른 응답을 제공할 수 있습니다.
3. **NTP 패킷 전송**
- 클라이언트는 서버로 48바이트 크기의 NTP 요청 패킷을 보냅니다.
- 이 패킷에는 NTP 버전, 모드(클라이언트/서버), 타임스탬프 등의 필드가 포함됩니다.
4. **타임스탬프 교환**
NTP는 시간 동기화를 위해 4개의 타임스탬프를 사용합니다.
- **T1 (Originate Timestamp)**: 클라이언트가 요청 패킷을 보낸 시간.
- **T2 (Receive Timestamp)**: 서버가 요청 패킷을 받은 시간.
- **T3 (Transmit Timestamp)**: 서버가 응답 패킷을 보낸 시간.
- **T4 (Destination Timestamp)**: 클라이언트가 응답 패킷을 받은 시간.
5. **왕복 지연 시간(RTT) 계산**
- 클라이언트는 T1, T2, T3, T4 타임스탬프를 사용하여 서버와의 왕복 시간(네트워크 지연 시간, RTT)을 계산합니다.
- 왕복 지연 시간 공식:
\[
\text{RTT} = (T4 - T1) - (T3 - T2)
\]
6. **시간 오프셋(Offset) 계산**
- 클라이언트는 서버와의 시간 차이(오프셋)를 계산하여 자신의 시간을 보정합니다.
- 시간 오프셋 공식:
\[
\text{Offset} = \frac{(T2 - T1) + (T3 - T4)}{2}
\]
- 이 값은 클라이언트의 시간이 서버보다 얼마나 빠르거나 느린지를 나타냅니다.
7. **시간 동기화 및 보정**
- 클라이언트는 계산된 오프셋을 사용하여 시스템 시간을 보정합니다.
- NTP는 지연 시간을 고려하여 정확한 동기화를 할 수 있으며, 클라이언트의 시간은 점진적으로 수정됩니다(갑작스러운 시간 점프 방지).
8. **주기적 업데이트**
- 클라이언트는 주기적으로 서버에 시간 요청을 보내며, 네트워크 상태 변화에 따라 동기화를 유지합니다.
- NTP는 여러 상위 서버와 통신하여 시간을 조정할 수 있습니다.
9. **계층 구조 (Stratum)**
- NTP 서버는 **Stratum(계층)**으로 분류됩니다:
- **Stratum 0**: 원천 소스 (예: GPS, 원자시계).
- **Stratum 1**: Stratum 0에 직접 연결된 서버.
- **Stratum 2 이상**: 상위 서버와 동기화된 하위 서버.
- 클라이언트는 Stratum 값이 낮은 서버와 동기화하려고 시도합니다.
### 요약된 NTP 동작 과정:
1. 클라이언트가 서버에게 시간 요청 패킷 전송.
2. 서버는 시간 정보를 포함한 응답 패킷 전송.
3. 클라이언트는 4개의 타임스탬프(T1, T2, T3, T4)를 사용하여 왕복 지연(RTT)과 시간 오프셋 계산.
4. 클라이언트는 계산된 시간 오프셋을 통해 자신의 시간 보정.
5. 클라이언트는 주기적으로 서버와 통신하며 시간 동기화를 유지.
카테고리 없음
댓글