답변:
클라이언트가 가장 먼저 결정하는 것은 사용 가능한 프로토콜입니다. IPv4와 IPv6을 모두 사용할 수 있다고 가정합니다 (그렇지 않으면 선택할 프로토콜에 대한 대답은 간단합니다). 그러면 A (IPv4 주소) 및 AAAA (IPv6 주소) 레코드 모두에 대한 DNS 조회를 수행합니다. 하나의 유형 만 리턴되면이를 사용합니다. IPv4 및 IPv6 주소가 모두 반환되면 기본 동작은 클라이언트 소프트웨어에 따라 다릅니다. 일반적으로 RFC 3484 가 사용됩니다.
공식 표준에 따르면 IPv6을 선호해야하지만 IPv6을 잘못 구성한 일부 (0.01 % 이하) 시스템이 있기 때문에 클라이언트가 더 똑똑해졌습니다. 요즘 대부분의 브라우저는 IPv6을 통해 연결을 시도하지만 300 밀리 초 이내에 작동하는 연결이 없으면 IPv4를 통해 병렬로 연결을 시도합니다. 그런 다음 첫 번째 연결이 사용됩니다. 이에 대해서는 Happy Eyeballs RFC 에서 다룹니다 .
애플은 이것을 라이온으로 바꾸었다. 운영 체제는 실제로 모든 연결의 성능을 추적하며 IPv4 연결이 IPv6 연결보다 대기 시간이 낮다고 판단되면 IPv4를 선호하기 시작합니다. 그러나 IPv4 연결이 느려지면 IPv6으로 다시 전환 될 수 있습니다. 한 번 봐 가지고 이 메일 링리스트 스레드 이 기능에 대한 논의를.
사용자에게는 IPv4 또는 IPv6이 사용되는 한 중요하지 않습니다. IPv4와 IPv6은 동일하게 제공되어야합니다. 웹 사이트는 IPv6 등이 아닌 IPv4에서도 동일하게 작동해야합니다.
IPv4는 앞으로 몇 년 동안 사용됩니다. 사용할 새로운 IPv4 주소가 더 이상 없기 때문에 새로운 서비스 (웹 사이트, 게임 등)가 IPv6을 통해서만 배포되면 사용할 수 없게됩니다. 그리고 어느 시점에서 IPv4를 통해 작동하는 모든 것은 IPv6을 통해 작동합니다. 이 시점에서 IPv4를 비활성화하면 시간과 비용이 절약됩니다 (하나만으로도 두 개의 프로토콜을 유지하는 이유는 무엇입니까?).
apt-get update
예를 들어 ipv6 호스트에 연결하려고 시도하는 임의의 동작을 보았지만 호스트 자체에는 로컬 링크 주소를 제외하고 IPv6 주소가 없습니다.
현재 사용중인 중간 단계를 터널링이라고합니다. 기본적으로 IPv6 패킷은 IPv4 캡슐화에서 제거되어 전체 IPv6 네트워크에서 다른 쪽을 보낼 수있을 때까지 IPv4 패킷 내부로 이동합니다. 물론 그보다 훨씬 더 복잡하지만 기본 개념은 전반적으로 동일합니다.
점점 더 많은 장치가 IPv6를 사용할 수있게되고 사람들이 주소 사용에 익숙해 짐에 따라 IPv6의 사용량이 늘어날 것입니다. IPv6 공간이 고가의 상품이 될 때까지 IPv6가 진정 수용되고 SMB 및 개인 시장에서 대규모로 출시 될 것이라고 믿지 않습니다 (개인 의견).
IPv6가 압도적 인 대다수의 트래픽에 전력을 공급하는 상당히 먼 미래의 어느 시점에서, 나는 IPv4 트래픽이 일반 IPv6 패킷 내에 캡슐화되어야하고 터널 브로커가 광범위한 IPv4 라우팅 / IP 할당 부족.
앱이 선택 방법을 결정하는 방법을 묻고 있다고 생각합니다. 프로그램 측면에서 응용 프로그램 구현에 따라 다릅니다. 예를 들어 코더가 IPv6을 IPv4보다 우선 순위가 높은 경우 먼저 getipv6addr ()을 사용합니다. 그것이 구성되지 않거나 실패하면 getaddr () 등을 사용하려고 시도합니다.이를 기반으로 앱은 먼저 IPv6을 통해 요청을 보내거나 그 반대의 경우도 마찬가지입니다.