브라우저가 여러 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.