>웹 프론트엔드 >JS 튜토리얼 >브라우저에 URL을 입력하고 http 요청을 시작하는 구체적인 프로세스를 소개합니다.

브라우저에 URL을 입력하고 http 요청을 시작하는 구체적인 프로세스를 소개합니다.

不言
不言앞으로
2018-11-20 15:12:292938검색

이 글은 http 요청을 시작하기 위해 브라우저에 URL을 입력하는 구체적인 과정을 소개한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. 당신에게.

사용자가 URL을 입력합니다

사용자가 URL을 입력하면 운영 체제는 입력 이벤트를 브라우저는 프로세스 중에 일부 전처리를 수행할 수 있습니다. 예를 들어 Chrome은 기록 통계를 기반으로 입력된 문자에 해당하는 웹사이트를 추정합니다. 예를 들어 goog를 입력하면 90%가 있는 것으로 확인됩니다. 이전 기록을 기반으로 "www.google.com"을 방문할 확률이 높으므로 Enter를 누르기 직전에 TCP 연결이 설정되고 렌더링됩니다.

그런 다음 URL을 입력하고 Enter를 클릭합니다. 이때 브라우저는 먼저 프로토콜을 확인하고 웹에 따라 처리합니다.

보안 확인이 완료된 후 브라우저 커널은 먼저 캐시를 확인한 다음 UA 및 기타 HTTP 정보를 설정한 다음 다른 플랫폼에서 네트워크 요청 방법을 호출합니다. .

참고:
브라우저와 브라우저 코어는 다른 개념입니다. 브라우저 코어는 Blink, Gecko, 브라우저 커널입니다. 렌더링만 담당하고 GUI, 네트워크 연결 등 크로스 플랫폼 작업은 브라우저에서 구현합니다. #Send data through Socket

dns query ip

DNS, English 는 Domain Name System, 중국어는 Domain Name System이라고 하며 인터넷의 서비스로 도메인 이름과 IP 주소를 결합한 것입니다. 서로 매핑되는 분산 데이터베이스

사용자가 www.google을 입력한다고 가정합니다. .com 브라우저에서 대략적인 프로세스는 다음과 같습니다.

입력이 도메인 이름인 경우 DNS 쿼리를 진행해야 하며 도메인 이름을 IP로 확인합니다. DNS 쿼리를 수행하는 호스트나 소프트웨어를 DNS 확인자라고 하며, 사용자가 사용하는 워크스테이션이나 컴퓨터를 확인자라고 합니다. 도메인 이름 확인은 DNS 확인자를 사용하여 해당 IP를 얻는 프로세스입니다. 확인자는 처리를 위해 도메인 이름 서버에 쿼리합니다.

주요 프로세스는 다음과 같습니다.

브라우저 캐시에서 도메인 이름 www.google.com의 IP 주소 찾기 #🎜 🎜##🎜🎜 #

브라우저 캐시에 없으면 운영 체제 캐시에서도 검색됩니다. 이 단계에서는 로컬 호스트도 검색하여 캐시가 있는지 확인합니다. 해당 도메인 이름 매핑(물론 시스템 DNS에 캐시되어 있습니다. 캐시에 있습니다)

  1. 시스템에 없으면 라우터로 가서 찾아보세요. 라우터에는 일반적으로 자체 DNS 캐시가 있기 때문입니다

    # 🎜🎜#

  2. 위 항목 중 어느 것도 발견되지 않으면 계속해서 DNS 도메인 이름 서버에 쿼리하세요
  3. #🎜🎜 #

    사용자 컴퓨터의 확인자는 LDNS(즉, 로컬 DNS, 인터넷 서비스 공급자(ISP))가 도메인 이름 확인 요청을 시작하고 www.google.com의 IP 주소를 쿼리합니다. 재귀 검색 프로세스
  4. 캐시 적중이 없을 때 LDNS는 루트 도메인 이름 서버에 www.google.com의 IP 주소를 쿼리합니다. LDNS는 반복적인 질의과정입니다

