Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
저번 게시글에서는 AWS IPv6 전용의 Egress only IGW를 다뤄보았다.
EC2에서는 IPv4와 IPv6가 모두 사용가능한데, 실제 통신에 사용되는 것은 어떤 것일까?
일단 변하지 않는 원리는 하나다.
IPv4 주소는 IPv4로, IPv6 주소는 IPv6로 통신한다.
IPv4와 IPv6는 엄연히 구조가 다른 주소 체계이므로 하나를 안다고 다른 하나를 유추할 수는 없다.
두 가지 주소를 모두 지원한다면 어떤 주소 방식으로 통신할지는 아래의 과정을 따른다.
1. DNS 조회
서버의 IP를 DNS 서버로부터 쿼리한다.
이때 해당 서버가 IPv4 주소만 가진다면 IPv4로, IPv6 주소만 가진다면 IPv6로 통신하게 된다.
(다른 IP 주소를 유추할 수 없으므로 방법이 없다. )
하지만 서버가 IPv4와 IPv6를 모두 지원하는 경우 두 가지 주소를 받아오게 된다.
2. Happy Eyeballs(Fast Fallback) 알고리즘 활용
IPv6가 더 효율적이기 때문에 일반적으로 더 빠른 통신속도를 제공할 수 있다.
하지만 문제는 모든 네트워크 인프라가 아직 IPv6를 제공하지 못한다는 것이다.
만약 경로의 유일한 라우터들이 IPv4만을 제공한다면, IPv6로는 서버에 도달할 수 없다.
따라서 IPv4를 사용해야 하는데, 이때 활용할 수 있는 것이 IETF의 Happy Eyeballs 알고리즘이다.
Happy Eyeballs는 IPv4와 IPv6 연결을 병렬적으로 시도하여, IPv6 연결이 가능하다면 IPv6를 사용한다.
반대로 IPv6 연결이 지연된다면, IPv4 연결로 전환할 수 있다.
물론 Happy Eyeballs가 표준은 아니기 때문에 해당 알고리즘이 구현된 경우에만 사용할 수 있다.
구글 크롬이나 파이어 폭스와 같은 브라우저는 해당 알고리즘을 지원하고 있다.
+ OS의 네트워크 세팅
OS 자체에서도 우선순위를 정할 수 있다.
RedHat 계열에서는 /etc/NetworkManager/NetworkManager.conf 파일에서 아래와 같이 어떤 주소에 우선순위를 높일지 정할 수 있다.
ipv4.dns-priority=200
ipv6.dns-priority=100
반대로 네트워크에 IPv4만을 사용하도록 제한할 수도 있다.
참조
정보를 찾기 어려워서 GPT 검색 결과를 활용함.
https://en.wikipedia.org/wiki/Happy_Eyeballs
'개발 > 네트워크 & Ubuntu' 카테고리의 다른 글
HTTP와 Socket의 차이점 (실시간 채팅 서비스로 알아보는) (0) | 2024.09.19 |
---|---|
스트리밍 서비스는 어떻게 이루어질까? (RTMP, HLS) (0) | 2024.08.21 |
OpenSSL을 활용한 인증서 구현하기(CA, HTTPS) (0) | 2024.02.27 |
[Virtual Box] Ubuntu VM 디스크 용량 늘리기 (0) | 2024.02.23 |
[GNS3] HSRP로 라우터(GateWay) 이중화 (track, Priority) (0) | 2024.02.19 |