ネットワーク

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 bit TCPヘッダの長さ示す値
予約 6 bit すべてビット「0」が入る。将来の拡張のために用意されています
コントロールフラグ 6 bit 下記の1ビットのフラグが存在します
URG(Urgent フラグ)
ACK(Acknowledgement フラグ)
PSH(Push フラグ)
RST(Reset フラグ)
SYN(Synchronize フラグ)
FIN(Fin フラグ)
ウィンドウサイズ 16 bit 受信側の受信可能なデータサイズを送信側に通知するために
使用。送信側では、このフィールドにセットされたウインドウサイズを見て、送信可能な最大データサイズを判断します
チェックサム 16 bit TCPヘッダとデータ部分のエラーチェックを行うために使用します
緊急ポインタ 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