インターネットが最初から最後までどのように機能するかについてのインタビューの質問に対して、より技術的な回答が必要です[非公開]


13

過去2週間に5人の個別のインタビューを受けましたが、そのうち5人のうち3人がこの質問をしました。 「Google.com」を押してから画面に表示されるページまでの間に何が起こるかを説明してください。 基本的に、インターネットの仕組み。この質問をもう一度受けたら、3回も準備ができていると思います。

私はいくつかのことを知っていますが、私の答えが十分であると確信していません。基本的に、DNSサーバーは「google.com」をIPアドレスに変換することに言及しています。私はTCP / IPについて少し説明します。次に、ブラウザーが解釈して表示するブラウザーに送り返される要求されたページを文字通り処理するWebサーバーについて説明します。

前にも言ったように、自分の答えが十分に技術的であるとは確信できません。私が省略しているステップは何ですか?

価値があるのは、この3回のうち2回は同じ会社で働いていたので、3回目のインタビューのために電話をかけられるので、爆撃することはできません あまりにも難しいです。


1
面接対象の職種の性質は何ですか?
smp7d

3
5人のインタビュアーのうち3人がこの質問をした場合、調査/研究を行い、あなたが完全に理解していることを示す良い答えを得る時間です 同じ会社で3回目の面接を求められ、再度質問された場合、知識を強化するのに十分な思いやりがあることを示すか、しなかったかのいずれかです。
ロバートハーベイ

1
さらに、プロセスのどの部分に最も関心があるかを尋ねることにより、質問の範囲を狭めようとします。たとえば、OSIモデルの7つの層のようなものについて深く知っていることは気にしませんが、まだ実用的な知識が必要です。
ロバートハーベイ

1
一方、答えは技術的すぎるかもしれません。おそらく彼らは、非技術的な方法で人々に情報を関連付ける方法を探しているのでしょうか?
マット

1
質問があなたのコミュニケーションの程度を確認するように求められた場合、非常に広範な質問に単に答えるのではなく、質問に関して質問を返すのがよいでしょう。非常に詳細な技術的な回答を提供し、それを説明するために一日中かかる可能性があります。それが質問の目的ではないと思います。
マット

回答:


