>  기사  >  브라우저가 주소를 입력하면 어떻게 되나요?

브라우저가 주소를 입력하면 어떻게 되나요?

angryTom
angryTom원래의
2019-10-24 17:24:4412495검색

브라우저가 주소를 입력하면 어떻게 되나요?

브라우저에 주소를 입력하면 어떻게 되나요?

브라우저는 우리가 보통 브라우저 없이도 동영상을 보고, 정보를 확인하고, 인터넷 서핑을 하기 위한 도구이기 때문에 언제 접속했는지 알 수 있습니다. 브라우저에 있습니다. 주소 표시줄에서 Enter 키를 누른 후 브라우저는 무엇을 했나요? 오늘은 브라우저 뒤에 있는 작업을 공유하겠습니다.

1단계: 브라우저에 도메인 이름을 입력하세요

예: www.php.cn

브라우저가 주소를 입력하면 어떻게 되나요?

2단계: 브라우저가 도메인 이름의 IP 주소를 조회합니다.

브라우저는 입력된 도메인 이름을 해당 IP로 구문 분석합니다. 프로세스는 다음과 같습니다.

1. 브라우저 캐시 찾기: 브라우저는 일반적으로 일정 기간 동안 DNS 레코드를 캐시하므로 브라우저마다 시간이 다를 수 있습니다. 일반적으로 2~30분 정도 걸립니다. 브라우저는 캐시가 있으면 IP를 직접 반환하고 그렇지 않으면 다음 단계로 진행합니다.

2. 시스템 캐시 검색: 브라우저 캐시에서 IP를 찾을 수 없으면 브라우저는 로컬 호스트 파일을 검색하기 위해 시스템 호출(Windows의 경우 gethostbyname)을 수행하고, 그렇지 않으면 IP를 직접 반환합니다. 다음 단계.

3. 라우터 캐시 찾기: 1단계와 2단계의 쿼리가 실패하면 라우터에는 일반적으로 자체 DNS 캐시가 있습니다. 이전 요청을 라우터에 보내고 ISP 서비스가 있는 서버를 찾습니다. 공급자는 DNS를 캐시합니다. IP가 발견되면 직접 반환됩니다. 그렇지 않으면 검색이 계속됩니다.

4. 재귀 쿼리: 위 단계를 찾을 수 없는 경우 ISP의 DNS 서버는 재귀 쿼리를 수행합니다. 소위 재귀 쿼리는 호스트가 쿼리한 로컬 도메인 이름 서버가 IP 주소를 알 수 없음을 의미합니다. 쿼리된 도메인 이름, 로컬 도메인 이름 DNS 클라이언트로서 서버는 호스트가 자체적으로 다음 쿼리를 수행하도록 하는 대신 쿼리 요청 메시지를 다른 루트 도메인 이름 서버로 계속 보냅니다. (로컬 도메인 네임 서버 주소는 DHPC 프로토콜을 통해 얻어지며, DHPC는 IP 주소 할당을 담당합니다.)

5. 반복 쿼리: 로컬 도메인 네임 서버는 반복 쿼리를 사용하며, 먼저 루트 도메인 네임 서버에 쿼리합니다. 루트 도메인 이름 서버에 대한 로컬 도메인 이름 서버의 쿼리는 일반적으로 반복 쿼리를 사용합니다. 소위 반복 쿼리는 루트 도메인 이름 서버가 로컬 도메인 이름 서버가 보낸 쿼리 요청 메시지를 수신할 때 다음에 쿼리해야 할 도메인 이름 서버를 로컬 도메인 이름 서버에 알리고 로컬 도메인 이름을 지정하는 것을 의미합니다. 서버는 자체적으로 후속 쿼리를 수행합니다. (후속 쿼리를 위해 로컬 이름 서버를 교체하는 대신)

3단계: 브라우저는 대상 서버와 TCP 연결을 설정합니다

1. 호스트 브라우저는 DNS 확인을 통해 대상 서버의 IP 주소를 얻은 후 서버와 TCP 연결을 설정합니다.

2.TCP 3-way handshake 연결: 브라우저가 위치한 클라이언트가 서버에 연결 요청 메시지를 보냅니다(SYN 플래그는 1). 메시지를 받은 후 서버는 연결 설정에 동의하고 확인 메시지를 보냅니다. (SYN, ACK) 클라이언트에 대한 플래그 비트는 모두 1) 클라이언트가 확인 메시지를 받은 후 클라이언트와 클라이언트 간의 TCP 연결이 수신되었는지 확인하기 위해 다시 서버에 메시지를 보냅니다. 서버가 구축되고 통신이 시작됩니다.

4단계: 브라우저는 http 프로토콜을 통해 요청을 보냅니다

