2022-09-04 13:42:20 +12:00
|
|
|
## How an application programmer sees IPv6
|
2022-09-03 14:56:29 +12:00
|
|
|
|
|
|
|
In a very theoretical world, an application programmer could rely on
|
|
|
|
a DNS lookup to return the best (and only) address of a remote host,
|
|
|
|
and could then pass that address directly to the network socket
|
|
|
|
interface without further ado. Unfortunately the real world is not
|
|
|
|
that simple. Even without considering the version number, there are
|
|
|
|
several types of IP address, and a DNS lookup may return a variety
|
|
|
|
of addresses. In most cases, applications will use the function
|
2022-10-08 15:24:18 +13:00
|
|
|
```getaddrinfo()``` ("get address information") to obtain
|
|
|
|
a list of valid addresses. Which is
|
2022-09-03 14:56:29 +12:00
|
|
|
the best one to use, and should the program try more than one?
|
|
|
|
|
|
|
|
We do not go into this subject in detail, because this book is
|
|
|
|
not aimed primarily at application programmers. However, operators
|
|
|
|
need to be aware that the default behavior of most applications
|
2022-10-08 15:24:18 +13:00
|
|
|
is simply to use the *first* address returned by ```getaddrinfo()```.
|
2022-09-03 14:56:29 +12:00
|
|
|
Some applications (such as web browsers) may use a smarter approach
|
2022-10-08 15:25:37 +13:00
|
|
|
known as "happy eyeballs" ([RFC8305](https://www.rfc-editor.org/info/rfc8305)) by means of a heuristic to detect which
|
2022-09-03 14:56:29 +12:00
|
|
|
address gives the fastest response. However, operators need to
|
|
|
|
understand the various address types in order to configure
|
2022-10-08 15:24:18 +13:00
|
|
|
systems optimally, including the ```getaddrinfo()``` precedence
|
2022-10-08 15:25:37 +13:00
|
|
|
table ([RFC6724](https://www.rfc-editor.org/info/rfc6724)) in every host.
|
2022-09-03 14:56:29 +12:00
|
|
|
|
2022-10-06 09:09:55 +13:00
|
|
|
Address types are discussed further in [2. Addresses](../2.%20IPv6%20Basic%20Technology/Addresses.md).
|
2022-09-16 15:56:55 +12:00
|
|
|
|
|
|
|
<!-- Link lines generated automatically; do not delete -->
|
2022-10-06 09:09:55 +13:00
|
|
|
### [<ins>Previous</ins>](How%20a%20user%20sees%20IPv6.md) [<ins>Next</ins>](How%20a%20network%20operations%20center%20sees%20IPv6.md) [<ins>Chapter Contents</ins>](1.%20Introduction%20and%20Foreword.md)
|