버클리 소켓 API를 사용하여 C에서 간단한 SNTP 클라이언트를 만들려고하지만 응답 메시지에서 조정 된 시간을 계산하는 데 문제가 있습니다. 나는 RFC2030에서 이것을 얻었다. 서버의 응답이 수신되면(S) NTP 패킷의 대상 타임 스탬프 결정?
클라이언트는 NTP 타임 스탬프 형식의 시계에있어서 도달 시간과 같은 대상 소인 변수를 결정한다. 다음 표는 4 개의 타임 스탬프를 요약 한 것입니다.
- 타임 스탬프 (T1)을 발원지 : 시간 클라이언트가 보낸 요청
- 타임 스탬프 (T2)를 수신 : 서버가 수신 한 시간 요청을
- 전송 타임 스탬프 (T3) : 서버
- 대상의 타임 스탬프가 보낸 시간 응답 (T4) : 시간이 클라이언트에서받은 회신
지금까지 내가, 내가 클라이언트의 시간을 할애하고 t을 추가하여 조정 된 현재 시간을 계산할 수 말할 수있는 IME는
t = ((T2 - T1) + (T3 - T4))/2
내가 T4이 계산을하기 위해 알아야 할 것으로 정의 오프셋 시간, 그것에 톤을 상쇄하지만, 패킷의 메시지의 일부가 아니다. 이 타임 스탬프는 어떻게 얻을 수 있습니까?
* T1 *은 실제로 서버에서 보낸 응답 메시지에 포함되어 있으므로 추출을 위해 특별한 트릭이 필요하지 않습니다. 여기에 Wireshark에 의해 분해 된 서버의 응답 메시지 예가 있습니다 : http://i.imgur.com/En4iG.png – Pieter
내가 할 수는 있지만 이상적으로는 패킷의 수신 타임 스탬프를 사용하고 싶습니다 (그 경우 시스템에서 데이터를 사용할 수 있으며, 확실하지 않습니다.)보다 정확한 결과를 얻을 수 있기 때문입니다. – Pieter