#1. http 応答コード 301 および 302 は何を表しますか?違いは何ですか?
回答: 301 と 302 はどちらも HTTP ステータス コードで、どちらも特定の URL が転送されたことを表します。
違い:
301 リダイレクト: 301 は永続的に移動されたことを表します。
302 リダイレクト: 302 は一時的に移動されたことを表します。
(推奨チュートリアル: java 入門プログラム )
2. フォワードとリダイレクトの違いは何ですか?
Forward と Redirect は、直接転送と間接転送という 2 つのリクエスト転送方法を表します。
直接転送方式 (Forward) では、クライアントとブラウザが 1 つのリクエストのみを発行します。サーブレット、HTML、JSP などの情報リソースに対して、2 番目の情報リソースがリクエストに応答し、リクエスト オブジェクト request に保存されます。オブジェクトは各情報リソースで共有されます。
間接転送方法 (リダイレクト) は実際には 2 つの HTTP リクエストであり、サーバーが最初のリクエストに応答すると、ブラウザは転送の目的を達成するために別の URL にリクエストを送信できるようになります。
よくある例を挙げると:
直接転送は次のようなものです。「A は B にお金を借りるように頼みましたが、B はそれを持っていないと言い、B は C に借りに行きました。もし借りられなかったら、そのメッセージを A に伝えます。To A";
間接転送は次と同等です。「A は B にお金を借りるように頼んだが、B はお金を持っていないと言ったので、彼はAにCからお金を借りるように頼んだ。」
(関連ビデオ チュートリアルの推奨事項: java ビデオ チュートリアル)
3. tcp と udp の違いを簡単に説明します。
TCP は接続指向です (電話をかける場合など、最初にダイヤルして接続を確立する必要があります)。UDP はコネクションレス型です。つまり、データを送信する前に接続を確立する必要はありません。 。
TCP は信頼性の高いサービスを提供します。つまり、TCP 接続を介して送信されるデータはエラーがなく、失われず、繰り返されず、順番に到着しますが、UDP は配信に最善の努力を払っており、信頼性の高い配信は保証されていません。
Tcp は、チェックサム、再送制御、シーケンス番号識別、スライディング ウィンドウ、確認応答を通じて信頼性の高い伝送を実現します。たとえば、パケット損失時の再送制御は、順序が狂ったパケットの順序を制御するために使用することもできます。
UDP は TCP に比べてリアルタイム性が高く、作業効率が高いため、高速伝送とリアルタイム性が要求される通信やブロードキャスト通信に適しています。
各 TCP 接続はポイントツーポイントのみであり、UDP は 1 対 1、1 対多、多対 1、および多対多の対話型通信をサポートします。
TCP はより多くのシステム リソースを必要としますが、UDP はより少ないシステム リソースを必要とします。
4. TCP はなぜ 2 回ではなく 3 回握手をする必要があるのでしょうか?なぜ?
信頼性の高いデータ送信を実現するには、TCP プロトコルで通信する双方の当事者が、送信されたデータ パケットのうちのどれが相手方に受信されたかを識別するためのシーケンス番号を維持する必要があります。 3 ウェイ ハンドシェイク プロセスは、通信する双方の当事者がシーケンス番号の開始値を互いに通知し、相手がシーケンス番号の開始値を受信したことを確認するために必要なステップです。
ハンドシェイクが2回しかない場合は、せいぜい接続開始側の開始シーケンス番号しか確認できず、相手が選択したシーケンス番号は確認できません。
5. TCP スティッキー パケットがどのように生成されるのか教えてください。
(1) 送信者がスティッキー パケットを生成する
TCP プロトコルを使用してデータを送信するクライアントとサーバーは、多くの場合、長い接続状態を維持します (データは接続ごとに 1 回送信され、スティッキー パケットがない場合)、接続が切断されない限り、双方はデータの送信を続けることができます。しかし、送信されるデータ パケットが小さすぎる場合、TCP プロトコルはデフォルトで Nagle アルゴリズムを有効にし、これらの小さなデータ パケットをマージして送信します(バッファ データ送信はスタッキング プロセスです); このマージ プロセスは送信バッファ内で実行されます。つまり、データは送信時にすでにスティッキー状態になっています。
(2) 受信側がスティッキー パケットを生成する
受信側が TCP プロトコルを使用してデータを受信するときのプロセスは次のとおりです。モデルの下位部分はトランスポート層に渡され、トランスポート層のTCPプロトコル処理では受信バッファに配置され、アプリケーション層が能動的に取得します(C言語ではrecv、readを使用します)および他の関数); このとき、問題が発生します、つまり、プログラムで呼び出されたデータ読み取り関数がバッファ内のデータを時間内に取り出すことができず、次のデータが来てその一部がバッファに置かれます。データを読み取ると、それはスティッキー パケットになります。 (データを入れる速度 > アプリケーション層でデータを取得する速度)
詳しく知りたい方はインタビュー質問がある場合は、Java 面接の質問 にアクセスしてください。
以上が2020 年の新しい Java 面接の質問 - ネットワークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。