The Network Time Protocol ( NTP ) is a networking protocol for clock synchronization between computer systems over packet-switched , variable- latency data networks. In operation since before 1985, NTP is one of the oldest Internet protocols in current use. NTP was designed by David L. Mills of the University of Delaware .
130-652: Unix time is a date and time representation widely used in computing . It measures time by the number of non- leap seconds that have elapsed since 00:00:00 UTC on 1 January 1970, the Unix epoch . For example, at midnight on January 1 2010, Unix time was 1262304000. Unix time originated as the system time of Unix operating systems. It has come to be widely used in other computer operating systems , file systems , programming languages , and databases . In modern computing, values are sometimes stored with higher granularity , such as microseconds or nanoseconds . Unix time
260-451: A configuration file , an attached reference clock, or a remote server. Although the NTP clock is actually halted during the event, because of the requirement that time must appear to be strictly increasing , any processes that query the system time cause it to increase by a tiny amount, preserving the order of events. If a negative leap second should ever become necessary, it would be deleted with
390-408: A discontinuity . Leap seconds may be positive or negative. No negative leap second has ever been declared, but if one were to be, then at the end of a day with a negative leap second, the Unix time number would jump up by 1 to the start of the next day. During a positive leap second at the end of a day, which occurs about every year and a half on average, the Unix time number increases continuously into
520-472: A symmetric key mode, which is not useful against MITM. The public key system known as "autokey" in NTPv4 adapted from IPSec offers useful authentication, but is not practical for a busy server. Autokey was also later found to suffer from several design flaws, with no correction published, save for a change in the message authentication code . Autokey should no longer be used. Network Time Security (NTS)
650-644: A Date library which provides and stores timestamps in milliseconds since the Unix epoch and is implemented in all modern desktop and mobile web browsers as well as in JavaScript server environments like Node.js . Filesystems designed for use with Unix-based operating systems tend to use Unix time. APFS , the file system used by default across all Apple devices, and ext4 , which is widely used on Linux and Android devices, both use Unix time in nanoseconds for file timestamps. Several archive file formats can store timestamps in Unix time, including RAR and tar . Unix time
780-484: A broad array of electronic, wireless, and optical networking technologies. The Internet carries an extensive range of information resources and services, such as the inter-linked hypertext documents of the World Wide Web and the infrastructure to support email. Computer programming is the process of writing, testing, debugging, and maintaining the source code and documentation of computer programs. This source code
910-497: A computer's capabilities, but typically do not directly apply them in the performance of tasks that benefit the user, unlike application software. Application software, also known as an application or an app , is computer software designed to help the user perform specific tasks. Examples include enterprise software , accounting software , office suites , graphics software , and media players . Many application programs deal principally with documents . Apps may be bundled with
1040-416: A constant offset from TAI. If this happens, it is likely that Unix time will be prospectively defined in terms of this new time scale, instead of UTC. Uncertainty about whether this will occur makes prospective Unix time no less predictable than it already is: if UTC were simply to have no further leap seconds the result would be the same. The earliest versions of Unix time had a 32-bit integer incrementing at
1170-434: A few incidents. It is able to achieve improved precision on LAN connections, using hardware timestamping on the network adapter. Support for Network Time Security (NTS) was added on version 4.0. chrony is available under GNU General Public License version 2 , was created by Richard Curnow in 1997 and is currently maintained by Miroslav Lichvar . On the day of a leap second event, ntpd receives notification from either
1300-455: A focus on security and encompassing a privilege separated design. Whilst it is aimed more closely at the simpler generic needs of OpenBSD users, it also includes some protocol security improvements while still being compatible with existing NTP servers. The simpler code base sacrifices accuracy, deemed unnecessary in this use case. A portable version is available in Linux package repositories. NTPsec
1430-443: A hierarchical, semi-layered system of time sources. Each level of this hierarchy is termed a stratum and is assigned a number starting with zero for the reference clock at the top. A server synchronized to a stratum n server runs at stratum n + 1. The number represents the distance from the reference clock and is used to prevent cyclical dependencies in the hierarchy. Stratum is not always an indication of quality or reliability; it
SECTION 10
#17328553505691560-560: A hierarchy of servers similar to the NTP stratum model. In 1985, NTP version 0 (NTPv0) was implemented in both Fuzzball and Unix, and the NTP packet header and round-trip delay and offset calculations, which have persisted into NTPv4, were documented in RFC 958 . Despite the relatively slow computers and networks available at the time, accuracy of better than 100 milliseconds was usually obtained on Atlantic spanning links, with accuracy of tens of milliseconds on Ethernet networks. In 1988,
1690-468: A hypothetical POSIX-conforming clock using the same interface. This would be achieved by indicating the TIME_INS state during the entirety of an inserted leap second, then indicating TIME_WAIT during the entirety of the following second while repeating the seconds count. This requires synchronous leap second handling. This is probably the best way to express UTC time in Unix clock form, via a Unix interface, when
1820-451: A man-in-the-middle attack can be used to alter clocks on client computers and allow a number of attacks based on bypassing of cryptographic key expiration. Some of the services affected by fake NTP messages identified are TLS , DNSSEC , various caching schemes (such as DNS cache), Border Gateway Protocol (BGP), Bitcoin and a number of persistent login schemes. NTP has been used in distributed denial of service attacks . A small query
1950-478: A much more complete specification of the NTPv1 protocol, with associated algorithms, was published in RFC 1059 . It drew on the experimental results and clock filter algorithm documented in RFC 956 and was the first version to describe the client–server and peer-to-peer modes. In 1991, the NTPv1 architecture, protocol and algorithms were brought to the attention of a wider engineering community with
2080-565: A nominally impossible time number, but this can be detected by the TIME_DEL state and corrected. In this type of system the Unix time number violates POSIX around both types of leap second. Collecting the leap second state variable along with the time number allows for unambiguous decoding, so the correct POSIX time number can be generated if desired, or the full UTC time can be stored in a more suitable format. The decoding logic required to cope with this style of Unix clock would also correctly decode
2210-459: A normal UTC day, which has a duration of 86 400 seconds, the Unix time number changes in a continuous manner across midnight. For example, at the end of the day used in the examples above, the time representations progress as follows: When a leap second occurs, the UTC day is not exactly 86 400 seconds long and the Unix time number (which always increases by exactly 86 400 each day) experiences
2340-418: A number of time format standards which exist to be readable by both humans and computers, such as ISO 8601 . Unix enthusiasts have a history of holding "time_t parties" (pronounced "time tea parties ") to celebrate significant values of the Unix time number. These are directly analogous to the new year celebrations that occur at the change of year in many calendars. As the use of Unix time has spread, so has
2470-463: A point in time is, on many platforms, a signed integer , traditionally of 32 bits (but see below), directly encoding the Unix time number as described in the preceding section. A signed 32-bit value covers about 68 years before and after the 1970-01-01 epoch. The minimum representable date is Friday 1901-12-13, and the maximum representable date is Tuesday 2038-01-19. One second after 2038-01-19T03:14:07Z this representation will overflow in what
2600-514: A rate of 60 Hz , which was the rate of the system clock on the hardware of the early Unix systems. Timestamps stored this way could only represent a range of a little over two and a quarter years. The epoch being counted from was changed with Unix releases to prevent overflow, with midnight on 1 January 1971 and 1 January 1972 both being used as epochs during Unix's early development. Early definitions of Unix time also lacked timezones. The current epoch of 1 January 1970 00:00:00 UTC
2730-458: A set of instructions called a computer program . The program has an executable form that the computer can use directly to execute the instructions. The same program in its human-readable source code form, enables a programmer to study and develop a sequence of steps known as an algorithm . Because the instructions can be carried out in different types of computers, a single set of source instructions converts to machine instructions according to
SECTION 20
#17328553505692860-431: A signed 32-bit integer is 2 − 1 , and the minimum value is −2 , making it impossible to represent dates before 13 December 1901 (at 20:45:52 UTC) or after 19 January 2038 (at 03:14:07 UTC). The early cutoff can have an impact on databases that are storing historical information; in some databases where 32-bit Unix time is used for timestamps, it may be necessary to store time in a different form of field, such as
2990-464: A signed 64-bit integer is over 584 billion years, or 292 billion years in either direction of the 1970 epoch. Unix time is not the only standard for time that counts away from an epoch. On Windows , the FILETIME type stores time as a count of 100-nanosecond intervals that have elapsed since 0:00 GMT on 1 January 1601. Windows epoch time is used to store timestamps for files and in protocols such as
3120-520: A simpler codebase allowing for better security and lower resource consumption. It does not however compromise on accuracy, instead syncing faster and better than the reference ntpd in many circumstances. It is versatile enough for ordinary computers, which are unstable, go into sleep mode or have intermittent connection to the Internet. It is also designed for virtual machines, a more unstable environment. Chrony has been evaluated as "trustworthy", with only
3250-456: A string, to represent dates before 1901. The late cutoff is known as the Year 2038 problem and has the potential to cause issues as the date approaches, as dates beyond the 2038 cutoff would wrap back around to the start of the representable range in 1901. Date range cutoffs are not an issue with 64-bit representations of Unix time, as the effective range of dates representable with Unix time stored in
3380-435: A superposition, i.e. in both states of one and zero, simultaneously. Thus, the value of the qubit is not between 1 and 0, but changes depending on when it is measured. This trait of qubits is known as quantum entanglement , and is the core idea of quantum computing that allows quantum computers to do large scale computations. Quantum computing is often used for scientific research in cases where traditional computers do not have
3510-457: A system that does not conform to the POSIX standard. See the section below concerning NTP for details. When dealing with periods that do not encompass a UTC leap second, the difference between two Unix time numbers is equal to the duration in seconds of the period between the corresponding points in time. This is a common computational technique. However, where leap seconds occur, such calculations give
3640-423: A warning of any impending leap second adjustment, but no information about local time zones or daylight saving time is transmitted. The current protocol is version 4 (NTPv4), which is backward compatible with version 3. In 1979, network time synchronization technology was used in what was possibly the first public demonstration of Internet services running over a trans-Atlantic satellite network, at
3770-421: Is spintronics . Spintronics can provide computing power and storage, without heat buildup. Some research is being done on hybrid chips, which combine photonics and spintronics. There is also research ongoing on combining plasmonics , photonics, and electronics. Cloud computing is a model that allows for the use of computing resources, such as servers or applications, without the need for interaction between
3900-460: Is a discipline that integrates several fields of electrical engineering and computer science required to develop computer hardware and software. Computer engineers usually have training in electronic engineering (or electrical engineering ), software design , and hardware-software integration, rather than just software engineering or electronic engineering. Computer engineers are involved in many hardware and software aspects of computing, from
4030-504: Is a fork of the reference implementation that has been systematically security-hardened . The fork point was in June 2015 and was in response to a series of compromises in 2014. The first production release shipped in October 2017. Between removal of unsafe features, removal of support for obsolete hardware, and removal of support for obsolete Unix variants, NTPsec has been able to pare away 75% of
Unix time - Misplaced Pages Continue
4160-414: Is a person who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to programming may also be known as a programmer analyst. A programmer's primary computer language ( C , C++ , Java , Lisp , Python , etc.) is often prefixed to
4290-509: Is a secure version of NTPv4 with TLS and AEAD . The main improvement over previous attempts is that a separate "key establishment" server handles the heavy asymmetric cryptography, which needs to be done only once. If the server goes down, previous users would still be able to fetch time without fear of MITM. NTS is currently supported by several time servers, including Cloudflare . It is supported by NTPSec and chrony. Microsoft also has an approach to authenticate NTPv3/SNTPv4 packets using
4420-409: Is also synonymous with counting and calculating . In earlier times, it was used in reference to the action performed by mechanical computing machines , and before that, to human computers . The history of computing is longer than the history of computing hardware and includes the history of methods intended for pen and paper (or for chalk and slate) with or without the aid of tables. Computing
4550-479: Is also commonly used to store timestamps in databases, including in MySQL and PostgreSQL . Unix time was designed to encode calendar dates and times in a compact manner intended for use by computers internally. It is not intended to be easily read by humans or to store timezone-dependent values. It is also limited by default to representing time in seconds, making it unsuited for use when a more precise measurement of time
4680-465: Is also used as a mechanism for storing timestamps in a number of file systems , file formats , and databases . The C standard library uses Unix time for all date and time functions, and Unix time is sometimes referred to as time_t, the name of the data type used for timestamps in C and C++ . C's Unix time functions are defined as the system time API in the POSIX specification. The C standard library
4810-414: Is an area of research that brings together the disciplines of computer science, information theory, and quantum physics. While the idea of information as part of physics is relatively new, there appears to be a strong tie between information theory and quantum mechanics. Whereas traditional computing operates on a binary system of ones and zeros, quantum computing uses qubits . Qubits are capable of being in
4940-418: Is common to find stratum 3 time sources that are higher quality than other stratum 2 time sources. A brief description of strata 0, 1, 2 and 3 is provided below. The upper limit for stratum is 15; stratum 16 is used to indicate that a device is unsynchronized. The NTP algorithms on each computer interact to construct a Bellman–Ford shortest-path spanning tree , to minimize the accumulated round-trip delay to
5070-423: Is computer software designed to operate and control computer hardware, and to provide a platform for running application software. System software includes operating systems , utility software , device drivers , window systems , and firmware . Frequently used development tools such as compilers , linkers , and debuggers are classified as system software. System software and middleware manage and integrate
5200-471: Is currently defined as the number of non-leap seconds which have passed since 00:00:00 UTC on Thursday, 1 January 1970, which is referred to as the Unix epoch . Unix time is typically encoded as a signed integer . The Unix time 0 is exactly midnight UTC on 1 January 1970, with Unix time incrementing by 1 for every non-leap second after this. For example, 00:00:00 UTC on 1 January 1971
5330-476: Is denoted CMOS-integrated nanophotonics (CINP). One benefit of optical interconnects is that motherboards, which formerly required a certain kind of system on a chip (SoC), can now move formerly dedicated memory and network controllers off the motherboards, spreading the controllers out onto the rack. This allows standardization of backplane interconnects and motherboards for multiple types of SoCs, which allows more timely upgrades of CPUs. Another field of research
Unix time - Misplaced Pages Continue
5460-399: Is derived from the best three remaining candidates. The clock frequency is then adjusted to reduce the offset gradually ("discipline"), creating a feedback loop . Accurate synchronization is achieved when both the incoming and outgoing routes between the client and the server have symmetrical nominal delay. If the routes do not have a common nominal delay, a systematic bias exists of half
5590-485: Is intimately tied to the representation of numbers, though mathematical concepts necessary for computing existed before numeral systems . The earliest known tool for use in computation is the abacus , and it is thought to have been invented in Babylon circa between 2700 and 2300 BC. Abaci, of a more modern design, are still used as calculation tools today. The first recorded proposal for using digital electronics in computing
5720-710: Is its potential to support energy efficiency. Allowing thousands of instances of computation to occur on one single machine instead of thousands of individual machines could help save energy. It could also ease the transition to renewable energy source, since it would suffice to power one server farm with renewable energy, rather than millions of homes and offices. However, this centralized computing model poses several challenges, especially in security and privacy. Current legislation does not sufficiently protect users from companies mishandling their data on company servers. This suggests potential for further legislative regulations on cloud computing and tech companies. Quantum computing
5850-431: Is known as the year 2038 problem . In some newer operating systems, time_t has been widened to 64 bits. This expands the times representable to about 292.3 billion years in both directions, which is over twenty times the present age of the universe . There was originally some controversy over whether the Unix time_t should be signed or unsigned. If unsigned, its range in the future would be doubled, postponing
5980-413: Is known), as opposed to "UTC" (although not all UTC time values have a unique reference in systems that do not count leap seconds). Because TAI has no leap seconds, and every TAI day is exactly 86400 seconds long, this encoding is actually a pure linear count of seconds elapsed since 1970-01-01T00:00:10 TAI. This makes time interval arithmetic much easier. Time values from these systems do not suffer
6110-406: Is necessary to consult a table of leap seconds to detect them. Commonly a Mills -style Unix clock is implemented with leap second handling not synchronous with the change of the Unix time number. The time number initially decreases where a leap should have occurred, and then it leaps to the correct time 1 second after the leap. This makes implementation easier, and is described by Mills' paper. This
6240-520: Is needed, such as when measuring the execution time of programs. Unix time by design does not require a specific size for the storage, but most common implementations of Unix time use a signed integer with the same size as the word size of the underlying hardware. As the majority of modern computers are 32-bit or 64-bit , and a large number of programs are still written in 32-bit compatibility mode, this means that many programs using Unix time are using signed 32-bit integer fields. The maximum value of
6370-455: Is not a suitable way to represent times prior to 1972 in applications requiring sub-second precision; such applications must, at least, define which form of UT or GMT they use. As of 2009, the possibility of ending the use of leap seconds in civil time is being considered. A likely means to execute this change is to define a new time scale, called International Time , that initially matches UTC but thereafter has no leap seconds, thus remaining at
6500-410: Is not the only time system based on an epoch and the Unix epoch is not the only epoch used by other time systems. Unix time differs from both Coordinated Universal Time (UTC) and International Atomic Time (TAI) in its handling of leap seconds . UTC includes leap seconds that adjust for the discrepancy between precise time, as measured by atomic clocks , and solar time , relating to the position of
6630-566: Is not to be mixed with a public NTP pool as leap smear is non-standard and will throw off client calculation in a mix. Because adjusting system time is generally a privileged operation, part or all of NTP code has to be run with some privileges in order to support its core functionality. Only a few other security problems have been identified in the reference implementation of the NTP codebase, but those that appeared in 2009 were cause for significant concern. The protocol has been undergoing revision and review throughout its history. The codebase for
SECTION 50
#17328553505696760-465: Is represented in Unix time as 31 536 000 . Negative values, on systems that support them, indicate times before the Unix epoch, with the value decreasing by 1 for every non-leap second before the epoch. For example, 00:00:00 UTC on 1 January 1969 is represented in Unix time as −31 536 000 . Every day in Unix time consists of exactly 86 400 seconds. Unix time is sometimes referred to as Epoch time . This can be misleading since Unix time
6890-530: Is sent to an NTP server with the return IP address spoofed to be the target address. Similar to the DNS amplification attack , the server responds with a much larger reply that allows an attacker to substantially increase the amount of data being sent to the target. To avoid participating in an attack, NTP server software can be upgraded or servers can be configured to ignore external queries. NTP itself includes support for authenticating servers to clients. NTPv3 supports
7020-559: Is sometimes considered a sub-discipline of electrical engineering , telecommunications, computer science , information technology, or computer engineering , since it relies upon the theoretical and practical application of these disciplines. The Internet is a global system of interconnected computer networks that use the standard Internet Protocol Suite (TCP/IP) to serve billions of users. This includes millions of private, public, academic, business, and government networks, ranging in scope from local to global. These networks are linked by
7150-687: Is the application of computers and telecommunications equipment to store, retrieve, transmit, and manipulate data, often in the context of a business or other enterprise. The term is commonly used as a synonym for computers and computer networks, but also encompasses other information distribution technologies such as television and telephones. Several industries are associated with information technology, including computer hardware, software, electronics , semiconductors , internet, telecom equipment , e-commerce , and computer services . DNA-based computing and quantum computing are areas of active research for both computing hardware and software, such as
7280-463: Is the number of days since the epoch, and the modulus is the number of seconds since midnight UTC on that day. If given a Unix time number that is ambiguous due to a positive leap second, this algorithm interprets it as the time just after midnight. It never generates a time that is during a leap second. If given a Unix time number that is invalid due to a negative leap second, it generates an equally invalid UTC time. If these conditions are significant, it
7410-509: Is the study of complementary networks of hardware and software (see information technology) that people and organizations use to collect, filter, process, create, and distribute data . The ACM 's Computing Careers describes IS as: "A majority of IS [degree] programs are located in business schools; however, they may have different names such as management information systems, computer information systems, or business information systems. All IS degrees combine business and computing topics, but
7540-449: Is thus often developed by a team of domain experts, each a specialist in some area of development. However, the term programmer may apply to a range of program quality, from hacker to open source contributor to professional. It is also possible for a single programmer to do most or all of the computer programming needed to generate the proof of concept to launch a new killer application . A programmer, computer programmer, or coder
7670-565: Is used extensively in all modern desktop operating systems, including Microsoft Windows and Unix-like systems such as macOS and Linux , where it is a standard programming interface. iOS provides a Swift API which defaults to using an epoch of 1 January 2001 but can also be used with Unix timestamps. Android uses Unix time alongside a timezone for its system time API. Windows does not use Unix time for storing time internally but does use it in system APIs, which are provided in C++ and implement
7800-523: Is usually described in terms of a client–server model , but can as easily be used in peer-to-peer relationships where both peers consider the other to be a potential time source. Implementations send and receive timestamps using the User Datagram Protocol (UDP) on port number 123. They can also use broadcasting or multicasting , where clients passively listen to time updates after an initial round-trip calibrating exchange. NTP supplies
7930-402: Is what happens across a positive leap second: This can be decoded properly by paying attention to the leap second state variable, which unambiguously indicates whether the leap has been performed yet. The state variable change is synchronous with the leap. A similar situation arises with a negative leap second, where the second that is skipped is slightly too late. Very briefly the system shows
SECTION 60
#17328553505698060-429: Is written in a programming language , which is an artificial language that is often more restrictive than natural languages , but easily translated by the computer. Programming is used to invoke some desired behavior (customization) from the machine. Writing high-quality source code requires knowledge of both the computer science domain and the domain in which the application will be used. The highest-quality software
8190-538: The Active Directory Time Service and Server Message Block . The Network Time Protocol used to coordinate time between computers uses an epoch of 1 January 1900, counted in an unsigned 32-bit integer for seconds and another unsigned 32-bit integer for fractional seconds, which rolls over every 2 seconds (about once every 136 years). Many applications and programming languages provide methods for storing time with an explicit timezone. There are also
8320-564: The C standard library , which includes the time types and functions defined in the <time.h> header file. The ISO C standard states that time_t must be an arithmetic type, but does not mandate any specific type or encoding for it. POSIX requires time_t to be an integer type, but does not mandate that it be signed or unsigned. Unix has no tradition of directly representing non-integer Unix time numbers as binary fractions. Instead, times with sub-second precision are represented using composite data types that consist of two integers,
8450-554: The CPU type. The execution process carries out the instructions in a computer program. Instructions express the computations performed by the computer. They trigger sequences of simple actions on the executing machine. Those actions produce effects according to the semantics of the instructions. Computer hardware includes the physical parts of a computer, including the central processing unit , memory , and input/output . Computational logic and computer architecture are key topics in
8580-628: The Daytime and Time protocols for recording the time of events, as well as the ICMP Timestamp messages and IP Timestamp option ( RFC 781 ). More complete synchronization systems, although lacking NTP's data analysis and clock disciplining algorithms, include the Unix daemon timed , which uses an election algorithm to appoint a server for all the clients; and the Digital Time Synchronization Service (DTSS), which uses
8710-744: The National Computer Conference in New York. The technology was later described in the 1981 Internet Engineering Note (IEN) 173 and a public protocol was developed from it that was documented in RFC 778 . The technology was first deployed in a local area network as part of the Hello routing protocol and implemented in the Fuzzball router , an experimental operating system used in network prototyping, where it ran for many years. Other related network tools were available both then and now. They include
8840-444: The function of the program it implements, either by directly providing instructions to the computer hardware or by serving as input to another piece of software. The term was coined to contrast with the old term hardware (meaning physical devices). In contrast to hardware, software is intangible. Software is also sometimes used in a more narrow sense, meaning application software only. System software, or systems software,
8970-474: The intersection algorithm , a modified version of Marzullo's algorithm , to select accurate time servers and is designed to mitigate the effects of variable network latency . NTP can usually maintain time to within tens of milliseconds over the public Internet , and can achieve better than one millisecond accuracy in local area networks under ideal conditions. Asymmetric routes and network congestion can cause errors of 100 ms or more. The protocol
9100-449: The 32-bit overflow (by 68 years). However, it would then be incapable of representing times prior to the epoch. The consensus is for time_t to be signed, and this is the usual practice. The software development platform for version 6 of the QNX operating system has an unsigned 32-bit time_t , though older releases used a signed type. The POSIX and Open Group Unix specifications include
9230-454: The C standard library specification. Unix time is used in the PE format for Windows executables. Unix time is typically available in major programming languages and is widely used in desktop, mobile, and web application programming. Java provides an Instant object which holds a Unix timestamp in both seconds and nanoseconds. Python provides a time library which uses Unix time. JavaScript provides
9360-454: The Earth's rotation) was used instead of an atomic timescale. The precise definition of Unix time as an encoding of UTC is only uncontroversial when applied to the present form of UTC. The Unix epoch predating the start of this form of UTC does not affect its use in this era: the number of days from 1 January 1970 (the Unix epoch) to 1 January 1972 (the start of UTC) is not in question, and
9490-523: The IANA side, a ntp (network time protocols ) work group is in charge of reviewing proposed drafts. The protocol has significantly progressed since NTPv4. As of 2022 , three RFC documents describing updates to the protocol have been published, not counting the numerous peripheral standards such as NTS ( RFC 8915 ). Mills had mentioned plans for a "NTPv5" on his page, but one was never published. An unrelated draft termed "NTPv5" by M. Lichvar of chrony
9620-501: The Linux Foundation's Core Infrastructure Initiative, suggested that both NTP and NTPsec were more problematic than Chrony from a security standpoint. NTP servers can be susceptible to man-in-the-middle attacks unless packets are cryptographically signed for authentication. The computational overhead involved can make this impractical on busy servers, particularly during denial of service attacks. NTP message spoofing from
9750-598: The NTP provider for W32Time became compatible with a significant subset of NTPv3. Microsoft states that W32Time cannot reliably maintain time synchronization with one second accuracy. If higher accuracy is desired, Microsoft recommends using a newer version of Windows or different NTP implementation. Beginning with Windows 10 version 1607 and Windows Server 2016 , W32Time can be configured to reach time accuracy of 1 s, 50 ms or 1 ms under certain specified operating conditions. In 2004, Henning Brauer of OpenBSD presented OpenNTPD , an NTPv3/SNTPv4 implementation with
9880-715: The UTC-based definition of Unix time. This has resulted in considerable complexity in Unix implementations, and in the Network Time Protocol , to execute steps in the Unix time number whenever leap seconds occur. Unix time is widely adopted in computing beyond its original application as the system time for Unix . Unix time is available in almost all system programming APIs , including those provided by both Unix-based and non-Unix operating systems . Almost all modern programming languages provide APIs for working with Unix time or converting them to another data structure. Unix time
10010-880: The above titles, and those who work in a web environment often prefix their titles with Web . The term programmer can be used to refer to a software developer , software engineer, computer scientist , or software analyst . However, members of these professions typically possess other software engineering skills, beyond programming. The computer industry is made up of businesses involved in developing computer software, designing computer hardware and computer networking infrastructures, manufacturing computer components, and providing information technology services, including system administration and maintenance. The software industry includes businesses engaged in development , maintenance , and publication of software. The industry also includes software services , such as training , documentation , and consulting. Computer engineering
10140-445: The ambiguity that strictly conforming POSIX systems or NTP-driven systems have. In these systems it is necessary to consult a table of leap seconds to correctly convert between UTC and the pseudo-Unix-time representation. This resembles the manner in which time zone tables must be consulted to convert to and from civil time ; the IANA time zone database includes leap second information, and
10270-457: The challenges in implementing computations. For example, programming language theory studies approaches to the description of computations, while the study of computer programming investigates the use of programming languages and complex systems . The field of human–computer interaction focuses on the challenges in making computers and computations useful, usable, and universally accessible to humans. The field of cybersecurity pertains to
10400-448: The clock, that can misbehave when synchronized to servers that use different algorithms. The software has been ported to almost every computing platform, including personal computers. It runs as a daemon called ntpd under Unix or as a service under Windows. Reference clocks are supported and their offsets are filtered and analysed in the same way as remote servers, although they are usually polled more frequently. This implementation
10530-560: The computer and its system software, or may be published separately. Some users are satisfied with the bundled apps and need never install additional applications. The system software manages the hardware and serves the application, which in turn serves the user. Application software applies the power of a particular computing platform or system software to a particular purpose. Some apps, such as Microsoft Office , are developed in multiple versions for several different platforms; others have narrower requirements and are generally referred to by
10660-450: The computing power to do the necessary calculations, such in molecular modeling . Large molecules and their reactions are far too complex for traditional computers to calculate, but the computational power of quantum computers could provide a tool to perform such calculations. Network Time Protocol NTP is intended to synchronize participating computers to within a few milliseconds of Coordinated Universal Time (UTC). It uses
10790-448: The design of individual microprocessors , personal computers, and supercomputers , to circuit design . This field of engineering includes not only the design of hardware within its own domain, but also the interactions between hardware and the context in which it operates. Software engineering is the application of a systematic, disciplined, and quantifiable approach to the design, development, operation, and maintenance of software, and
10920-414: The development of quantum algorithms . Potential infrastructure for future technologies includes DNA origami on photolithography and quantum antennae for transferring information between ion traps. By 2011, researchers had entangled 14 qubits . Fast digital circuits , including those based on Josephson junctions and rapid single flux quantum technology, are becoming more nearly realizable with
11050-462: The difference between the forward and backward travel times. A number of approaches have been proposed to measure asymmetry, but among practical implementations only chrony seems to have one included. The NTP reference implementation , along with the protocol, has been continuously developed for over 20 years. Backwards compatibility has been maintained as new features have been added. It contains several sensitive algorithms, especially to discipline
11180-437: The discovery of nanoscale superconductors . Fiber-optic and photonic (optical) devices, which already have been used to transport data over long distances, are starting to be used by data centers, along with CPU and semiconductor memory components. This allows the separation of RAM from CPU by optical interconnects. IBM has created an integrated circuit with both electronic and optical information processing in one chip. This
11310-406: The earth in relation to the sun. International Atomic Time (TAI), in which every day is precisely 86 400 seconds long, ignores solar time and gradually loses synchronization with the Earth's rotation at a rate of roughly one second per year. In Unix time, every day contains exactly 86 400 seconds. Each leap second uses the timestamp of a second that immediately precedes or follows it. On
11440-580: The elements of UTC time. This definition was so simple that it did not even encompass the entire leap year rule of the Gregorian calendar, and would make 2100 a leap year. The 2001 edition of POSIX.1 rectified the faulty leap year rule in the definition of Unix time, but retained the essential definition of Unix time as an encoding of UTC rather than a linear time scale. Since the mid-1990s, computer clocks have been routinely set with sufficient precision for this to matter, and they have most commonly been set using
11570-686: The emphasis between technical and organizational issues varies among programs. For example, programs differ substantially in the amount of programming required." The study of IS bridges business and computer science , using the theoretical foundations of information and computation to study various business models and related algorithmic processes within a computer science discipline. The field of Computer Information Systems (CIS) studies computers and algorithmic processes, including their principles, their software and hardware designs, their applications, and their impact on society while IS emphasizes functionality over design. Information technology (IT)
11700-644: The engineering paradigm. The generally accepted concepts of Software Engineering as an engineering discipline have been specified in the Guide to the Software Engineering Body of Knowledge (SWEBOK). The SWEBOK has become an internationally accepted standard in ISO/IEC TR 19759:2015. Computer science or computing science (abbreviated CS or Comp Sci) is the scientific and practical approach to computation and its applications. A computer scientist specializes in
11830-681: The epoch was 1970-01-01T00:00:00 TAI rather than 1970-01-01T00:00:10 TAI, was proposed for inclusion in ISO C's time.h , but only the UTC part was accepted in 2011. A tai_clock does, however, exist in C++20. A Unix time number can be represented in any form capable of representing numbers. In some applications the number is simply represented textually as a string of decimal digits, raising only trivial additional problems. However, certain binary representations of Unix times are particularly significant. The Unix time_t data type that represents
11960-418: The epoch, at the expense of complexity in conversions with civil time or a representation of civil time, at the expense of inconsistency around leap seconds. Computer clocks of the era were not sufficiently precisely set to form a precedent one way or the other. The POSIX committee was swayed by arguments against complexity in the library functions, and firmly defined the Unix time in a simple manner in terms of
12090-434: The field of computer hardware. Computer software, or just software , is a collection of computer programs and related data, which provides instructions to a computer. Software refers to one or more computer programs and data held in the storage of the computer. It is a set of programs, procedures, algorithms, as well as its documentation concerned with the operation of a data processing system. Program software performs
12220-492: The first being a time_t (the integral part of the Unix time), and the second being the fractional part of the time number in millionths (in struct timeval ) or billionths (in struct timespec ). These structures provide a decimal -based fixed-point data format, which is useful for some applications, and trivial to convert for others. The present form of UTC, with leap seconds, is defined only starting from 1 January 1972. Prior to that, since 1 January 1961 there
12350-454: The first rollover occurs on February 7, 2036. NTPv4 introduces a 128-bit date format: 64 bits for the second and 64 bits for the fractional-second. The most-significant 32 bits of this format is the Era Number which resolves rollover ambiguity in most cases. According to Mills, "The 64-bit value for the fraction is enough to resolve the amount of time it takes a photon to pass an electron at
12480-442: The first silicon dioxide field effect transistors at Bell Labs, the first transistors in which drain and source were adjacent at the surface. Subsequently, a team demonstrated a working MOSFET at Bell Labs 1960. The MOSFET made it possible to build high-density integrated circuits , leading to what is known as the computer revolution or microcomputer revolution . A computer is a machine that manipulates data according to
12610-511: The first working transistor , the point-contact transistor , in 1947. In 1953, the University of Manchester built the first transistorized computer , the Manchester Baby . However, early junction transistors were relatively bulky devices that were difficult to mass-produce, which limited them to a number of specialised applications. In 1957, Frosch and Derick were able to manufacture
12740-434: The leap second (2016-12-31 23:59:60) or the end of it, one second later (2017-01-01 00:00:00). In the theoretical case when a negative leap second occurs, no ambiguity is caused, but instead there is a range of Unix time numbers that do not refer to any point in UTC time at all. A Unix clock is often implemented with a different type of positive leap second handling associated with the Network Time Protocol (NTP). This yields
12870-412: The next day during the leap second and then at the end of the leap second jumps back by 1 (returning to the start of the next day). For example, this is what happened on strictly conforming POSIX.1 systems at the end of 1998: Unix time numbers are repeated in the second immediately following a positive leap second. The Unix time number 1 483 228 800 is thus ambiguous: it can refer either to start of
13000-399: The number of days is all that is significant to Unix time. The meaning of Unix time values below +63 072 000 (i.e., prior to 1 January 1972) is not precisely defined. The basis of such Unix times is best understood to be an unspecified approximation of UTC. Computers of that era rarely had clocks set sufficiently accurately to provide meaningful sub-second timestamps in any case. Unix time
13130-477: The original codebase, making the remainder easier to audit . A 2017 audit of the code showed eight security issues, including two that were not present in the original reference implementation, but NTPsec did not suffer from eight other issues that remained in the reference implementation. chrony is an independent NTP implementation mainly sponsored by Red Hat , who uses it as the default time program in their distributions. Being written from scratch, chrony has
13260-460: The owner of these resources and the end user. It is typically offered as a service, making it an example of Software as a Service , Platforms as a Service , and Infrastructure as a Service , depending on the functionality offered. Key characteristics include on-demand access, broad network access, and the capability of rapid scaling. It allows individual users or small business to benefit from economies of scale . One area of interest in this field
13390-505: The packet to indicate error, such as XFAC to indicate a network disconnection. The IANA maintains a registry for refid source names and KoD codes. Informal assignments can still appear. The 64-bit binary fixed-point timestamps used by NTP consist of a 32-bit part for seconds and a 32-bit part for fractional second, giving a time scale that rolls over every 2 seconds (136 years) and a theoretical resolution of 2 seconds (233 picoseconds). NTP uses an epoch of January 1, 1900. Therefore,
13520-480: The platform they run on. For example, a geography application for Windows or an Android application for education or Linux gaming . Applications that run only on one platform and increase the desirability of that platform due to the popularity of the application, known as killer applications . A computer network, often simply referred to as a network, is a collection of hardware components and computers interconnected by communication channels that allow
13650-476: The practice of celebrating its milestones. Usually it is time values that are round numbers in decimal that are celebrated, following the Unix convention of viewing time_t values in decimal. Among some groups round binary numbers are also celebrated, such as +2 which occurred at 13:37:04 UTC on Saturday, 10 January 2004. Computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery . It includes
13780-522: The protection of computer systems and networks. This includes information and data privacy , preventing disruption of IT services and prevention of theft of and damage to hardware, software, and data. Data science is a field that uses scientific and computing tools to extract information and insights from data, driven by the increasing volume and availability of data. Data mining , big data , statistics, machine learning and deep learning are all interwoven with data science. Information systems (IS)
13910-474: The publication of an article by David L. Mills in the IEEE Transactions on Communications . In 1989, RFC 1119 was published defining NTPv2 by means of a state machine , with pseudocode to describe its operation. It introduced a management protocol and cryptographic authentication scheme which have both survived into NTPv4, along with the bulk of the algorithm. However the design of NTPv2
14040-659: The reference implementation has undergone security audits from several sources for several years. A stack buffer overflow exploit was discovered and patched in 2014. Apple was concerned enough about this vulnerability that it used its auto-update capability for the first time. On systems using the reference implementation, which is running with root user's credential, this could allow unlimited access. Some other implementations, such as OpenNTPD , have smaller code base and adopted other mitigation measures like privilege separation, are not subject to this flaw. A 2017 security audit of three NTP implementations, conducted on behalf of
14170-411: The response packet, t 3 + θ − δ / 2 = t 2 {\displaystyle t_{3}+\theta -\delta /2=t_{2}} Solving for θ yields the definition of the time offset. The values for θ and δ are passed through filters and subjected to statistical analysis ("mitigation"). Outliers are discarded and an estimate of time offset
14300-512: The round-trip delay δ by δ = ( t 3 − t 0 ) − ( t 2 − t 1 ) , {\displaystyle \delta ={(t_{3}-t_{0})-(t_{2}-t_{1})},} where To derive the expression for the offset, note that for the request packet, t 0 + θ + δ / 2 = t 1 {\displaystyle t_{0}+\theta +\delta /2=t_{1}} and for
14430-596: The rules and data formats for exchanging information in a computer network, and provide the basis for network programming . One well-known communications protocol is Ethernet , a hardware and link layer standard that is ubiquitous in local area networks . Another common protocol is the Internet Protocol Suite , which defines a set of protocols for internetworking, i.e. for data communication between multiple networks, host-to-host data transfer, and application-specific data transmission formats. Computer networking
14560-508: The same as with the Time Protocol, as only one server is used. In 1996, SNTP was updated to SNTPv4 with some features of the then-in-development NTPv4. The current version of SNTPv4 was merged into the main NTPv4 standard in 2010. SNTP is fully interoperable with NTP since it does not define a new protocol. However, the simple algorithms provide times of reduced accuracy and thus it is inadvisable to sync time from an SNTP source. NTP uses
14690-456: The sample code available from the same source uses that information to convert between TAI-based timestamps and local time. Conversion also runs into definitional problems prior to the 1972 commencement of the current form of UTC (see section UTC basis below). This system, despite its superficial resemblance, is not Unix time. It encodes times with values that differ by several seconds from the POSIX time values. A version of this system, in which
14820-431: The sequence 23:59:58, 00:00:00, skipping 23:59:59. An alternative implementation, called leap smearing, consists in introducing the leap second incrementally during a period of 24 hours, from noon to noon in UTC time. This implementation is used by Google (both internally and on their public NTP servers), Amazon AWS, and Facebook. Chrony supports leap smear in smoothtime and leapsecmode configurations, but such use
14950-454: The sharing of resources and information. When at least one process in one device is able to send or receive data to or from at least one process residing in a remote device, the two devices are said to be in a network. Networks may be classified according to a wide variety of characteristics such as the medium used to transport the data, communications protocol used, scale, topology , and organizational scope. Communications protocols define
15080-427: The source address. Refids serve to detect and prevent timing loops to the first degree. The refid field is filled with status words in the case of kiss-o'-death (KoD) packets, which tell the client to stop sending requests so that the server can rest. Some examples are INIT (initialization), STEP (step time change), and RATE (client requesting too fast). The program output may additionally use codes not transmitted in
15210-656: The speed of light. The 64-bit second value is enough to provide unambiguous time representation until the universe goes dim." A typical NTP client regularly polls one or more NTP servers. The client must compute its time offset and round-trip delay . Time offset θ is positive or negative (client time > server time) difference in absolute time between the two clocks. It is defined by θ = ( t 1 − t 0 ) + ( t 2 − t 3 ) 2 , {\displaystyle \theta ={\frac {(t_{1}-t_{0})+(t_{2}-t_{3})}{2}},} and
15340-449: The stratum 1 servers for all the clients. In addition to stratum, the protocol is able to identify the synchronization source for each server in terms of a reference identifier (refid). For servers on stratum 2 and below, the refid is an encoded form of the upstream time server's IP address. For IPv4, this is simply the 32-bit address; for IPv6, it would be the first 32 bits of the MD5 hash of
15470-411: The study and experimentation of algorithmic processes, and the development of both hardware and software. Computing has scientific, engineering, mathematical, technological, and social aspects. Major computing disciplines include computer engineering , computer science , cybersecurity , data science , information systems , information technology , and software engineering . The term computing
15600-442: The study of these approaches. That is, the application of engineering to software. It is the act of using insights to conceive, model and scale a solution to a problem. The first reference to the term is the 1968 NATO Software Engineering Conference , and was intended to provoke thought regarding the perceived software crisis at the time. Software development , a widely used and more generic term, does not necessarily subsume
15730-446: The theory of computation and the design of computational systems. Its subfields can be divided into practical techniques for its implementation and application in computer systems , and purely theoretical areas. Some, such as computational complexity theory , which studies fundamental properties of computational problems , are highly abstract, while others, such as computer graphics , emphasize real-world applications. Others focus on
15860-429: The underlying clock is fundamentally untroubled by leap seconds. Another, much rarer, non-conforming variant of Unix time keeping involves incrementing the value for all seconds, including leap seconds; some Linux systems are configured this way. Time kept in this fashion is sometimes referred to as "TAI" (although timestamps can be converted to UTC if the value corresponds to a time when the difference between TAI and UTC
15990-409: The wrong answer. In applications where this level of accuracy is required, it is necessary to consult a table of leap seconds when dealing with Unix times, and it is often preferable to use a different time encoding that does not suffer from this problem. A Unix time number is easily converted back into a UTC time by taking the quotient and modulus of the Unix time number, modulo 86 400 . The quotient
16120-464: Was an older form of UTC in which not only were there occasional time steps, which were by non-integer numbers of seconds, but also the UTC second was slightly longer than the SI second, and periodically changed to continuously approximate the Earth's rotation. Prior to 1961 there was no UTC, and prior to 1958 there was no widespread atomic timekeeping ; in these eras, some approximation of GMT (based directly on
16250-832: Was audited in 2017, finding 14 potential security issues. All Microsoft Windows versions since Windows 2000 include the Windows Time service (W32Time), which has the ability to synchronize the computer clock to an NTP server. W32Time was originally implemented for the purpose of the Kerberos version 5 authentication protocol, which required time to be within 5 minutes of the correct value to prevent replay attacks . The network time server in Windows 2000 Server (and Windows XP) does not implement NTP disciplined synchronization, only locally disciplined synchronization with NTP/SNTP correction. Beginning with Windows Server 2003 and Windows Vista ,
16380-514: Was criticized for lacking formal correctness by the DTSS community, and the clock selection procedure was modified to incorporate Marzullo's algorithm for NTPv3 onwards. In 1992, RFC 1305 defined NTPv3. The RFC included an analysis of all sources of error, from the reference clock down to the final client, which enabled the calculation of a metric that helps choose the best server where several candidates appear to disagree. Broadcast mode
16510-430: Was initiated in 2020 and includes security, accuracy, and scaling changes. As NTP replaced the use of the old Time Protocol , some use cases nevertheless found the full protocol too complicated. In 1992, Simple Network Time Protocol ( SNTP ) was defined to fill this niche. The SNTPv3 standard describes a way to use NTPv3, such that no storage of state over an extended period is needed. The topology becomes essentially
16640-433: Was introduced. In subsequent years, as new features were added and algorithm improvements were made, it became apparent that a new protocol version was required. In 2010, RFC 5905 was published containing a proposed specification for NTPv4. Following the retirement of Mills from the University of Delaware , the reference implementation is currently maintained as an open source project led by Harlan Stenn. On
16770-410: Was selected arbitrarily by Unix engineers because it was considered a convenient date to work with. The precision was changed to count in seconds in order to avoid short-term overflow. When POSIX.1 was written, the question arose of how to precisely define time_t in the face of leap seconds. The POSIX committee considered whether Unix time should remain, as intended, a linear count of seconds since
16900-488: Was the 1931 paper "The Use of Thyratrons for High Speed Automatic Counting of Physical Phenomena" by C. E. Wynn-Williams . Claude Shannon 's 1938 paper " A Symbolic Analysis of Relay and Switching Circuits " then introduced the idea of using electronics for Boolean algebraic operations. The concept of a field-effect transistor was proposed by Julius Edgar Lilienfeld in 1925. John Bardeen and Walter Brattain , while working under William Shockley at Bell Labs , built
#568431