ネットワークプロトコルについての楽しい話-講義2 |ネットワークレイヤーの本当の意味は何ですか?

関連するブログ、参照この一連のオタクの時間-ネットワークプロトコルについての何か

ネットワークプロトコルについての楽しい話-講義2 |ネットワークレイヤーの本当の意味は何ですか?

私は長い間、コンピュータネットワーク関連の仕事に携わってきましたが、コンピュータネットワークには顕著な特徴があること、つまり、覚える必要があるだけでなく、その原理にも精通している必要がある分野であることがわかりました。多くの質問は理解されているようですが、詳しくお聞きすることを恐れており、あまりよく理解していないと思います。

前のセクションでは、後で説明するネットワークプロトコルをリストしました。これらの協定は決して珍しいことではなく、すべての教科書が話し、あなたはそれらを覚えておく必要があります。試験はテストを受けるので、面接は尋ねます。卒業して就職しても、そのような質問には答えられないと言っても、基本的には筆記試験はハングアップしてしまいます。

レイヤー2デバイス、レイヤー3デバイス、レイヤー4 LB、およびレイヤー7 LBの中間層について聞いたとき、少し混乱していますか?これらのいわゆるレイヤーはわかりませんが、さまざまなプロトコルはどの特定の「機能」に対応していますか?

これらの4つの質問を本当に理解していますか?

教科書や教師は、非常に不適切な例えをすることがよくあります。なぜネットワークを階層化する必要があるのですか 異なるレベル間の通信には異なる方法があるため、これは合意と呼ばれます。たとえば、会社はゼネラルマネージャー、マネージャー、チームリーダー、従業員などの「レベル」にも分類されます。ゼネラルマネージャーにはコミュニケーションの方法があり、マネージャーとマネージャー、チームリーダーと従業員の間にもコミュニケーションの方法があります。同様のアナロジーを聞いたことがありますか?

次に、最初の質問が来ます。マネージャーが握手するとき、従業員は何をしているのですか?多くの人々は、接続を確立するためのTCPの3ウェイハンドシェイクプロトコルを聞いたことがあり、知識のポイントとしてそれを暗唱するでしょう。同様に、TCPが3つのハンドシェイクを実行する場合、IPレイヤーとMACレイヤーはどの操作に対応しますか?

上記の不適切なメタファーに加えて、教科書は各レベルに含まれるプロトコルをリストし、これらのプロトコルについてレイヤーごとに話し始めます。

しかし、これらの合意の間の関係はどうですか?しかし、話せる教科書はほとんどありません。

3番目の層を学習するときに、IPプロトコルにターゲットアドレスとソースアドレスが含まれていることが言及されます。3番目の層は、ルーティングプロトコルをよく学習します。ルートはリレーステーションのようなもので、元のアドレスAから宛先アドレスDに行き、ルーティングによって転送される2つのリレーステーションA-> B-> C-> Dを途中で通過します。

次に、2番目の質問が来ます。Aは次の転送ステーションがBであることを知っています。Aから送信されたパケットはBのIPアドレスをどこに置くべきですか?Bは次の転送ステーションがCであることを知っています。CのIPアドレスは、Bから送信されたパケットのどこに配置する必要がありますか?宛先アドレスがIPプロトコルに配置され、パケットがリレーステーションに到着した場合、最終的な宛先アドレスがDであることをどのようにして知ることができますか?

教科書では、シーンベースの例を通じてネットワークパッケージのライフサイクルが説明されていないため、混乱し、これらのプロトコルの実際のアプリケーションシナリオが何であるかがわかりません。

別の質問をします。2段目の機器と3段目の機器についてよく耳にする必要があります。レイヤー2デバイスは通常、MACレイヤーを扱います。次に、第7層で動作するHTTPパケットを送信します。第2層のデバイスを通過する必要はありませんか?それとも合格しても、第2層の機器はそれを処理しませんか?または別の言い方をすると、レイヤー2デバイスによって処理されるパケットにHTTPレイヤーのコンテンツがありますか?

最後に、総合的な質問をさせていただきます。コンピューターから、SSH経由でパブリッククラウドホストにログインします。どのプロセスを実行する必要がありますか?または、eコマースWebサイトを開くには、どのようなプロセスを実行する必要がありますか?詳細は多いほどよい。

実際の状況では、多くの人が答えないでしょう。彼らは各層に精通していますが、知識ポイントを接続することはできません。

上記の質問のいくつかはこのセクションで説明があり、一部はコース全体を実行します。幸い、後のセクションでスルーの例を示しますが、多くのレイヤーの詳細を説明した後、これらのナレッジポイントを簡単に組み合わせることができます。

