브라우저가 여러 IP를 처리하는 방법 [닫기]


11

브라우저가 주어진 호스트 이름 (예 : ip1 및 ip2)에 대해 여러 개의 A 레코드를 가져오고 그 중 하나에 액세스 할 수없는 경우 정확한 브라우저 동작 에 대한 정보를 누군가에게 알려 줄 수 있습니까 ?

다음과 같은 정확한 세부 정보에 관심이 있습니다.

  1. 브라우저는 OS에서 2 개의 IP를 얻거나 하나만 얻습니까?
  2. 브라우저는 어떤 IP를 먼저 시도합니까 (무작위 또는 항상 첫 번째)? 이제 브라우저가 실패한 ip1로 시작했다고 가정 해 봅시다.
  3. 브라우저는 얼마나 오랫동안 ip1을 시도합니까?
  4. ip1을 기다리는 동안 "중지"를 누른 다음 새로 고침을 클릭하면
    • 브라우저는 어떤 IP를 시도합니까?
  5. 시간이 초과되면 어떻게됩니까? ip2를 시작하거나 오류가 발생합니까? (그리고 오류가 발생하면 사용자가 새로 고침을 클릭 할 때 브라우저가 시도하는 IP).
  6. 사용자가 새로 고침을 클릭하면 브라우저가 새로운 DNS 조회를 시도합니까?

이제 브라우저가 ip2를 먼저 시도했다고 가정 해 봅시다.

  1. 다음 페이지 요청의 경우 브라우저가 여전히 ip2를 사용합니까, 아니면 임의로 ips를 전환 할 수 있습니까?
  2. 브라우저가 IP를 캐시에 보관하는 기간은 얼마나됩니까?
  3. 브라우저가 새로운 DNS 요청을 보내고 동일한 IPE를 받으면 작동하는 동일한 IP를 계속 사용합니까? 그렇지 않으면 프로세스가 처음부터 시작되어 두 가지 중 하나를 시도 할 수 있습니까?

물론 브라우저에 따라 다를 수 있으며 버전과 플랫폼에 따라 다를 수 있습니다. 자세한 내용을 알려 드리겠습니다.

이것의 목적-라운드 로빈 DNS 기반을 사용하고 호스트 중 하나가 실패 할 때 사용자가 정확히 어떤 경험을하는지 이해하려고합니다.

DNS로드 밸런싱이 얼마나 나쁜지 묻지 말고 "하지 마십시오", "나쁜 생각입니다", "하트 비트 / 프록시 / BGP / 무엇이 필요한지"등의 대답을 삼가십시오.


1
Firefox 용 브라우저 확장 프로그램에는 IP 주소와 현재 사용중인 IP 주소 ( addons.mozilla.org/en-US/firefox/addon/showip/?src=search )가 표시됩니다. Firebug의 'Net'탭을 사용하여 제공된 IP 요청을 표시 할 수도 있습니다. 분명히 이것은 Firefox에만 관련이 있지만 Chrome 개발자 콘솔에 IP 요청이 제공되었음을 보여줍니다.
— Smudge

또한 일부 ISP의 DNS 서버는 하나의 IP 주소 만 반환한다는 점에 유의하십시오. 왜 그런지 잘 모르겠습니다
— Smudge

고마워 샘 그렇습니다. 크롬 콘솔은 DNS 조회, 캐시 및 요청 된 IP를 보여줍니다.
— Sandman4

정확한 동작 에 대해 이야기 하려면 웹 브라우저가 레코드를 처리하는 방법에 대해 가장 먼저 알아야 할 것은 그렇지 않은 것 입니다. 이름 확인은 네트워킹 스택에서 처리합니다. 그래서 당신은 당신이 알아 차렸거나 이름 확인에 대해 묻는 특정 브라우저 이상한 점에 대해 묻고 있습니까?
— Rob Moir

브라우저는 호스트 이름에 대한 A 레코드에 나열된 여러 IP를 (네트워킹 스택으로부터)받습니다. Chrome에서 chrome : // net-internals / # dns를 시도하고 자신을보십시오.
— Sandman4

답변:


5

결국, 나는 "연구"를 스스로해야했다. 다음은 Chromium (버전 12.0.742.112) 동작 (우분투 11.04에서 실행)입니다.

일반적으로 다음과 같이 작동합니다. 1st ip를 시도하고 시간이 초과되면 (189 초 후) 2-nd ip를 시도하십시오. 모든 IP가 시도 될 때까지 오류 메시지가 표시되지 않습니다. 다음 연결은 첫 번째 IP에서 다시 시작됩니다 (두 번째 전에 실패하고 두 번째 IP가 작동하더라도 브라우저는 신경 쓰지 않습니다)

