まず、アリババとSFエクスプレスの面接の質問を見てみましょう。
Alibaba の面接の質問: HTTP プロトコルについてどのくらい知っていますか? HTTP と HTTPS の違いは何ですか? HTTPS のセキュリティはどのように実装されていますか?
SF Express Interview の質問: http Explain
(学習ビデオ共有: Java ビデオ チュートリアル)
詳細な回答は次のとおりです:
1. HTTP の概要
HTTP プロトコルは、Hyper Text Transfer Protocol の略称です。 HTTP プロトコルはクライアント/サーバー アーキテクチャで動作します。ブラウザは HTTP クライアントとして、URL を介してすべてのリクエストを HTTP サーバー、つまり WEB サーバーに送信します。 Webサーバーは、受信したリクエストに基づいて応答情報をクライアントに送信します。
2. HTTP プロトコルの特性
接続なし: 接続なしの意味は、各接続が 1 つのリクエストのみを処理するように制限することです。サーバーはクライアントの要求を処理し、クライアントの応答を受信した後、接続を切断します。この方法により、送信時間が節約されます。
ステートレス: HTTP プロトコルはステートレス プロトコルです。ステートレスとは、プロトコルにトランザクション処理のためのメモリ機能がないことを意味します。ステータスがないということは、後続の処理で以前の情報が必要な場合にその情報を再送信する必要があることを意味し、その結果、接続ごとに転送されるデータ量が増加する可能性があります。一方、事前の情報が必要ない場合、サーバーはより速く応答します。
3. HTTP ステータス コード
1xx: 指示情報 – リクエストが受信されたことを示し、処理を続行します。
2xx: 成功 – リクエストが完了したことを示します。正常に受信されました、理解、受け入れます
3xx: リダイレクト – リクエストを完了するにはさらにアクションを実行する必要があります
4xx: クライアント エラー – リクエストに構文エラーがあるか、リクエストを実行できません
5xx: サーバー側エラー – サーバーは要求を満たせませんでした 法的要求
一般的なステータス コード:
200 OK //客户端请求成功400 Bad Request //客户端请求有语法错误,不能被服务器所理解401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务404 Not Found //请求资源不存在,eg:输入了错误的URL500 Internal Server Error //服务器发生不可预期的错误503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
4. HTTP の仕組み
HTTP プロトコルは、Web クライアントが Web サーバーに Web ページを要求する方法、およびサーバーが Web ページをクライアントに送信する方法を定義します。 HTTP プロトコルは要求/応答モデルを使用します。クライアントは、リクエスト メソッド、URL、プロトコル バージョン、リクエスト ヘッダー、およびリクエスト データを含むリクエスト メッセージをサーバーに送信します。サーバーは、プロトコルのバージョン、成功またはエラー コード、サーバー情報、応答ヘッダー、および応答データを含むステータス行で応答します。
HTTP リクエスト/レスポンスの手順は次のとおりです:
1. クライアントが Web サーバーに接続します
HTTP クライアント (通常はブラウザ) は、Web サーバーと通信します。 Web サーバー サーバーの HTTP ポート (デフォルトでは 80) への TCP ソケット接続を確立します。たとえば、http://www.baidu.con などです。
2. HTTP リクエストの送信
TCP ソケットを介して、クライアントは Web サーバーにテキスト リクエスト メッセージを送信します。リクエスト メッセージは、リクエスト行で構成されます。リクエストヘッダー、空行、リクエストデータの 4 つの部分で構成されます。
3. サーバーはリクエストを受け入れ、HTTP レスポンスを返します
Web サーバーはリクエストを解析し、リクエストされたリソースを見つけます。サーバーはリソースのコピーを TCP ソケットに書き込み、クライアントがそれを読み取ります。応答は、ステータス行、応答ヘッダー、空行、応答データの 4 つの部分で構成されます。
4. 接続を解放します TCP 接続
接続モードがクローズの場合、サーバーは積極的に TCP 接続を閉じ、クライアントは受動的に接続を閉じて、 TCP 接続; 接続モードがクローズの場合 キープアライブの場合、接続は一定期間維持され、その間リクエストを受信し続けることができます;
5. クライアント ブラウザHTML コンテンツを解析します。
クライアントのブラウジング サーバーは最初に、リクエストが成功したかどうかを示すステータス コードのステータス行を解析します。次に、各応答ヘッダーが解析され、応答ヘッダーは後続の HTML ドキュメントに数バイトとドキュメントの文字セットを伝えます。クライアントのブラウザは、応答データ HTML を読み取り、HTML の構文に従ってフォーマットし、ブラウザ ウィンドウに表示します。
たとえば: ブラウザのアドレス バーに URL を入力して Enter キーを押すと、次のプロセスが実行されます。
1. ブラウザは DNS サーバーに、URL 内のドメイン名に対応する IP アドレスを解決するように要求します。 ;
2、IP アドレスを解析した後、IP アドレスとデフォルトのポート 80 に基づいてサーバーとの TCP 接続を確立します;
3. ブラウザは、ファイル (対応するファイル) を読み取るための HTTP リクエストを発行します。 URL のドメイン名の後の部分)、リクエストのレポート テキストは TCP スリーウェイ ハンドシェイクの 3 番目のメッセージのデータとしてサーバーに送信されます;
4. サーバーはブラウザーのリクエストに応答し、対応する HTML テキストをブラウザに送信します;
5. TCP 接続を解放します;
6. ブラウザは HTML テキストを変換し、コンテンツを表示します;
(関連するインタビューの詳細はこちら)質問がある場合は、こちらをご覧ください: Java 面接の質問と回答 )
5. HTTP と HTTPS の違いは何ですか
HTTPS: セキュリティを目的とした HTTP チャネルです。簡単に言えば、安全なバージョンです。以下に SSL 層を追加しますが、HTTPS のセキュリティ基盤は SSL であるため、暗号化の詳細には SSL が必要です。
HTTPS プロトコルの主な機能は、データ送信の安全性を確保するための情報セキュリティ チャネルを確立することと、Web サイトの信頼性を確認することの 2 種類に分類できます。
HTTPS と HTTP の主な違いは次のとおりです:
1. https プロトコルでは、ca から証明書を申請する必要があります。一般に、無料の証明書は少なく、そのため一定の手数料が必要となります。
2. http はハイパーテキスト転送プロトコルであり、情報は平文で送信されますが、https は安全な SSL 暗号化送信プロトコルです。
3. http と https はまったく異なる接続方法を使用し、使用するポートも異なります。前者は 80、後者は 443 です。
4. http 接続は非常にシンプルでステートレスです。HTTPS プロトコルは、SSL HTTP プロトコルから構築されたネットワーク プロトコルで、暗号化された送信と ID 認証を実行でき、http プロトコルよりも安全です。
6. HTTPS のセキュリティはどのように実装されていますか?
(1) 顧客は https URL を使用して Web サーバーにアクセスします。要件 Web サーバーとの SSL 接続を確立します。
(2) クライアントのリクエストを受信した後、Web サーバーは Web サイトの証明書情報 (証明書には公開キーが含まれています) のコピーをクライアントに送信します。
(3) クライアントのブラウザと Web サーバーは、SSL 接続のセキュリティ レベル (情報暗号化のレベル) のネゴシエーションを開始します。
(4) クライアントのブラウザは、双方が合意したセキュリティ レベルに基づいてセッション キーを確立し、Web サイトの公開キーを使用してセッション キーを暗号化し、Web サイトに送信します。
(5) Web サーバーは、独自の秘密キーを使用してセッション キーを復号化します。
(6) Web サーバーはセッション キーを使用してクライアントとの通信を暗号化します。
関連する推奨事項: Java 入門チュートリアル
以上がJava インタビュー HTTP および HTTPS プロトコルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。