시간 동기화는 어떤 원리로 하는 걸까요?
글쓴이: mg2000 / 작성시간: 수, 2020/10/07 - 3:38오후
기기끼리 시간을 동기화하는 방법을 고민하고 있는데요.
보통 PC를 보면, NTP 서버를 이용해서 시간을 동기화 하는데,
NTP 서버에 요청하는 시간, NTP서버가 요청을 받아서 돌려주는 시간, PC에서 시간을 변경하는 시간
이런것을 고려하면, 결국 기기끼리는 어느 정도의 오차는 생길 수 밖에 없을텐데...
이 정도 오차는 있는데 모르고 쓰는 걸까요? 아니면 다른 보정하는 방법이 있을까요?
스마트폰 같은 경우에는 수많은 폰들이 다 시간이 일치하는 것 같은데, 어떻게 하는지 신기하네요.
Forums:
단순하게 생각해서
단순하게 생각해서
ntp client가 ntp server에서 시간값을 받아오면,
받아온 시간 값 - 요청 / 응답의 총 소요시간 = ntp server 시간
아닐까요?
추가적으로 궁금한게...
만약에 서버에 요청하는데 10초가 걸리고, 서버는 12:00라는 시간으로 보내고, 클라이언트가 받는데 5초가 걸렸다면,
받아온 시간 - 서버가 클라이언트에게 보낸 시간으로 계산해야 할 것 같은데...
클라이언트 입장에는 총 소요시간만 알 수 있는 것 아닌지...
https://en.wikipedia.org/wiki
https://en.wikipedia.org/wiki/Network_Time_Protocol#Clock_synchronization_algorithm
복잡한 디테일을 들여다 볼 여유도 없고 그럴 필요도 없다면 뭐 위키피디아 정도가 적당하죠.
보아하니 클라이언트<->서버간 송수신이 같은 시간이 걸릴 때 정확한 synchronization이 가능하고,
그렇지 않을 때는 송수신 시간의 차이의 절반만큼 systematic bias이 발생한다고 하는군요.
제시하신 10초+5초 시나리오에서는 2.5초 정도의 bias가 발생하는 겁니다.
뭐 어쩔 수 없지요. 그래도 대충 납득 가능한 범위 아닙니까?
====
가급적 접속이 빠르고 안정적인 서버와 동기화하는 편이 bias를 줄일 수 있는 최적의 방법이겠죠.
근데 뭐, 지금 제 컴퓨터에서 kldp까지 ping이 10ms 미만으로 나옵니다. google.com까지는 40ms 정도고요.
이 정도 스케일에서 시각 동기화의 bias라고 해봤자 기껏해야 수십 ms 정도 될 텐데, 피차 네트워크 딜레이가 존재하는 상황에서 이 정도 bias가 문제가 될 이유가 있겠습니까.
답변 감사드립니다.
여러 기기에서 동시에 동영상을 재생하는데, 서로 어떻게 싱크를 맞추는지 고민하다 여기까지 왔는데,
답변 감사드립니다.
https://github.com/ntp
https://github.com/ntp-project/ntp/blob/master-no-authorname/ntpdate/ntpdate.c
시간 설정하는 프로그램이 어떻게 구현되어 있는지 분석해 보는게
더 확실한 공부가 될겁니다.
기왕이면 공부하고 알아낸 내용을 강좌로 써서 다른 사람들과 공유하면 더 좋고요 :)
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
좋은 자료 감사합니다.
알려주신 자료 열심히 파보겠습니다. ^^
댓글 달기