def _internal_send_packet(server, port, version, packet=None):
        if not packet:
            packet = NTPPacket(transmit=time.time() + NTPClient.FORMAT_DIFF)
        answer = NTPPacket(version_number=version)
        with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
            s.settimeout(NTPClient.WAITING_TIME)
            s.sendto(packet.pack(), (server, port))
            data = s.recv(48)
            arrive_time = time.time() + NTPClient.FORMAT_DIFF
            answer.unpack(data)

        return answer, arrive_time