브라우저에서 웹사이트를 탐색할 때 정확히 어떤 일이 발생하나요?

브라우저에서 웹사이트를 탐색할 때 정확히 어떤 일이 발생하나요?

브라우저에 www.cnn.com을 입력하면 뒤에서 무슨 일이 일어나고 정보가 화면에 어떻게 표시되나요?

기술적 설명을 높이 평가하겠습니다.

답변1

브라우저:"알겠습니다. 사용자가 www.cnn.com 주소를 요청하고 있습니다. 슬래시나 기타 항목이 없으므로 이는 메인 페이지에 대한 직접적인 요청인 것으로 보입니다. 프로토콜이나 포트도 정의되지 않았으므로 HTTP이고 포트 80으로 간다고 가정하겠습니다. 우선, 안녕 DNS, 친구, 일어나세요! www.cnn.com이 어디에 숨어 있나요?"

DNS:"그렇습니다... 잠깐만요. ISP 서버에 물어보겠습니다. 알겠습니다. 157.166.226.25인 것 같습니다."

브라우저:"알겠습니다. Internet Protocol Suite, 당신 차례입니다! 157.166.226.25로 전화해 주세요. 이 HTTP 헤더를 보내주세요. 메인 페이지의 기본 구조와 콘텐츠를 요청하므로 무엇을 더 가져올지 알 수 있습니다... 아 글쎄, 그건 아닙니다. 당신은 이것에 관심이 있을 것 같아요."

TCP/IP:"무슨 뜻이에요내 차례? 마치 내가 DNS를 위해 바로 거기에서 등을 돌리는 작업을 하고 있지 않은 것처럼요? 맙소사, 여기서 약간의 감사를 얻으려면 무엇이 필요합니까..."

브라우저:...

TCP/IP:"응, 응... 연결 중... 게이트웨이에 전달해달라고 부탁할게. 그게 쉽지 않잖아. 거기에서 예쁜 요청을 여러 부분으로 나누어서 전달해야 할 테니까." 그리고 내가 받은 수천 개의 패키지 중에서 그들이 보내는 물건을 모두 조립하세요... 아, 그렇죠, 피규어는 상관없잖아요."

그러던 중 CNN 본부에서는 마침내 웹서버 문 앞에 메시지가 도착하게 된다.

CNN 웹 서버:"Nzhôô! 고객! 그는 뉴스를 원합니다! 첫 페이지! 어때요?"

CNN 서버측 스크립트 엔진:"그래, 그럴게! 첫 페이지지, 그렇지?"

CNN 데이터베이스 서버:"그래! 날 위해 일해줘! 어떤 콘텐츠가 필요해?"

CNN 서버측 스크립트 엔진:"... 음, 죄송합니다. DB, 바로 여기 캐시에 첫 페이지의 사본이 있습니다. 아무것도 컴파일할 필요가 없습니다. 하지만 이 사용자 ID를 가져가서 저장해 두세요. 고객에게도 보내드릴 테니까요. 나중에 누구랑 얘기할지 알잖아."

CNN 데이터베이스 서버:"응!"

사용자의 컴퓨터로 돌아가서...

TCP/IP:"오오오오 알았어, 답장 왔어. 아 이런, 왜 이게 큰 일이 될 것 같은 느낌이 드는 걸까..."

브라우저:"어, 와... 이건 온갖 종류의 자바스크립트 코드가 들어있어요... 이미지 묶음, 양식 몇 개... 그렇죠, 렌더링하는 데 시간이 좀 걸릴 것 같아요. 어서 가세요. IP 시스템, 거기에 더 많은 정보를 얻으려면 i.cdn.turner.com에서 HTTP를 통해 몇 가지 스타일시트가 필요하고 /cnn/.element/css/2.0/common.css 파일을 요청하세요. i.cdn.turner.com에 있는 스크립트 중 일부도 지금까지 6개나 되네요..."

TCP/IP:"그림을 얻었습니다. 서버 주소와 그 밖의 모든 것을 알려주십시오. 그리고 해당 파일 내용을 HTTP 요청 내에 포함시키십시오. 처리하고 싶지 않습니다."

DNS:"i.cdn.turner.com을 확인 중입니다... 잠깐만요. 사실 이름은 cdn.cnn.com.c.footprint.net입니다. IP는 4.23.41.126입니다."

브라우저:"물론이죠... 잠깐만요. 처리하는 데 몇 nsec 정도 걸립니다. 이 스크립트를 모두 이해하려고 노력 중입니다..."

TCP/IP:"여기 당신이 요청한 CSS가 있습니다. 아, 그리고... 네, 그 추가 스크립트도 방금 돌아왔습니다."

브라우저:"휴, 그 밖에도... 일종의 비디오 광고가 있어요!"

TCP/IP:"오 이런, 그거 정말 재미있을 것 같은데..."

