コンピュータネットワークプロトコルの--tcp-深い理解

  知識が断片化しすぎて、些細なので、痛みを伴う学習曲線ですが、この記事は、知識ベースのTCPトランスポート層プロトコルに関連した内容をまとめたもの、そして私の理解のいくつかを追加しているため、近い将来、コンピュータネットワークを学習するプロセスでは、何の技術革新はありません、不適切な場合は理解して、前方に感謝を入れてください!

まず、7層のネットワーク伝送、またはTCP / IPの4層モデルのためのモデルとがあるコンピュータネットワークで、アカウントの実行について持っていたように、その後、第1項に基づくTCP / IPの4層モデル:

1.データリンク層:0と1は、ホストの物理アドレスを特定するために、データフレームを定義するためにグループ化され、転送データ

2.ネットワーク層:MACアドレス、外部ネットワークパケットにIPルーティングにより転送され、ロケーションネットワークを確認し、IPアドレスを定義

3.トランスポート層:(ソケットを使用)、ポートを定義するホストプロセスの身元を確認するために、プロセスは、データパケットに対応します

4.アプリケーションレイヤ:データフォーマットが定義され、復号化に係るデータフォーマット

トランスポート層に基づいて、全く確認メカニズムがUDP存在しないので、多くのプロトコルは、トランスポート層プロトコルのパケット(追加タグ付けされた、カプセル化されたデータ)に基づいているUDPプロトコルとして、収集する方法、渡す方法を指定し、そこでありますまず、パケットが送信されると、接続が成功したかどうか、第二を知らない2つの側面を送信する前に、それは、貧しい人々の信頼性、TCPプロトコルが生まれた。この時間を受信したかどうかを知ることができない、単にUDPプロトコルの確認応答メカニズムが存在することを意味(もちろん、UDPプロトコルは、等、マルチキャスト、ブロードキャストすることができ、このような伝送速度などの多くの利点を有し、特に2つの補数の各アプリケーションは、突出するように実際の特定に基づいて)

 

まず、

TCPは、ストリーム指向のプロトコルであり、UDPはメッセージ指向のプロトコルのデータですが、私はこれらの言葉は、先生がよく言わ信じているが、具体的には、(私はとにかくだ)何を意味するのか説明していませんでした

1.TCP

  私たちは、必ずしも関係していない貯水池があることは、あなたが水を取ることができます仮定し、その中に水を注ぐが、その後2と水を注ぎ、その後は5分ごとに、次に終了した水を注ぐことができ、その後、どのくらいの水に沈みます以下どれだけの水が、どのくらいの水、どのくらいのプールの水は、それ以外の水は、オーバーフロービューのTCP点と組み合わされ、リザーバの容積を超えることができないであろう、プールはカーネル内の受信バッファに似て、送信したい注ぎ受信データを受信した水のようなデータは、あなたが100のバイトを送信し、TCPを介してあなたが書き込みコールを1つだけのデータを送信するような他の端部に接続されているが、他の10個の画分、10のバイト毎に採取してもよいです。あなたはまた、10回の書き込み各10バイトを呼び出すことができますが、他の側は、一度収穫することができます。しかし、あなたが送信するデータの量は、受信バッファ(フロー制御)の反対側よりも大きくすることはできませんあなたは、単に余分なデータを送信する場合は、キャッシュの他の側面は、それが廃棄された余分なデータを置くいっぱいです。

2.UDP

  受信端末で読み取り、書き込みを呼び出すためのさまざまなUDPおよびTCP、送信側に数回は、同じ回数を読まなければなりません。UPDパケットは、メッセージを読むことができ、それぞれの受信時に、基づいており、そしてバッファは、パケット長、次いで過剰廃棄される部分よりも小さい場合、メッセージ・パケットは、組み合わせることができません。彼はあなたがMSG_PEEKフラグを指定しない場合は、それぞれがメッセージを消費します操作を読んでいると述べました。

 

この差は、TCPとUDPの特性によって決定され、TCPはコネクション型、すなわち、である(接続スリーウェイハンドシェイク、4回をオフに振る)進行中の接続中に、データがソケットで受信されます(メッセージは考慮されていないものを傍受)、そのため、私たちはそのデータは、それぞれが自身の選択を読んでどのくらいのデータへと、ライン上の秩序の到着である保証知っていた同じホストによって発行されました。

UDPはコネクションレスプロトコルですが、それは限り、受信側はIPとポートを知っているようであり、そしてネットワークが到達可能である、任意のホストが受信側にパケットを送信することができます。このとき、1は複数のデータパケットを読むことができるならば、それは地獄が緩んで破っただろう。例えば、ホストAは、パケットP1を送信し、Bは、複数のメッセージがデータを読み取ることができる場合、それはP1とP2となり、パケットP2を送信するホストにデータがマージされ、そのようなデータは無意味ですA。


II。

1.TCPのバッファを送受信

  トランスポートプロトコルTCPは一対一には、送信側と受信側が存在するであろう、端へ、すなわち空間とカーネル空間ユーザ空間における2つのオペレーティングシステムが存在します。各カーネルTCPソケットコネクタは、我々が通常かのように呼んで、送信を持っており、受信バッファ、TCP全二重(スイッチ手段のデータを送信している間、両方同時に、データを受信することが可能です同時に話すことも、動作モードとTCPフロー(混雑)制御は、2つの独立したバッファ状態とバッファの充填に依存して)互いの声を聞くことができます。プログラミングでは、ソケットの両端には、このようなクライアントとして、二つの機能により送信し、recvをするサーバーにデータを送信し、クライアントがデータを送信するために呼び出しを送っているが、送信機能の実際の効果は、送信バッファカーネルソケットにデータをコピーしますエリア、その後、関数が返されます送信機能のみを送信すると、カーネルバッファのソケットに送信され、アプリケーション層バッファのデータをコピーすることで、送信は純粋にTCPによって行われ、何の関係が送信されていない(欺くために、名前を送信する必要はありませんA)、次は(RECVを待って、サーバーにデータを送信した後に)あなたはそれを推測することができ、読み込まれ、それだけでアプリケーション層にカーネルバッファ内のソケットで受信バッファからデータをコピーするだけrecv関数でありますアプリケーションは、ワードを読み取るためのrecv()へのコールされていない場合に内部、このデータは、対応するソケットバッファで受信されたであろう。TCPのために、バッファを受信すると、いっぱいになった後に、アプリケーション・プロセスは、読み込まれていない場合、アクションが起こっている:受信端の発信を通知する、受信ウィンドウは、(勝利= 0)が閉じられています。これは、スライディングウィンドウの実現です。TCPソケットは、このように信頼性の高いTCPトランスポートを確保し、バッファオーバーフローしないを受けています。広告ウィンドウサイズを介して送信される他のデータは許可されていませんので。これは、TCPフロー制御で、相手がデータ上で送信されたウィンドウサイズとウィンドウサイズを無視した場合、受信側TCPは、それを破棄します。

フロー制御メカニズム2.TCP

  以上の観点から、TCPフロー制御機構は、実質的に図以下、ウィンドウをスライドさせることによって達成され、詳細の参照は、TCP / IPコメント帳であってもよいです

 

 ACK:返信SYNを示し:接続勝利を要求する:利用できるウィンドウを示します

 

継続するには。

おすすめ

転載: www.cnblogs.com/xgmzhna/p/11505714.html