1. 概要

伝送制御プロトコル(TCP)は、インターネットプロトコル(IP)トランスポート層で使用されるコネクション型プロトコルです。 TCPは、ネットワーク接続を使用して、サーバーとクライアントのペアがデータ要求と応答内にパッケージ化されたデータセグメントを使用してメッセージを交換できるようにします。

このチュートリアルでは、Synchronize Sequence Numbers(SYN)パケットを送信してこの接続を開始する方法を学習します。

2. TCP

TCPは、データを転送するための信頼性の高い接続を提供します。 さらに、TCPにはエラーチェックが組み込まれており、再送信および確認応答プロセスを介して送信されるすべてのデータの配信が保証されます。 その結果、TCPはインターネットで使用されている最も人気のあるプロトコルの1つです。

プロトコルには接続が必要です。 接続を開始するための最初の要求を行うのはクライアントの責任です。 TCPプロトコルヘッダーで提供される制御ビットは、この要求の接続を容易にします。

3. 制御ビット

原則として、すべてのTCP要求および応答パケットは、送信元ポート、宛先ポート、パケットシーケンス番号、パケット確認応答番号、データオフセット、ウィンドウサイズ、チェックサム、フラグなどの重要な情報を含むヘッダーセグメントで始まります。 TCPクライアントは接続を確立する必要があります。この目的を念頭に置いて、パケットヘッダーで使用可能なフラグを使用します:

具体的には、SYNフラグとACKフラグが必要です。 これらのフラグはヘッダーにあるビットであり、値1でオンに設定されるか、値0でオフに設定されます。 最終的に、フラグは、TCPクライアントとサーバーが受信したパケットの処理方法と応答方法を決定する方法です。では、SYNフラグを使用して接続を確立する方法を見てみましょう。

4. 3ウェイハンドシェイク

TCP会話が発生する必要があるときはいつでも、クライアントは接続を開始して確立しようとします。 サーバーは受動的に開いており、常に接続をリッスンしています。 クライアントによってサーバーに送信されたパケットは、アクティブなオープンハンドシェイクを開始します。 これは、接続を確立するために3つのステップが発生する必要があるため、このように名付けられた3ウェイハンドシェイクです。 さらに、これらの各ステップには特定のフラグ設定が必要です。 それでは、各ステップを確認しましょう。

4.1. SYN

まず、クライアントはシーケンス番号とヘッダーに設定されたSYNフラグビットのみのパケットを送信します。 この最初のパケットにより、クライアントは、クライアントから発信された要求パケットの最初のシーケンス番号を設定できます。 これは、クライアントの同期手順です。

4.2. SYN / ACK

次に、サーバーはSYNパケットにSYN/ACKパケットで応答します。 ここで、サーバーはSYNフラグビットとACKフラグビットの両方を設定します。 このパケットは、クライアントから送信されたシーケンス番号を確認することで確認します。 ただし、サーバーは、SYNとシーケンス番号をクライアントに返送して、サーバーから発信される応答パケットの最初のシーケンス番号を設定する必要もあります。 最初のステップと同様に、この応答パケットはサーバーの同期ステップです。

4.3. ACK

最後に、クライアントはサーバーのシーケンス番号要求を確認するACKパケットでSYN/ACKパケットに応答します。

この時点で、3ウェイハンドシェイクが完了し、シーケンス番号が同期され、接続が確立され、データをサーバーに送信できるようになります。 さらに、SYNビット/パケットを再度使用すると、プロトコルエラーが発生し、接続が終了する可能性があります。

5. 結論

このチュートリアルでは、正しいパケットを送信してTCP 3ウェイハンドシェイクを開始および完了することにより、クライアントとサーバーの間にTCP接続を作成する方法を学習しました。