브라우저:"여러 종류의 이미지도 있어요! 그리고 이 CSS는 좀 지저분해 보이는데요... 그렇죠, 그 부분이 거기에 가서 맨 위에 이 줄이 있으면... 도대체 그게 더 이상 맞을 수 있을까요... 아니, 저는 이것을 만들려면 약간 늘려야 할 것입니다... 아, 하지만 다른 CSS 파일은 그 규칙을 무시합니다... 음, 이것은 렌더링하기 쉬운 부분이 아닐 것입니다. 확실합니다!"

TCP/IP:"알았어, 알았어. 잠시만 방해하지 마. 여기서는 아직 할 일이 많아."

브라우저:"사용자님, 여기 간단한 진행 보고서가 있습니다. 죄송합니다. 이 모든 작업은 몇 초 정도 걸릴 수 있습니다. 로드할 요소가 140개 정도 있는데 지금까지 16개입니다."

1~2초 뒤에...

TCP/IP:"좋아, 그게 다야. 저기, 들어봐... 아까 욕해서 미안해, 거기서 관리하는 거야? 너한테도 꽤 부담이 될 것 같은데."

브라우저:"휴, 예, 요즘은 다 이런 웹사이트들이거든요. 확실히 쉽지는 않네요. 글쎄요, 제가 관리하겠습니다. 그게 제가 여기 있는 이유입니다."

TCP/IP:"요즘 우리 모두에게 꽤 힘든 일인 것 같아요... 아, DNS에 대해 더 이상 칭찬하지 마세요!"

브라우저:"안녕하세요 사용자님! 웹사이트가 준비되었습니다. 가서 소식을 받아보세요!"

답변2

웹 작동 방식: HTTP 및 CGI 설명

웹의 모교인 CERN의 훌륭한 설명도 있습니다.웹이 작동하는 방식

여기에 이미지 설명을 입력하세요

답변3

  • 브라우저는 사용자가 입력한 내용(URL)을 호스트 이름과 경로로 분할합니다.
  • 브라우저는 주어진 호스트 이름과 경로에서 데이터를 요청하는 HTTP 요청을 형성합니다.
  • 브라우저는 DNS 조회를 수행하여 호스트 이름을 IP 주소로 확인합니다.
  • 브라우저는 IP 주소를 통해 지정된 컴퓨터에 TCP/IP 연결을 형성합니다. (이 연결은 실제로 여러 컴퓨터로 구성되며 각 컴퓨터는 데이터를 다음 컴퓨터로 전달합니다.)
  • 브라우저는 주어진 IP 주소에 대한 연결을 통해 HTTP 요청을 보냅니다.
  • 해당 컴퓨터는 TCP/IP 연결로부터 HTTP 요청을 수신하고 이를 웹 서버 프로그램에 전달합니다.
  • 웹 서버는 호스트 이름과 경로를 읽고 사용자가 요청한 데이터를 찾거나 생성합니다.
  • 웹 서버는 해당 데이터가 포함된 HTTP 응답을 생성합니다.
  • 웹 서버는 해당 HTTP 응답을 TCP/IP 연결을 통해 컴퓨터로 다시 보냅니다.
  • 브라우저는 HTTP 응답을 수신하고 이를 헤더(데이터 설명)와 본문(데이터 자체)으로 분할합니다.
  • 브라우저는 데이터를 해석하여 브라우저에 표시하는 방법을 결정합니다. 일반적으로 이는 정보 유형과 일반 형식을 지정하는 HTML 데이터입니다.
  • 일부 데이터는 자세한 레이아웃을 위한 스타일 시트, 인라인 이미지 또는 플래시 동영상과 같이 로드해야 하는 추가 리소스를 지정하는 메타데이터입니다. 이 메타데이터는 다시 URL로 지정되며 모두 로드될 때까지 이 전체 프로세스가 각 메타데이터에 대해 반복됩니다.

답변4

다른 답변에서 지금까지 누락된 것은 CNN 측에서 일어나는 일입니다.

  • CNN의 기계는 컴퓨터로부터 페이지를 요청하는 메시지를 받습니다.
  • 이 요청은 CNN이 웹 사이트에 사용하는 많은 컴퓨터 중 하나로 리디렉션됩니다(이렇게 하면 응답 웹 페이지를 구성하는 작업을 여러 컴퓨터에 분산시킬 수 있기 때문입니다).
  • CNN 컴퓨터는 귀하의 요청을 받고 아마도 거의 완전히 미리 계산된 웹 페이지로 응답하지만, 귀하에게 보내기 전에 몇 가지 사항이 변경될 수도 있습니다(상단에 광고가 표시될 수도 있고 헤드라인 뉴스가 될 수도 있음). 때때로 컴퓨터는 요청을 받을 때마다 수많은 작은 구성요소로부터 페이지를 조립합니다. CNN이 무엇을 하는지 잘 모르겠습니다
  • 응답은 네트워크를 통해 컴퓨터로 전달되어 표시됩니다.
  • 응답에 이미지가 포함되지 않았습니다. 그러면 컴퓨터가 이미지에 대한 또 다른 요청을 보내며 거의 동일한 시나리오가 발생합니다.

관련 정보