시간 동기화는 어떤 원리로 하는 걸까요?

mg2000의 이미지

기기끼리 시간을 동기화하는 방법을 고민하고 있는데요.

보통 PC를 보면, NTP 서버를 이용해서 시간을 동기화 하는데,

NTP 서버에 요청하는 시간, NTP서버가 요청을 받아서 돌려주는 시간, PC에서 시간을 변경하는 시간

이런것을 고려하면, 결국 기기끼리는 어느 정도의 오차는 생길 수 밖에 없을텐데...

이 정도 오차는 있는데 모르고 쓰는 걸까요? 아니면 다른 보정하는 방법이 있을까요?

스마트폰 같은 경우에는 수많은 폰들이 다 시간이 일치하는 것 같은데, 어떻게 하는지 신기하네요.

익명 사용자의 이미지

단순하게 생각해서
ntp client가 ntp server에서 시간값을 받아오면,
받아온 시간 값 - 요청 / 응답의 총 소요시간 = ntp server 시간
아닐까요?

mg2000의 이미지

만약에 서버에 요청하는데 10초가 걸리고, 서버는 12:00라는 시간으로 보내고, 클라이언트가 받는데 5초가 걸렸다면,

받아온 시간 - 서버가 클라이언트에게 보낸 시간으로 계산해야 할 것 같은데...

클라이언트 입장에는 총 소요시간만 알 수 있는 것 아닌지...

익명 사용자의 이미지

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가 문제가 될 이유가 있겠습니까.

mg2000의 이미지

여러 기기에서 동시에 동영상을 재생하는데, 서로 어떻게 싱크를 맞추는지 고민하다 여기까지 왔는데,

답변 감사드립니다.

나빌레라의 이미지

https://github.com/ntp-project/ntp/blob/master-no-authorname/ntpdate/ntpdate.c

시간 설정하는 프로그램이 어떻게 구현되어 있는지 분석해 보는게
더 확실한 공부가 될겁니다.

기왕이면 공부하고 알아낸 내용을 강좌로 써서 다른 사람들과 공유하면 더 좋고요 :)

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

익명 사용자의 이미지

알려주신 자료 열심히 파보겠습니다. ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.