ネットワークを階層化する必要があるのはなぜですか?

ネットワークを階層化する必要があるのはなぜですか?

ここでは、最初の質問について最初に説明します。なぜネットワークを階層化する必要があるのでしょうか。なぜなら、それは階層化される複雑なプログラムだからです。

コンピュータネットワークの概念を理解するには、ネットワークパケットが、ある形式のバッファまたはメモリのブロックであると想像することをお勧めします。同時に、あなたがネットワークパケットを処理するプログラムであり、このプログラムがコンピューター、サーバー、スイッチ、またはルーターで実行できると想像してください。たくさんのネットワークポートがあると想像して、特定のポートからネットワークパケットを受け取り、独自のプログラムで処理して、別のネットワークポートから送信します。

もちろん、ネットワークパケットのフォーマットは非常に複雑で、このプログラムも非常に複雑です。複雑な手順を階層化する必要があります。これはプログラム設計の要件です。たとえば、複雑なeコマースはデータベースレイヤー、キャッシュレイヤー、作成レイヤー、コントローラーレイヤー、アクセスレイヤーにも分割され、各レイヤーはこのレイヤーでの作業に重点を置いています。

プログラムはどのように機能しますか?

プログラムはどのように機能しますか?

私たちはプログラム「あなた」の作業プロセスを簡単に想像できます。
ここに画像の説明を挿入
ネットワークパケットがネットワークポートを通過すると、そのパケットが表示されます。まず、パケットを受信して​​処理するかどうかを確認します。一部のネットワークポートは混合モードで構成されており、すべての通過が取り込まれます。

取り込んだ後、対応するプログラムに引き渡されます。したがって、process_layer2(バッファ)を呼び出します。もちろん、これは偽の関数です。しかし、あなたはその意味を理解し、そのような機能がなければならないことを知っています。この関数は何をしますか?バッファーから2番目のレイヤーのヘッダーを削除し、ヘッダーの内容に従って実行する必要があることを確認します。

このパケットのMACアドレスが自分のものと一致することがわかったとすると、指示が送信されるため、process_layer3(バッファ)を呼び出す必要があります。この時点では、前の関数の処理中に削除されたか、開始オフセットが少し移動したため、バッファにレイヤー2ヘッダーが存在しないことがよくあります。この関数では、3番目のレイヤーのヘッダーを削除して、それが自分に送信されたかどうか、または自分で転送したいかどうかを確認します。

判断する方法は?IPアドレスがあなたのものでない場合は転送する必要があり、IPアドレスがあなたのものである場合は送信する必要があります。IPヘッダーのラベルに従って、3層ヘッダーを削除し、次の処理層に進みます。それは、process_tcp(バッファー)またはprocess_udp(バッファー)を呼び出すことですか?

このアドレスがTCPであると仮定すると、process_tcp(バッファ)が呼び出されます。現時点では、バッファに3層のヘッダーはありません。4層のヘッダーをチェックして、これが開始、応答、または通常のデータパケットであるかどうかを確認し、さまざまなロジックで処理する必要があります。それが開始または応答である場合、応答パケットが送信される可能性があり、それが通常のデータパケットである場合、それは上位層に引き渡される必要がある。誰に?process_http(バッファ)関数はありますか?

いいえ、ネットワークパケットハンドラーの場合は、process_http(バッファー)を用意する必要はありませんが、アプリケーションで処理する必要があります。どのアプリケーション用ですか?第4層のヘッダーにはポート番号があり、異なるアプリケーションが異なるポート番号をリッスンします。ブラウザーアプリケーションがこのポートでリッスンしていることがわかった場合は、ブラウザーに送信するだけです。ブラウザーがそれを処理する方法については、それはあなたとは何の関係もありません。

ブラウザは自然にHTMLを解析してページを表示します。コンピューターの所有者は、ページを見てマウスをクリックしたことを非常に喜んでいました。マウスクリックはブラウザによってキャプチャされます。ブラウザは、別のHTTP要求が開始されようとしていることを認識しているため、要求を送信するためにポート番号が使用されます。

send_tcp(バッファ)を呼び出す必要があります。言うまでもなく、バッファにはHTTPリクエストのコンテンツが含まれています。この関数にTCPヘッダーを追加し、送信元ポート番号を記録します。ブラウザーは宛先ポート番号を提供します。これは通常、ポート80です。

次に、send_layer3(バッファ)を呼び出します。バッファにはすでにHTTPヘッダーとコンテンツ、およびTCPヘッダーがあります。この関数にIPヘッダーを追加し、送信元IPアドレスと宛先IPアドレスを記録します。

