L
o
a
d
i
n
g
.
.
.

ホーム

お知らせ

製品・ソリューション

サービス

導入事例・パートナー

EXEM Academy・ブログ

会社情報

採用情報

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 NumberTCPセグメント内のデータ送信バイト位置
Acknowledgment Number受信者の次のデータバイト順序番号
Data OffsetTCPヘッダーの長さ
Reserved予約済みフィールド
TCP Flags「下記別表参照」
Window受信側が受信できるデータサイズ
ChecksumTCPヘッダデータを含むセグメント全体の計算値
Urgent Position緊急に処理する必要があるデータバイト位置
TCP Options接続の構成中の最大セグメントサイズオプション

– TCPヘッダ構造のうち、接続確立に必要なTCP Flag構造について調べましょう。

名前説明
URG(Urgent)特定(緊急)状況では、特定のデータを読みたい場合に使用
ACK(Acknowledgment)要求に対する確認応答に使用
PSH(Push)ネットワークでのバッファリングバイパスとデータの即時通過に使用
RST(Reset)TCP接続中に特異事項が発生し、強制終了時に使用
SYN(Synchronize)クライアント、サーバのシリアル番号(同期化)を確認する際に使用
FIN(Finish)TCP接続の終了時に使用
表-2] 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]

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

図-2] TCP接続シーケンス

TCPの終了順序

TCP接続を終了するとき、接続と順序と同様に、データの安定性のためにサーバーとクライアント間のFIN [Finish]を介して安定的に終了する処理を行います。

1. FIN[Finish] + ACK[ACKnowledgement]

– クライアントからサーバーへの接続を終了するメッセージを送信します。

2. ACK[ACKnowledgement]

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

  • FIN[Finish] + ACK[ACKnowledgement]

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

4. ACK[ACKnowledgement]

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

[図-3] TCP接続終了シーケンス

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

[図-4] TCP接続/終了全体シーケンス

結論

WAS、DB、Client環境を監視する際に多くの問題が発生しますが、その中で最も確認しにくい部分がまさにネットワーク部分だったようです。

 もちろん、対応するサーバー – クライアントタスクの実行に関するログを詳細に残すことは、ネットワーク関連の問題に大きく役立ちますが、詳細ログを残すタスクに負荷がかかる可能性があるため、難しい部分があります。

このため、上記のTCP Dumpを生成して分析リストに追加すれば、もう少し正確な原因問題解決策が出てくると考えます。


PHP Code Snippets Powered By : XYZScripts.com