ネットワーク

TCPとは

2019年6月15日

TCPとは

TCP(Transmission Control Protocol)とは、トランスポート層で動作する信頼性の高い通信プロトコルです。

通信プロトコルとは、通信のルールの事をいいます。例えば会話であればお互い「日本語」で話すことで会話が成り立ちます。片方が「日本語」で片方が「英語」だと会話になりせません。

通信も同じルールを決めて通信を行います。

TCPとは

TCPの特徴は、データを受け取った受信側が「受け取った」というデータ(確認応答)を返信します。

送信側は、受信側からの「受け取った」という返信を確認することで、確実にデータが送られたことを確認することが出来ます。

仮にデータの送信に失敗した場合は、一定時間後に再送する仕組みがあります。

TCP再送信

TCPは相手との1対1での通信を実現し、まるで会話をするような信頼性のある通信プロトコルです。

スポンサーリンク

ポイント

TCPは信頼性の高い通信プロトコルです。

TCPヘッダ

TCPで通信する時の、TCPヘッダは以下です。TCPでデータを送信する時は、送信データだけではなく、「送信元ポート番号」などの情報もTCPヘッダとして付与されます。

TCPヘッダ

項目ビット数説明
送信元ポート番号16 bit送信元のポート番号
宛先ポート番号16 bit宛先のポート番号
シーケンス番号32 bit送信するデータの順番を表す番号。シーケンス番号で「このデータはデータ全体の中でどの位置のデータなのか」を判定します
確認応答番号32 bitどの位置までデータを受信したかを表す番号
データオフセット4 bitTCPヘッダの長さ示す値
予約6 bitすべてビット「0」が入る。将来の拡張のために用意されています
コントロールフラグ6 bit下記の1ビットのフラグが存在します
URG(Urgent フラグ)
ACK(Acknowledgement フラグ)
PSH(Push フラグ)
RST(Reset フラグ)
SYN(Synchronize フラグ)
FIN(Fin フラグ)
ウィンドウサイズ16 bit受信側の受信可能なデータサイズを送信側に通知するために
使用。送信側では、このフィールドにセットされたウインドウサイズを見て、送信可能な最大データサイズを判断します
チェックサム16 bitTCPヘッダとデータ部分のエラーチェックを行うために使用します
緊急ポインタ16 bit緊急データの開始位置を示す情報
オプション可変長TCP 通信で機能を付加する場合に使用されるフィールド
パディング可変長TCPヘッダの長さを32ビットの整数にするためにPaddingとして空データの 「 0 」 の値を入れることにより調整します

TCP 3ウェイハンドシェイク

TCPはコネクション型プロトコル。コネクション型とは、通信相手の応答があって開始する通信のことをいいます。

データ転送を行う前に、通信相手とコネクションの確立を行います。この通信開始とのコネクションの確立を3ウェイハンドシェイクといいます。

 

3ウェイハンドシェイクのイメージは、下記図の通りです。

※SYNは質問、ACKには回答が入ります。

3ウェイハンドシェイク

 

1. コンピュータAは、コンピュータBにコネクションの確立を要求します。TCPヘッダには、SYN:1、ACK:0、シーケンス番号は最初はランダムの値が入ります。SYNが1なので、質問を投げている形です。

 

2. コンピュータBは、コンピュータAからのコネクション要求に応答します。そしてコンピュータBからもコネクションの確立を要求します。TCPヘッダには、SYN:1、ACK:1が入ります。SYNが1、ACKが1なので、質問と回答を投げている形となります。

 

3. コンピュータAは、コンピュータBからのコネクション要求に応じます。これでTCPの接続が確立されました。TCPヘッダには、SYN:0、ACK:1が入ります。ACKが1なので、回答を投げている形となります。

helpful