root LDNS에게 전해주세요 www.google.com에 해당하는 IP는 모르지만 인증서버에 문의하면 되는걸로 알고있습니다 의 com 도메인입니다.
  • LDNS 방향 com의 인증 서버는 www.google.com
  • #🎜🎜에 해당하는 IP 주소를 요청합니다. #
  • com은 LDNS에게 알려주는데, www.google.com에 해당하는 IP는 모르지만, google.com 도메인의 인증서버에 문의하면 됩니다. 그

  • LDNS는 google.com의 인증 서버에 www.google.com#에 해당하는 IP 주소를 요청합니다. 🎜🎜#

  • # 🎜🎜#google.com은 자체 ZONE 파일(영역 파일 레코드라고도 함)을 쿼리하고 www.google.com에 해당하는 IP 주소를 찾아 LDNS
  • #🎜에 반환합니다. 🎜#LDNS는 로컬에서 레코드를 캐시하고 그 결과를 사용자 컴퓨터의 파서에 반환합니다
  • 이후 사용자 컴퓨터 파서가 결과를 얻은 후 캐시합니다. 자체 운영 체제의 DNS 캐시에 저장하고 이를 브라우저에 반환합니다. 브라우저는 일정 기간 동안 이를 계속 캐시합니다.
  • 참고
  • ,

    도메인 이름 쿼리가 CDN 스케줄러를 통과했을 수 있습니다(CDN 저장 기능이 있는 경우).

  • 게다가 DNS 확인에는 시간이 많이 걸리기 때문에 도메인 이름을 너무 많이 확인하면 첫 화면이 너무 느리게 로드된다는 점을 알아야 합니다. dns-prefetch 최적화 #🎜🎜 ##🎜🎜 #tcp/ip request
  • IP 주소를 사용하면 소켓 API를 통해 데이터를 보낼 수 있습니다. 이때 TCP 또는 UDP 프로토콜을 선택할 수 있습니다.

  • http는 본질적으로 TCP 프로토콜입니다.
  • TCP는 연결 지향 전송 계층 프로토콜입니다. 이는 양쪽 끝(송신 측과 수신 측)의 통신 호스트 간의 통신이 도달 가능함을 보장할 수 있습니다. 전송 중 패킷 손실 및 무질서한 전송과 같은 비정상적인 상황을 처리할 수 있으며, 또한 광대역을 효과적으로 활용하여 네트워크 혼잡을 완화할 수 있습니다.

  • 처음에 TCP 연결을 설정하려면 세 번의 핸드셰이크가 필요합니다.

첫 번째 핸드셰이크는 연결 설정을 요청하고 보낸 사람은 연결 요청 메시지를 보냅니다. # 🎜🎜#두 번째 Handshake에서는 수신 측이 송신 측으로부터 메시지를 받고 이제 송신 측이 연결을 설정하려고 한다는 것을 알게 됩니다. 그런 다음 수신 측에서는 3번째 핸드셰이크를 보냅니다. 송신 측에서는 보낸 메시지를 받은 후 반환된 내용이 올바른지 확인해야 합니다. send 클라이언트가 확인 패킷을 다시 보냅니다

TCP 연결이 설정된 후 HTTP 요청을 보낼 수 있습니다.

참고
브라우저에는 동일한 도메인 이름에 대한 연결 수에 제한이 있으며 대부분은 6개입니다. http1.0에서는 하나의 리소스 다운로드가 하나의 TCP/IP 요청에 대응해야 하는 경우가 많지만 HTTP 2.0 프로토콜은 하나의 TCP 연결만 사용하지만 성능이 더 좋고 요청 우선순위도 달성할 수 있습니다.

위 내용은 브라우저에 URL을 입력하고 http 요청을 시작하는 구체적인 프로세스를 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제