次に、send_layer2(バッファ)を呼び出します。バッファにはすでにHTTPヘッダーとコンテンツ、TCPヘッダー、およびIPヘッダーがあります。この関数では、MACヘッダーを追加し、ソースMACアドレスを記録して、マシンのMACアドレスとターゲットMACアドレスを取得します。ただし、これは知っているかどうかによって異なり、わかっている場合は追加します。わからない場合は、特定のプロトコル処理プロセスを実行してMACアドレスを見つける必要があります。とにかく、1つは入力する必要があり、空白のままにすることはできません。

バッファの内容が完全である限り、すべての準備が整い、ネットワークポートを介してバッファを送信でき、プログラムとしてのタスクが完了します。

レイヤー間の関係を解明する

レイヤー間の関係を解明する

このプロセスを知った後、元のパズルをもう一度見てみましょう。

1つは階層化されたメタファーです。パッケージの層の意味を表現できないすべてのメタファーは不適切です。ゼネラルマネージャーは握手し、そこに従業員がいる必要はありませんゼネラルマネージャーと従業員の間で議論する必要は何もありませんが、これはオンラインの世界では当てはまりません。ゼネラルマネージャーが連絡するとき、マネージャーはゼネラルマネージャーをポケットに入れ、チームリーダーはマネージャーをポケットに入れ、従業員はチームリーダーを人形のようにポケットに入れます。部長がいないまま直接コミュニケーションを取るのは不適切でした。

実生活では、従業員はしばしば1つの文を言い、チームリーダーが2つの文を追加し、次にマネージャーが2つの文を追加し、最後にゼネラルマネージャーが2つの文を追加します。しかし、オンラインの世界では、ゼネラルマネージャーが話し、マネージャーが2つの文を追加し、チームリーダーが2つの文を追加し、従業員が2つの文を追加します。

3ウェイハンドシェイク中にIPレイヤーとMACレイヤーは何をしていますか?もちろん、TCPはすべてのメッセージをIP層とMAC層で送信します。TCPがメッセージを送信するたびに、IP層とMAC層のすべてのメカニズムを再度実行する必要があるためです。そして、TCPスリーウェイハンドシェイクだけが表示されます。実際、IPレイヤーとMACレイヤーは、このために長い間忙しく働いています。

ここで覚えておくべきことの1つは、パッケージがネットワーク上で実行されている限り、それは完全です。下層はなく、上層がない場合があります。

したがって、TCPプロトコルの場合は、3ウェイハンドシェイクまたはリトライが必要であり、パケットを送信する場合は、IPレイヤーとMACレイヤーが必要です。

よく聞かれる質問ですが、私はそのマシンのIPアドレスを知っているので、直接メッセージを送りました。MACアドレスは何のために必要ですか?ここで重要なのは、MACアドレスがないとメッセージを送信できないことです。

したがって、HTTPプロトコルのパケットがネットワーク上で実行される場合、それは完全でなければなりません。このパッケージが通過する機器に関係なく、完全です。

いわゆる2層装置と3層装置は、これらのデバイスの実行手順が異なります。HTTPプロトコルパケットはレイヤ2デバイスを通過し、レイヤ2デバイスはネットワークパケット全体を受信します。HTTP、TCP、IP、MACがあります。レイヤー2デバイスとは何ですか?MACヘッダーを削除して、それが破棄されているか、転送されているか、そのままにされているかを確認します。3層デバイスとは何ですか?MACヘッダーを削除した後、IPヘッダーを削除して、破棄、転送、またはそのままにされているかどうかを確認します。

まとめ

今日の内容を要約すると、ネットワークプロトコルの動作モードを理解するには、2つのヒントがあります。

  • あなたがネットワークパケットを処理するプログラムであることを常に想像してください。ネットワークパケットを取得する方法、ルールに従ってパケットを処理する方法、送信する方法。
  • 常に原則に留意してください。パッケージがネットワーク上で実行されている限り、パッケージは完全です。下層はなく、上層がない場合があります。

最後に、2つの考えてみよう。

  1. ゼネラルマネージャーと従業員の間のアナロジーが不適切だと思う場合、あなたはより適切なアナロジーを持っていますか?
  2. ネットワークプロトコルを学ぶには、IPの概念が最も基本ですが、IPアドレスの確認方法を知っていますか?
公開された40元の記事 ウォンの賞賛1 ビュー4976

おすすめ

転載: blog.csdn.net/aha_jasper/article/details/105525982