webdevqa.jp.net

ブラウザにURLを入力してからページが読み込まれるまで、ステップバイステップで正確に何が起こりますか?

私は最近、就職の面接で、特にfacebook.comと入力したときに、これを尋ねられました。プログラミングのポジションに応募して以来、面接対象者が何を探していたのかよくわかりませんが、この質問に高いレベルで答えるにはどうすればよいでしょうか。

2
KingKongFrog

ブラウザからのHTTPリクエストの概要:

  1. アドレスバーに「facebook.com」と入力します。
  2. ブラウザはこれを数値のIPアドレスに解決します(これはOSによってキャッシュされるか、DNSサーバーへのトリップが必要になる可能性があります)。
  3. ブラウザは「HTTP/GET」リクエストを発行します。これは、ブラウザ、ユーザー設定(優先言語など)、およびそのドメインに保存されているCookieに関するメタデータを含むHttpRequestを渡します。
  4. Facebookサーバーがリクエストを受信し、そのコードがレスポンスを作成し始めます。
    • Facebookは、Cookieを含む渡された情報を使用して、ユーザーが誰であり、どの情報を送り返すかを決定します。
  5. ステータス行(200 OKなど)を含むHTTP応答がFacebookから返されます。 content-typeなどとHTML本文を含むヘッダー。
  6. ブラウザは応答を受信し、表示のために解析を開始します。
    • HTML本文には、CSS、JS、および画像へのリンクが含まれます。これらはすべて、サーバーへの追加の呼び出しをトリガーして、これらのビットを取得します
  7. ブラウザレイアウトエンジンは、表示用の最終ページの組み立てを開始します。
    • CSS情報により、ページのレイアウトと外観が変わる場合があります
    • JSおよびDHTMLは、ページのレイアウトを変更する場合があります
  8. 最終ページが組み立てられ、エンドユーザーにレンダリングされます。

ウィキペディア ハイパーテキストプロトコル の記事は、HTTPリクエストのライフサイクルの良い出発点です。

4
Brad Patton

これがプログラミング固有であるか、ネットワーク固有であるか、オペレーティングシステム固有であるかについては言及しなかったので、ネットワークレベルでの使用を想定することにしました。

表示したいサイトのアドレスを入力してEnterキーを押すと、マシン/ブラウザは最初に、そのドメインのIPアドレスがブラウザレベルまたはオペレーティングシステムレベルのどこかにキャッシュされているかどうかを確認します。そうでない場合は、DNSサーバーに接続して、そのサイトのドメイン名のIPアドレスを解決しようとします。オペレーティングシステムは、接続可能な1つ以上のDNSサーバーのIPアドレスで構成されたDHCPを介して手動または自動で実行されます。

ある時点で、照会されたDNSサーバーは、入力したドメイン名に関連付けられたサーバー/デバイスのIPアドレスで応答します。これで、TCP/IPパケットを作成し、入力したドメインにネットワーク経由で送信して、データの通信と転送を開始し、要求したコンテンツを提供できるようになりました。

1
Mogget

ほとんどすべての面接の質問と同様に、面接官は特定の答えを探していませんでしたが、プロセスの理解のレベルを確認し、思考プロセスを説明するように求めていました。おそらく、彼らはさまざまなコンポーネント(ブラウザー、ISP、HTTP、TCP、DNS、カーネル、Webサーバー)を識別し、それらがどのように相互作用したかを説明できるかどうかを探していました。

1
David Schwartz

私はそれを試してみますが、それは(明らかに)サイトごと、ブラウザごと、そして彼が望んでいたものや彼が来ていた方向によって大きく異なる可能性があります。ある採用マネージャーは、プロセス全体の非常に詳細なアプローチと、Facebookに精通していること(Facebookプラグインなどで作業する可能性がある場合)が必要な場合がありますが、私はあまり詳しくありません。プロセスのものは省略します。

  1. アドレスバーに「Facebook.com」と入力します
  2. DNSはに解決する必要があります
  3. Facebookが読み込まれると、ユーザーが以前にそこにいたかどうかに基づいてCookieを検出または作成します
  4. Cookieがある場合、Facebookはユーザーにログインする場合があります。ログインしていない場合は、サインインページが表示されるか、サインアップページが表示されます。
  5. ユーザーがログインし、大文字と小文字を区別しない電子メールアドレス、およびマスクされたsecureStringパスワードボックスが使用されます
  6. ログインボタンが選択され、安全なパスワードがソルトされ、ハッシュされ、提示されたユーザー名の適切に保存されたパスワードと比較され、両方がレコードと一致することを確認します。
  7. 成功した場合はFacebookの「WALL」を表示し、そうでない場合は失敗したメッセージを表示して再試行を許可します。 JSは、最大X回の試行に対して無効な試行を保存し、ブルートフォースの場合の無効な試行に対してユーザーレコードに書き込む必要があります。
0
Austin T French