한 가지 흥미로운 점-사용자가 취소를 누르면 TCP 연결 시도가 끊어지지 않습니다. 즉 취소를 누르고 60 초 후에 다시 시도하면 130 초 (첫 번째 시도에서 189 번)에 페이지가 표시됩니다. 그러나 취소를 클릭하면 190 초 후에 새로 고침 하면 프로세스가 처음부터 시작됩니다.

원래 질문의 항목과 관련하여 :

  1. 브라우저는 OS에서 두 IP를 모두 가져오고 OS는 IP 순서를 변경하지 않습니다.
  2. 브라우저는 항상 처음 나타나는 IP에 연결을 시도합니다
  3. 189 초 동안 시도합니다
  4. 두 번째 시도에서는 첫 번째 IP를 다시 시도합니다.
  5. 첫 번째 IP 시간이 초과되면 브라우저는 자동으로 두 번째 IP로 계속합니다. 작동하면-페이지가 표시되고 그렇지 않으면 대기가 계속됩니다.
  6. 검증되지 않은. 이 블로그 는 chrome : // net-internals / # dns를 보면 Chrome 이 최대 1 분 동안 DNS를 캐시한다고 말합니다.

    용량 : 100 성공 항목의 수명 (ms) : 60000 실패 항목의 수명 (ms) : 0

첫 번째 IP가 작동하면 프로세스는 동일하며 첫 번째 시도에서 항상 성공합니다.


4

사람들에게 당신이 원하지 않는 것을 말하는 대신에, 당신이 이루고자하는 것이 무엇인지 설명하지 않겠습니까?

당신이 쫓아 온 것이 알려진 데이터라면, 가서 스스로 조사하거나, 말하고있는 브라우저 (수백 개)에 대한 문서를 읽으십시오.

그러나 이것이 DNS와 관련이 없음을 아는 데 도움이 될 수 있습니다.

브라우저가 요청을 받으면 먼저 다양한 캐시에서 URL (또는 URL이 아닌 경우 호스트 이름)이 있는지 확인합니다.
그렇지 않은 경우 시스템 확인 프로그램을 실행하여 호스트 이름을 확인합니다.

그것이 반환 된 IP가 응답하지 않으면, 그것은 분명히 내부적으로 부정적인 조회 결과 로 이것을 캐시 할 것이므로 다른 A 레코드를 타격하기를 희망하여 동일한 URL을 다시 직접 요청하면 목적이 없을 것입니다. 부정적인 IP 결과와 함께 호스트 이름 결과를 저장했습니다.

또는 더 많은 정보를 제공 할 수 있습니다.

편집 : 나는 당신이 모든 까다로운 것과 똑똑한 어셈블리 사이에 약간의 정보를 제공 한 것을 봅니다.

아주 잘:

  1. 브라우저가 시스템 리졸버에게 호스트 이름을 요청하면 해당 호스트 이름에 대한 모든 정보를 다시 얻습니다. 2 개의 IP를 의미하는 경우 2 개의 IP를 반환합니다.
  2. 브라우저에 따라 다릅니다.
  3. 브라우저에 따라 다르지만 내가 사용한 모든 브라우저는 단일 요청을 수행하며 표준 TCP CONNECT () 시간 초과 후 시간 초과됩니다. 어딘가에 RFC가 있다고 확신합니다 ...
  4. 브라우저에 따라 다릅니다. DNS 또는 네트워킹과는 아무런 관련이 없습니다.
  5. 아니.
  6. 아니.

또한 DNS 레코드가 모든 곳, 특히 클라이언트에서 캐시된다는 것을 알지 못하는 것 같습니다. 이러한 레코드는 도메인 소유자가 의도 한 내용 또는 사용자와 캐시간에 구성된 캐시에 따라 만료됩니다. 한 시간에서 하루가 일반적이므로, 미친 사람처럼 새로 고침을 수행하면 리졸버가 다른 DNS 쿼리를 수행 할 것으로 기대하지 마십시오.


2
내가 달성하려는 것에 대한 설명을 추가했습니다. 나는 알려진 데이터를 알고 있는데 관련 정보를 찾는 데 며칠이 걸릴 수 있기 때문에 누군가가 알고 있기를 바랍니다. 까다로운? 필요한 정보를 요구하고 있습니다. 요구할 수 없습니다. 모두가 자유롭게 대답 할 수 있습니다. Smartassery? 나는 당신의 게시물에 상처를 받았으며 나는 그것을받을 가치가 있다고 생각하지 않습니다.
— Sandman4

1
나는 단지 토론이 DNS로드 밸런싱에 대한 화염으로 바뀌기를 원하지 않았습니다. 어쨌든, TCP CONNECT ()를 가리켜 주셔서 감사합니다.
— Sandman4
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.