인터넷이 처음부터 끝까지 어떻게 작동하는지에 대한 인터뷰 질문에 대한 기술적 답변이 필요합니다.


13

지난 2 주 동안 5 명의 다른 사람들과 인터뷰를했으며 5 명 중 3 명은이 질문을했습니다. "Google.com"을 누르는 것과 화면에 나타나는 페이지 사이에 어떤 일이 발생하는지 설명하십시오. 기본적으로 인터넷 작동 방식. 이 질문을 다시 받으면 3 배나 더 잘 준비 할 수 있다고 생각합니다.

나는 가지를 알고 있지만 내 대답이 충분하다고 확신하지 못합니다. 기본적으로 DNS 서버는 "google.com"을 IP 주소로 변환한다고 언급합니다. 나는 TCP / IP에 대해 약간 글로시 한 다음 웹 서버가 문자 그대로 요청 된 페이지를 제공하여 브라우저로 다시 브라우저로 보내지고 해석하고 표시하는 것에 대해 이야기합니다.

이전에 말했듯이 내 대답이 충분히 기술적이라고 확신하지 못합니다. 나가는 단계는 무엇입니까?

무엇의 가치를 들면, 그 세 시대의 두 사람은 같은 회사에 있었다 나는 그것을 폭격하지 수 있도록 내가 다시 그들과 함께 세 번째 인터뷰 호출되고있어 너무 열심히.


1
인터뷰 한 직위의 성격은 무엇입니까?
smp7d

3
면접관 5 명 중 3 명이이 질문을했을 때, 연구 / 연구를하고 그것을 완전히 이해했음을 보여주는 좋은 답변을 얻을 때가되었습니다. 같은 회사에서 3 차 면담을 요청 받고 다시 질문을받는 경우, 지식을 쌓을 수있을만큼 관심이 많았거나 그렇지 않다는 것을 보여줄 것입니다.
Robert Harvey

1
또한, 나는 프로세스의 어느 부분에 가장 관심이 있는지 물어 봄으로써 질문의 범위를 좁히려 고 노력할 것입니다. 예를 들어, OSI 모델7 개 계층 과 같은 것에 대해 깊이 알고 싶지는 않지만 여전히 실무 지식이 있어야합니다.
Robert Harvey

1
반면에 대답은 너무 기술적 인 것일 수 있습니다. 아마도 그들은 기술이 아닌 방법으로 사람들과 정보를 어떻게 연관시킬 수 있는지 알고 싶습니까?
Matt

1
질문에 의사 소통이 얼마나 잘되는지 묻는다면, 매우 광범위한 질문에 대한 대답을하기보다는 질문에 관한 질문을하는 것이 좋습니다. 매우 자세한 기술 답변을 제공하고 하루 종일 설명 할 수 있습니다. 나는 그것이 질문의 목적이라고 생각하지 않습니다.
Matt

답변:


29
  1. 브라우저는 먼저 OS가 "호스트"파일에서 도메인 이름을 IP 주소로 변환하는 항목을 찾도록합니다. 이는 ARPANET을 통해 액세스 할 수있는 모든 컴퓨터에 대해 단일 텍스트 파일에 이해할 수있는 이름이 포함되어 있고 연결된 각 컴퓨터에 대해 비교적 최근의 사본이있을 수있는 경우 ARPANET에서 상속 된 레거시 기능입니다. NetBIOS 또는 유사한 노드 이름 지정 프로토콜이없는 소규모 컴퓨터 네트워크에서는 약간의 가치가 있었지만 요즘은 해커 (DNS를 우회하고 컴퓨터를 사이트로 가리킬 수있는 대상)의 대상이 될 가능성이 높습니다 클라이언트 컴퓨터 또는 사용자 / 소유자에게 합법적으로 사용하도록 제어합니다.
  2. 컴퓨터에이 도메인에 대한 HOSTS 항목이 없다고 가정하면 브라우저는 사용중인 연결에 대해 OS의 인터넷 설정에 구성된 DNS 서버로 UDP 요청을 보내어 요청의 도메인 이름 (모든 이름)을 전달합니다. "http : //"와 다음에 오는 첫 번째 콜론 또는 슬래시 사이 (예 : "www.google.com") 이 DNS 서버는 일반적으로 회사 또는 로컬 인터넷 서비스 제공 업체에 속합니다.
    • UDP는 "범용 데이터 그램 프로토콜 (Universal Datagram Protocol)"의 약자이며 TCP와 동일한 클래스의 "전송 계층"프로토콜입니다 ( "네트워크 계층"IP 프로토콜 위, HTTP, FTP, SMTP 등과 같은 "응용 프로그램 계층"프로토콜 아래) ). TCP는 많은 오류 확인 및 내결함성 (데이터 추가 및 오버 헤드 증가)을 제공하지만 UDP는 훨씬 가벼운 접근 방식을 취하여 순 데이터 대역폭을 증가시킵니다. 단점은 프로토콜이 대용량 데이터를 여러 패킷으로 분할 (메시지가 작아야 함)하거나 전송 중에 손실 된 패킷을 재전송하는 것과 같이 TCP에서 사용 가능한 기능을 지원하지 않는다는 것입니다. 하나의 패킷이 손실 되더라도 중요하지 않은 DNS와 같은 작고 간단한 메시지 및 스트리밍 원격 측정 유형 데이터에 적합합니다.
  3. 이 DNS 서버는 다음 세 가지 중 하나를 알고 있습니다. 해당 도메인 이름을 IP 주소로 직접 변환하는 방법 (해당 도메인의 "인증 이름 서버"또는 ANS임을 의미); ANS 또는 그 부모의 IP 주소; 또는 ANS에 도달하는 방법을 알 가능성이 높은 자체 상위 네임 서버. 서버가 요청 자체를 변환하지 않으면 요청은 알려진 ANS로 "아래로"또는 상위 NS로 "위로"요청을 전달하며이 프로세스는 재귀 적으로 반복됩니다.
    • 이 트리 구조의 "루트"는 단일 서버로, 수신 한 요청을 여러 "최상위 도메인"또는 TLD 서버 중 하나로 전달합니다. 예를 들어, ".com"네임 서버가 있는데,이 네임 서버는 지구상에서 ".com"도메인의 IP 주소를 찾는 방법을 알고 있습니다 (이러한 요청을 ISP 레벨 네임 서버로 전달). 이 TLD는 ISP에 속하는 인터넷의 특정 "지점"내에 DNS에 알려지지 않은 도메인 이름 서버에 대한 요청을 전달합니다.
  4. 신뢰할 수있는 이름 서버가 발견되고 도메인 이름을 IP 주소로 변환하면이 주소는 클라이언트와 브라우저로 리턴됩니다. 요청의 "사용 시간"(TTL; 서버간에 요청을 전달해야하는 최대 횟수, 잘못 구성된 서버 간 무한 순환을 피하기 위해 최대 횟수) 내에서 ANS를 찾을 수없는 경우, 노드는 노드에 의해 오류를 클라이언트에 반환합니다. 요청이 "시간 초과"(또는 도메인의 권한 서버이지만 특정 도메인 접 두부를 변환 할 수없는 노드).
  5. 그런 다음 HTTP 연결을위한 브라우저는 "TCP SYN"요청을 IP 주소 및 지정된 포트 (또는 기본 HTTP 포트 80)로 보내 연결을 설정합니다. 이 프로토콜 수준 요청은 "네트워크 수준"IP 헤더 위에 계층화되어 있으며 클라이언트의 기본 응답 포트 ( "소스 포트"), 세그먼트 크기와 같은 TCP 통신 기본 설정, 창 크기와 같은 정보가 포함되어 있습니다. 및 선택적 프로토콜 기능 사용.
  6. 요청은 인터넷 구조를 통해 "링크 수준"(실제 전기 회로가 네트워크, 전송 및 응용 계층에 포함 된 데이터를 전송하기 위해 조작되는 방법을 관리)으로 라우팅됩니다. 일반적으로 데이터는 유선 또는 광섬유를 따라 집이나 회사의 "중앙 사무실"( "마지막 마일"이라고하며 일반적으로 대역폭에 대한 가장 큰 병목 현상을 나타내는 회로)로 이동합니다. 정보 고속도로. 그런 다음 CO는 수십억의 다른 사용자와 함께 요청을 CO의 대상 서버로 전송하는 고 대역폭 파이프 (T- 캐리어, SONET 등)에 액세스 할 수 있습니다.
    • 이 "IP 라우팅"은 개념적으로 DNS 확인과 유사한 방식으로 작동합니다. "최상위"ISP는 ICANN에 의해 ​​전체 "클래스 A"IP 네트워크 (알려진 첫 번째 바이트가 주어지면 가능한 모든 주소)에 할당되며 다른 ISP는 해당 클래스 A 네트워크를 소유 한 사람과 해당 네트워크의 가장 가까운 "프론트에 데이터를 가져 오는 방법을 알고 있습니다. "라우팅 테이블"의 정보를 사용하여 그런 다음이 최상위 ISP는 주소 블록, 일부는 로컬 ISP로, 다른 일부는 회사 사용자에게 직접 임대하며, 이러한 ISP 및 회사에는 IP 주소 (및 자체 라우팅 테이블)를 사용하여 다른 패킷으로 패킷을 보낼지 여부를 결정하는 라우터가 있습니다. 근처의 회로, 다른 로컬 ISP 라우터 옆 또는 상위 계층 트렁크 및 라우터.
  7. 서버는이 요청을 수신하고 (소켓이나 방화벽과 같은 더 낮은 추상화 계층에서 거부되지 않는 경우) 연결을 수락하기로 결정하면 "SYN-ACK"요청-응답 단계를 전송합니다. 자체 환경 설정 (수정할 수있는 클라이언트의 환경 설정을 포함하지만 지정할 수 없거나 지정되지 않은 환경 설정 포함)을 요청하고 지정합니다.
  8. 클라이언트가 서버가 제공 한 옵션 세트를 사용하여 통신을 지원하면 ACK 응답을 보내며 이제 연결이 "설정되었습니다".
  9. 그런 다음 브라우저는 "HTTP GET"요청을 보냅니다. 요청에는 브라우저가 요청한 리소스의 전체 URI가 포함됩니다 (www.google.com과 대화하고 있음을 알고 있음에도 불구하고 요청에 따라 서버가 해석 할 수 있도록 해당 문자열을 요청의 일부로 보냅니다) 요청을 지시 할 도메인 이름). 이 요청에는 "쿠키"가 포함될 수 있습니다. 요청을 효율적이고 편리하게 처리하는 것을 돕기 위해 서버에 제공 될 수있는 클라이언트에 저장된 데이터 (예를 들어, 사용자의 선호도 식별).
  10. 서버는 GET 요청을 수신하고 먼저 GET 요청을 수락할지 여부를 결정합니다 (서버는 TCP 포트 80에 대한 요청을 수신했지만 FTP 또는 VoIP와 같은 다른 응용 프로그램 프로토콜의 메시지를 기대할 수 있습니다. 이는 포트 80에서는 드물지만 다른 유형의 포트에 더 일반적입니다). 우리는 그것을 받아들이는 것으로 가정 할 것이다. 그런 다음 서버는 요청 된 리소스 (이 경우 Google의 유비쿼터스 검색 페이지 인 기본 페이지의 HTML)가 포함 된 HTTP 응답을 반환합니다. 응답에는 서버가 클라이언트에게 저장을 요청하는 "쿠키"가 포함될 수도 있습니다 (클라이언트가 쿠키를 보관하거나 보관하지 않을 수 있음).
  11. HTML은 브라우저에 의해 요약되어 브라우저 창에 페이지를 그리도록 렌더링됩니다. 이러한 상황이 발생하면 HTML에서 규정 한 방식으로 페이지의 모든 내용을 표시하는 데 필요한 Javascript, 스타일 시트, 이미지 및 기타 데이터에 대한 더 많은 HTTP GET 요청이 클라이언트에 의해 전송되고 결과 데이터는 섬기는 사람.
  12. 과거에 Google은 정적 형식을 기반으로했습니다. 당신은 당신이 텍스트 상자에 검색하고자하는 것을 입력하고 "검색"또는 "나는 운이 좋은 느낌"을 누르십시오. 이렇게하면 클라이언트에서 서버로 HTTP POST 요청을 보냅니다. 요청에는 클라이언트가 지정한 위치에 정보를 보내야 할 위치와 물론 정보 자체가 포함됩니다. 이 정보는 검색 결과를 찾기 위해이를 사용하여 서버에 의해 요약되며, 서버는 이러한 결과 페이지를 사용자에게 전송합니다. 또는 검색어를 "쿼리 문자열"로 변환하고 "리디렉션"으로 응답 할 수 있습니다. 브라우저가 다른 요청을 메시지에 지정된 다른 URI로 보내도록 요청합니다. 브라우저가이를 수행 한 다음 서버가 해당 페이지를 빌드하고 전송 합니다 .
  13. 현대에는 Google의 첫 페이지가 훨씬 더 역동적입니다. 입력 할 때 브라우저 내의 클라이언트 쪽에서 실행되는 JavaScript는 "사이드 채널"을 따라 입력 한 내용을 Google에 보냅니다 (통신에 동일한 프로토콜을 사용하지만 브라우저 자체가 전체 페이지에 대한 요청을 보내지 않기 때문에) 브라우저 화면이 완전히 지워지지 않고 다시 그려집니다.) 프론트 페이지의 경우 쿼리 힌트를 제공하는 데 사용됩니다 (다른 사람들이 최근에 그렇게했기 때문에 검색중인 것들에 대한 자동 완성 제안). 결과 페이지에서 동일한 작업을 수행하지만 브라우저에서 전체 페이지를 다시로드하지 않고도 실시간 검색 결과를 제공하고 페이지를 완전히 다시 그리는 데 사용할 수도 있습니다. 이러한 유형의 트릭은 AJAX (비동기 JavaScript 및 XML,

그들이 대학에서 신입생 "Intro to IT"수업을 보여준 영화인이 영화 는 기본적이고 친근한 형식으로 설명되어 있습니다. 그것은 결코 기술적 인 것이 아니지만,이 퍼즐 조각들에 대한 좋은 개념적 개요를 제공합니다.


1
이것은 좋은 대답이지만 대부분의 사람들이 불필요하다고 생각하는 많은 세부 사항에 대해 설명합니다. (나는 당신이이 세부 사항들을 추가 할 필요가 없다고 말하는 것이 아닙니다; 나는 당신의 게시물이 제안한 것보다 훨씬 더 많은 일이 진행되고 있음을 지적하고 있습니다.)
greyfade

1
예, DNS 조회를 위해서는 TCP 대 UDP로 이동해야합니다. TCP 인 경우 TCP 3 방향 핸드 셰이크에 들어가야합니다. 그것은 .... 어떻게 든 (사전에 DHCP 또는 네트워크 구성에 의해) 정의 된 도메인 이름 서버가 시스템을 가정 아마도 안전
앨런 Shutko 씨

1
@AlanShutko - 내가 3 웨이 핸드 셰이크를 언급; 앞뒤 SYN / SYN-ACK / ACK. UDP는 DNS의 기본 프로토콜이지만 UDP에 대해서는 언급하지 않았습니다.
KeithS

@KeithS, 죄송합니다, 당신은 옳습니다. 나중이 아닌 DNS를 확인할 때 그것을 찾고있었습니다. 512 바이트보다 큰 응답이 있고 잘린 경우 DNS가 TCP로 대체 될 수 있습니다.
Alan Shutko

1
ANS- "Authoritative Name Server", 특정 도메인 이름의 엔드 포인트에 대한 직접적인 지식과 책임이있는 DNS 서버. ALD는 오타였습니다. 게시물은 두 가지 모두 더 명확하게 편집되었습니다.
KeithS

1

쿠키와 방화벽에 대한 언급은 생략 할 수 있습니다. "Google.com"이 사용자를 인식하고 Google에 로그인하지 않은 사람과 다를 수있는 페이지를 제공 할 수 있도록 쿠키가 전송된다는 말이 있습니다. 스마트 폰, 태블릿 또는 일반 컴퓨터 (노트북 또는 데스크톱) :이 위치를 찾는 사람의 위치에 대한 질문도 있습니다.

당신이 물어봐야 할 몇 가지 부수적 인 질문이 있는지 궁금하지만 그것이 여기에 영향을 줄 수는 없었습니다. 이것은 인터넷이 조금 더 넓어지고 전자 메일과 내가 생각하는 다른 것들을 포함하기 때문에 웹이 어떻게 작동하는지에 대한 질문입니다.


내 생각에 그것은 당신의 의사 소통 능력에 대한 시험이었다. 기술적 인 문제와 비 기술적 인 문제가 이해할 수 있도록 다소 기술적 인 질문을하고 분석 할 수 있습니까? 브라우저에서 "Google.com"홈페이지를 불러오는 사람을 설명하기 위해 어떤 종류의 질문을 하시겠습니까? 많은 가정을하거나 질문을합니까? 어떤면에서 나는 이것을 화이트 보드 질문과 병행하여 정확한 답을 줄 수 있거나 질문에 답할 수있는 가정을 만들 정도로 모호하게 남아 있습니다.


5
인터넷에 대한 질문은 내 생각에 일반적으로 네트워킹에 대해 더 많이 묻는 것입니다. 경로는 어떻게 찾습니까? 패킷의 목적과 의미는 무엇이며 어떻게 정보를 전송합니까? 패킷에 대한 TCP 추상화는 어떻게 작동하며 그 이유는 무엇입니까? 그러나 질문은 실제로 모호합니다. 어쩌면 HTTP, HTML, 네트워크 스위치, ISP 및 백본 또는 다른 것에 대해 묻는 것일 수도 있습니다 .NIC 프레임 버퍼가 어떻게 긁히고 OS, CPU 또는 NIC가 처리하는지 알고 싶습니다. ...
Jimmy Hoffa

@JimmyHoffa : 사실, 그것은 광범위한 질문입니다. 질문을 한 인터뷰 담당자는 페이지 요청에서 페이지 가져 오기에 이르기까지 네트워킹의 측면에 초점을 맞추고 있다고 생각했습니다. 많은 일이 진행되고 있으며 기술적으로 충분하고 내가 무슨 말을하고 있는지 알기 만하면 어느 경로를 택하더라도 행복 할 것으로 생각됩니다.
Megacannon

1
나도 그것들이 당신이 아이디어를 얼마나 잘 전달할 수 있는지를보기 위해 기술적이지 않은 대답을했다고 생각합니다. 종종 우리는 나무의 숲을 잃어 버리고 넓은 그림을 볼 수 없습니다.
Matt

@JimmyHoffa, 좋은 지적입니다. 아마도 DNS 서버의 IP 주소로 시작하여 넷 마스크를 통해 동일한 서브넷에 있는지 확인하고, 그렇다면 ARP를 사용하여 서버를 찾으십시오. 그렇지 않으면 패킷이 게이트웨이로 전송됩니다.
Alan Shutko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.