2022.10.07
TCP接続プロセス
TCP接続プロセス
(株)エクセムコンサルティング本部/APMチームホン・ジンファン
概要
今日、データを伝送する方式の中で、最もよく使われる方式でネットワークを使用しています。
しかし、大量のデータをネットワークを介して転送すると、物理的または論理的なデータ損失が発生します。
データ転送の際に、データの損失を最小限に抑えるために、現在最も一般的に使用されている転送プロトコルTCPの接続確立順序について調べてみましょう。
TCP(Transmission Control Protocol)について
TCPは、ネットワークプロトコルの国際標準規格OSI 7層(Open System Interconnect)の4層(Transport)に属し、3層(Network)のIPプロトコルと同様に使用されるため、「TCP / IP」とも呼ばれます。
TCPの使用の最大の目的は、コンピュータで実行されているプログラム間のデータを失うことなく確実に転送することです。

TCPヘッダ構造

名前 | 説明 |
Source Port | 送信ポート番号 |
Destination Port | 受信ポート番号 |
Sequence Number | TCPセグメント内のデータ送信バイト位置 |
Acknowledgment Number | 受信者の次のデータバイト順序番号 |
Data Offset | TCPヘッダーの長さ |
Reserved | 予約済みフィールド |
TCP Flags | 「下記別表参照」 |
Window | 受信側が受信できるデータサイズ |
Checksum | TCPヘッダデータを含むセグメント全体の計算値 |
Urgent Position | 緊急に処理する必要があるデータバイト位置 |
TCP Options | 接続の構成中の最大セグメントサイズオプション |
– TCPヘッダ構造のうち、接続確立に必要なTCP Flag構造について調べましょう。
説明 | |
URG(Urgent) | 特定(緊急)状況では、特定のデータを読みたい場合に使用 |
ACK(Acknowledgment) | 要求に対する確認応答に使用 |
PSH(Push) | ネットワークでのバッファリングバイパスとデータの即時通過に使用 |
RST(Reset) | TCP接続中に特異事項が発生し、強制終了時に使用 |
SYN(Synchronize) | クライアント、サーバのシリアル番号(同期化)を確認する際に使用 |
FIN(Finish) | TCP接続の終了時に使用 |
TCP接続確立順序
1. TCP通信方式は、データの安定性のために最初の接続時に、クライアント(Source)とサーバ(Destination)との間で3回の処理を行います。この過程を「Three-Way Hand Shake」と呼びます。
2. SYN [SYNchronous Idle]
– クライアントからサーバーIPへのTCP通信が可能であることを確認してください。

3. SYN [SYNchronous Idle] + ACK [ACKnowledgement]
– クライアントからサーバーIPへのTCP通信が可能であることを確認してください。

4. ACK [ACKnowledgement]
– クライアントでサーバーの通信可能を応答を確認し、データ転送を開始するとサーバーに通知します。


TCP接続の終了順序
TCP接続を終了するとき、接続と順序と同様に、データの安定性のためにサーバーとクライアント間のFIN [Finish]を介して安定的に終了する処理を行います。
1. FIN[Finish] + ACK[ACKnowledgement]
– クライアントからサーバーへの接続を終了するメッセージを送信します。

2. ACK[ACKnowledgement]
– サーバーがFINに応答した後、送信するデータがないことを確認してください。

- FIN[Finish] + ACK[ACKnowledgement]
– 送信するデータがないことを確認後、サーバーからクライアントに終了してもよいというメッセージを送ります。

4. ACK[ACKnowledgement]
– クライアントからサーバーに応答を送信して接続を終了します。


– 以下の画面は、TCP接続/終了シーケンスを全体として示す画面です。

結論
WAS、DB、Client環境を監視する際に多くの問題が発生しますが、その中で最も確認しにくい部分がまさにネットワーク部分だったようです。
もちろん、対応するサーバー – クライアントタスクの実行に関するログを詳細に残すことは、ネットワーク関連の問題に大きく役立ちますが、詳細ログを残すタスクに負荷がかかる可能性があるため、難しい部分があります。
このため、上記のTCP Dumpを生成して分析リストに追加すれば、もう少し正確な原因問題解決策が出てくると考えます。