29
  1. ブラウザは、まずドメイン名をIPアドレスに変換するエントリを見つけるために、OSが「hosts」ファイルを検索します。これは、単一のテキストファイルに、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で利用可能な機能をプロトコルがサポートしないことです。これは、1つのパケットが失われても問題にならない、小さく単純なメッセージ(DNSなど)やストリーミング、テレメトリタイプのデータに適しています。
  3. このDNSサーバーは、次の3つのことのいずれかを認識します。そのドメイン名を直接IPアドレスに変換する方法(つまり、そのドメインの「権限のあるネームサーバー」またはANS)。ANSまたはその親のIPアドレス。または、ANSに到達する方法を知っている可能性が高い独自の親ネームサーバー。サーバーがリクエスト自体を変換しない場合、既知のANSに向かって「ダウン」するか、親NSに「アップ」してリクエストを転送し、このプロセスが再帰的に繰り返されます。
    • このツリー構造の「ルート」は、受信したリクエストをいくつかの「トップレベルドメイン」またはTLDサーバーの1つに転送するだけの単一サーバーです。たとえば、惑星上の「.com」ドメインのIPアドレスを見つける方法を知っている「.com」ネームサーバーがあります(これらの要求をISPレベルのネームサーバーに転送することにより)。これらのTLDは、ISPに属するインターネットの特定の「ブランチ」内のDNSによって認識されないドメインネームサーバーへの要求を転送します。
  4. 権限のあるネームサーバーが見つかり、ドメイン名をIPアドレスに変換すると、このアドレスがクライアントとそのブラウザーに返されます。リクエストの「有効期間」内にANSが見つからない場合(TTL;誤って設定されたサーバー間の無限循環を回避するために、サーバー間でリクエストを転送する最大回数)、次のノードからクライアントにエラーが返されます。リクエストが「タイムアウト」(またはドメインの権限のあるサーバーであるが特定のドメインプレフィックスを変換できないノード)。
  5. ブラウザは、HTTP接続の場合、「TCP SYN」リクエストをIPアドレスと指定されたポート(またはデフォルトのHTTPポート80)に送信して、接続を確立します。これは、「ネットワークレベル」IPヘッダーの上に階層化されたプロトコルレベルの要求であり、クライアントの優先応答ポート(「ソースポート」)などの情報、セグメントサイズ、ウィンドウスケールなどのTCP通信の設定が含まれます。 、およびオプションのプロトコル機能の使用。
  6. 要求は、インターネットの構造を介して「リンクレベル」(ネットワーク、トランスポート、およびアプリケーション層に含まれるデータを送信するために実際の電気回路を操作する方法を制御する)でルーティングされます。通常、データはワイヤーまたはファイバーに沿って自宅または会社の「セントラルオフィス」(これは「ラストマイル」と呼ばれ、通常は帯域幅への最大のボトルネックを表す回路)に移動します。情報スーパーハイウェイ。その後、COは高帯域幅のパイプ(Tキャリア、SONETなど)にアクセスし、世界中の数十億ものリクエストを世界中の宛先のCOに送信し、宛先のサーバーまたはネットワークに転送します。
    • この「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と通信していることはわかっていますが、リクエストの一部としてその文字列を送信して、必要に応じてサーバーがさらに解釈できるようにしますリクエストを送信するドメイン名)。このリクエストには「Cookie」が含まれる場合があります。リクエストを効率的かつ便利に処理するのを支援するためにサーバーに与えることができるクライアントに保存されたデータ(ユーザーの好みを識別するなど)。
  10. サーバーはGETリクエストを受信し、最初にそれを尊重するかどうかを決定します(サーバーはTCPポート80へのリクエストをリッスンしている可能性がありますが、FTPやVoIPなどの別のアプリケーションプロトコルからのメッセージを期待しています。他のタイプのポートではより一般的です)。それを受け入れると仮定します。サーバーは、要求されたリソース(この場合、Googleのユビキタス検索ページであるデフォルトページのHTML)を含むHTTP応答を返します。応答には、サーバーがクライアントに保存を要求する「Cookie」も含まれる場合があります(クライアントは保存する場合としない場合があります)。
  11. HTMLはブラウザによってダイジェストされ、ブラウザウィンドウにページを描画するためにレンダリングされます。これが発生している間、ページのすべてのコンテンツをHTMLで規定された方法で表示するために必要なJavascript、スタイルシート、画像、およびその他のデータに対するHTTP GET要求がクライアントによって送信され、結果のデータが提供されますサーバ。
  12. 過去の時代、Googleは静的フォームに基づいていました。検索したいものをテキストボックスに入力し、「検索」(または「I'm Feeling Lucky」)を押します。これを行うと、HTTP POST要求がクライアントからサーバーに送信されます。リクエストには、クライアントが指定した場所、情報の送信先、そしてもちろん情報自体が含まれます。この情報はサーバーによってダイジェストされ、サーバーはそれを使用して検索結果を見つけ、サーバーはこれらの結果のページを作成してユーザーに送信します。または、検索語を「クエリ文字列」に変換し、「リダイレクト」で応答できます。ブラウザがメッセージで指定された別のURIに別のリクエストを送信するリクエスト。ブラウザがこれを実行すると、サーバーはそのページを作成して送信ます。
  13. 現代では、Googleのフロントページははるかに動的です。入力すると、ブラウザ内のクライアント側で実行されるJavaScriptは、入力したものを「サイドチャネル」に沿ってGoogleに送信します(通信には同じプロトコルを使用しますが、ブラウザ自体がページ全体のリクエストを送信するわけではないため、ブラウザの画面は完全にはクリアされず、再描画されません)。フロントページの場合、これはクエリヒントを提供するために使用されます(他の人が最近そうしているために検索対象の可能性があるものに対するオートコンプリートの提案)。結果ページでも同じことを行いますが、ブラウザでページ全体をリロードすることなく、リアルタイムの検索結果を提供し、ページを完全に再描画するためにも使用できます。これらのタイプのトリックは、AJAX(Asynchronous JavaScript and XML、

この映画は、大学の新入生の「IT入門」クラスで見せたもので、基本は親しみやすく、類似した形式で示されています。決して技術的ではありませんが、このパズルのピースの概念的な概要を提供します。


1
これは良い答えですが、ほとんどの人が不必要だと考えるであろう多くの詳細を明らかにしています。(これらの詳細を追加する必要があると言っているわけではありません。あなたの投稿が示唆している以上のことが進行中であることを指摘しているだけです。)
greyfade

1
はい、DNSルックアップのためにTCPとUDPを比較する必要があります。TCPの場合、TCP 3ウェイハンドシェイクに移行する必要があります。それは....何とかドメインネームサーバは、(事前にDHCPやネットワーク構成によって)定義されたシステムを想定し、おそらく安全です
アランShutko

1
@AlanShutko -私がやる 3ウェイハンドシェイクを言及。前後のSYN / SYN-ACK / ACK。UDPについては言及しませんでしたが、UDPはDNSの主要なプロトコルです。
キース

@KeithS、おっと、あなたは正しい、私はDNSをチェックするときに探していました。後でではありません。512バイトを超える応答があり、切り捨てられた場合、DNSはTCPにフォールバックする可能性があります。
アランシュトコ

1
ANS-「Authoritative Name Server」、特定のドメイン名のエンドポイントに関する直接の知識と責任を持つDNSサーバー。ALDはタイプミスでした。投稿は両方の点でより明確になるように編集されました。
キース

1

Cookieとファイアウォールについての言及を省くことは、ここでいくつか欠けていることです。「Google.com」がユーザーを認識し、Googleにログインしていない人とは異なるページを提供できるように、送信されるCookieについて何か言うことがあります。また、スマートフォン、タブレット、または通常のコンピューター(ラップトップまたはデスクトップ)でこれを検索している人はどこにいるのかという質問もあります。

あなたが尋ねることを意図されていたが、それはここでの要因ではないかもしれないいくつかの副質問があるかもしれないのだろうか。これは、インターネットが少し広くなり、電子メールや私が考えている他のものが含まれるので、Webがどのように機能するかという問題です。


私の推測では、それはあなたのコミュニケーション能力のテストでした。かなり技術的な質問を取り、それを分解して、技術的および非技術的が理解できるようにすることはできますか?ブラウザで「Google.com」のホームページを表示している人に説明を求められたら、どのような質問に答えますか?たくさんの仮定をしたり、質問をしたりしますか?いくつかの点で、これはホワイトボードの質問と類似していると考えており、物事は曖昧なままであるため、正確な正しい答えを出すために質問するか、答えを出す際に仮定を立てます。


5
インターネットについての質問は、私の考えでは、一般的なネットワーキングについての質問になるでしょう。ルートはどのように見つかりますか?パケットの目的と意味は何ですか?また、どのように情報を送信しますか?パケットのTCP抽象化はどのように機能しますか?しかし、質問は本当に曖昧です。おそらく、HTTP、HTML、ネットワークスイッチ、ISP、バックボーンなどについて尋ねているのかもしれません。おそらく、NICフレームバッファーがどのようにスクレイプされ、OS、CPU、またはNICがそれを行うのかを知りたい...
ジミー・ホッファ

@JimmyHoffa:確かに、それは広範な質問です。それを聞いたインタビュアーは、ページリクエストからページ取得まで、物事のネットワーキング側に焦点を当てていると思うような方法でそれを言いました。たくさんのことがあり、技術的に十分であり、私が話していることを知っていれば、どのルートをとっても幸せになると思います。
メガキャノン

1
私も彼らはあなたがアイデアをどれだけうまく伝えることができるかを知るための非技術的な答えを求めていると思います。多くの場合、私たちは木のために森を失い、全体像を見ることができません。
マット

@JimmyHoffa、良い点。DNSサーバーのIPアドレスから始めて、ネットマスクを介して同じサブネット上にあるかどうかを確認し、そうであれば、ARPを使用してそれらを見つける必要があります。それ以外の場合、パケットはゲートウェイに送信されます。
アランシュトコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.