브라우저는 호스트에 HTTP-GET 메서드 메시지 요청을 시작합니다. 요청에는 액세스된 URL, 즉 http://www.php.cn/, KeepAlive, 긴 연결뿐만 아니라 User-Agent 사용자 브라우저 운영 체제 정보, 인코딩 등이 포함됩니다. Accept-Encoding 및 Cookies 항목을 언급할 가치가 있습니다. Accept-Encoding은 일반적으로 gzip을 사용하여 압축 후 html 파일을 전송합니다. 쿠키에 처음 액세스하면 서버에 사용자 캐시 정보를 설정하라는 메시지가 표시됩니다. 그렇지 않은 경우 쿠키의 해당 키 값을 사용하여 해당 캐시를 찾을 수 있습니다. 캐시는 사용자 이름, 비밀번호 및 일부 사용자 설정을 저장합니다. .

5단계: 일부 서비스는 영구 리디렉션 응답을 수행합니다.

여러 호스트 사이트가 있는 대규모 웹사이트의 경우 트래픽 로드 밸런싱 또는 가져오기 및 SEO 순위 향상을 위해 요청한 페이지가 직접 반환되지는 않지만 방향을 바꾸었습니다. 반환된 상태 코드는 200OK가 아니고 301,302로 시작하는 리디렉션 코드입니다. 브라우저가 리디렉션 응답을 얻은 후 응답 메시지의 Location 항목에서 리디렉션 주소를 찾고, 브라우저는 첫 번째 단계에서 다시 해당 주소에 액세스할 수 있습니다. .

리디렉션의 역할: 리디렉션은 로드 밸런싱 또는 트래픽 가져오기를 통해 SEO 순위를 높이는 데 사용됩니다. 프런트 엔드 서버를 사용하여 요청을 수락한 다음 이를 다른 호스트에 로드하면 사이트의 동시 비즈니스 처리 기능이 크게 향상될 수 있습니다. 또한 Baidu.com, www.baidu com은 여러 도메인 이름에서 하나의 사이트로 액세스를 집중할 수 있습니다. 검색 엔진에서는 두 개의 웹 사이트로 간주되며 각각에 대한 링크 수가 줄어들어 순위가 낮아집니다. 영구 리디렉션은 두 주소를 연결하고 검색 엔진은 두 주소를 동일한 웹 사이트로 간주하여 순위를 향상시킵니다. .

6단계: 브라우저가 리디렉션 주소를 추적합니다

브라우저가 리디렉션 후 최종 액세스 주소를 알게 되면 위와 동일한 내용으로 http 요청을 다시 보냅니다.

7단계: 서버가 요청을 처리합니다

서버는 get 요청을 받은 다음 처리하고 응답을 반환합니다.

8단계: 서버가 HTML 응답을 보냅니다

상태 코드 200 OK를 반환합니다. 이는 서버가 요청에 응답하고 메시지를 반환할 수 있음을 나타냅니다. 헤더의 콘텐츠 유형이 "text/html"이므로, 브라우저는 파일을 다운로드하는 대신 HTML 형식 렌더링으로 응답합니다.

9단계: TCP 연결 해제

1. 브라우저가 위치한 호스트는 연결 해제 메시지를 서버에 보낸 후 데이터 전송을 중지합니다.

2. 확인 메시지, 그리고 서버의 전송되지 않은 데이터가 전송되었습니다.

3. 서버 데이터 전송이 완료된 후 클라이언트에게 연결 해제 메시지가 전송됩니다.

4. 확인 메시지를 보낸 후 일정 시간 동안 기다립니다.

10단계: 브라우저가 페이지를 표시합니다.

브라우저가 모든 HTML 문서를 완전히 허용하지 않으면 이미 이 페이지가 표시되기 시작했습니다. 페이지. 브라우저는 반환된 데이터 패킷을 수신합니다. 브라우저에 따라 렌더링 메커니즘이 해당 데이터를 렌더링합니다. 렌더링된 데이터는 해당 페이지 렌더링 및 발자국 상호 작용을 수행합니다.

11단계: 브라우저는 일부 스타일 파일, 이미지 URL, js 파일 URL 등과 같이 HTML

에 포함된 다른 콘텐츠를 보내고 얻습니다. 브라우저는 이러한 URL을 통해 요청을 다시 보내며 요청 프로세스는 여전히 진행됩니다. HTML 읽기, 도메인 이름 쿼리, 요청 보내기, 리디렉션 등의 유사한 프로세스. 그러나 이러한 정적 파일은 브라우저에 캐시될 수 있습니다. 때때로 이러한 파일은 서버를 통하지 않고 캐시에서 직접 액세스됩니다. 일부 웹사이트는 타사 CDN을 사용하여 이러한 정적 파일을 호스팅하기도 합니다.

위 내용은 브라우저가 주소를 입력하면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.