「TCP」の版間の差分

提供: セキュリティ
移動: 案内検索
 
(同じ利用者による、間の5版が非表示)
行1: 行1:
 
[[TCP]] (Transmission Control Protocol) は、伝送制御プロトコルといわれ、インターネットプロトコルスイートの中核をなすプロトコルの1つです。もう1つは、[[IP]]とよばれます。そのためスイートは、[[TCP/IP]] と呼びます。
 
[[TCP]] (Transmission Control Protocol) は、伝送制御プロトコルといわれ、インターネットプロトコルスイートの中核をなすプロトコルの1つです。もう1つは、[[IP]]とよばれます。そのためスイートは、[[TCP/IP]] と呼びます。
[[TCP]]は、[[OSI参照モデル]]での[[トランスポート層]]にあたります。
+
[[TCP]]は、OSI参照モデルでのトランスポート層にあたります。
  
 
読み方
 
読み方
行8: 行8:
  
 
== 概要 ==
 
== 概要 ==
 
 
[[TCP]] (Transmission Control Protocol) は、伝送制御プロトコルといわれ、インターネットプロトコルスイートの中核をなすプロトコルの1つです。もう1つは、[[IP]]とよばれます。そのためスイートは、[[TCP/IP]] と呼びます。
 
[[TCP]] (Transmission Control Protocol) は、伝送制御プロトコルといわれ、インターネットプロトコルスイートの中核をなすプロトコルの1つです。もう1つは、[[IP]]とよばれます。そのためスイートは、[[TCP/IP]] と呼びます。
[[TCP]]は、[[OSI参照モデル]]での[[トランスポート層]]にあたります。
+
[[TCP]]は、OSI参照モデルでのトランスポート層にあたります。
  
 
== TCPとUDP ==
 
== TCPとUDP ==
 
 
[[TCP]]は、コネクション指向のプロトコルです。送信したデータが送信先に届いていることを保証します。[[UDP]]は、コネクションレスのプロトコルで、宛先にデータが到達していることを保証しません。その代わり、データ転送が高速です。
 
[[TCP]]は、コネクション指向のプロトコルです。送信したデータが送信先に届いていることを保証します。[[UDP]]は、コネクションレスのプロトコルで、宛先にデータが到達していることを保証しません。その代わり、データ転送が高速です。
 
 
== TCP の主な機能 ==
 
== TCP の主な機能 ==
 
 
* シーケンスチェック
 
* シーケンスチェック
 
* エラー訂正機能
 
* エラー訂正機能
 
* 再送
 
* 再送
* [[輻輳制御]]
+
* 輻輳制御
  
 
* [[スロースタート]]
 
* [[スロースタート]]
* [[ウィンドウスケーリング]]
+
* ウィンドウスケーリング
* [[TCPタイムスタンプ]]
+
* TCPタイムスタンプ
* [[フローコントロール]]
+
* フローコントロール
 
+
 
=== エラー訂正機能と再送 ===
 
=== エラー訂正機能と再送 ===
 
[[TCP]]では、データが壊れた場合、訂正されます。
 
[[TCP]]では、データが壊れた場合、訂正されます。
  
送信側は、データの送信時に、再送信タイマを設定します。
+
送信側は、データの送信時に、再送信タイマ(Retransmission Timeout, RTO, 再送タイムアウト)を設定します。
 
[[TCP]]ヘッダの[[チェックサム]]と受信したデータを比較し、受信データが損傷していないか判断します。[[チェックサム]]のチェックが問題ない場合は、受信側のホストは、送信側に[[ACKパケット|ACK]]を送信します。
 
[[TCP]]ヘッダの[[チェックサム]]と受信したデータを比較し、受信データが損傷していないか判断します。[[チェックサム]]のチェックが問題ない場合は、受信側のホストは、送信側に[[ACKパケット|ACK]]を送信します。
  
 
送信側は、再送信タイマが切れ、[[ACKパケット]]が戻ってきてない場合、データの再送を行います。
 
送信側は、再送信タイマが切れ、[[ACKパケット]]が戻ってきてない場合、データの再送を行います。
 
 
=== TCP シーケンスチェック ===
 
=== TCP シーケンスチェック ===
データサイズが大きい場合、複数の[[IPパケット]]に分割されて送信されます。データが到着する順番は、保証されません。そのため、[[TCP]]では、シーケンス番号を用いて、データの順番を並び替えます。[[シーケンス番号]]は、[[3ウェイ・ハンドシェイク]]で決定します。
+
データサイズが大きい場合、複数のIPパケットに分割されて送信されます。データが到着する順番は、保証されません。そのため、[[TCP]]では、シーケンス番号を用いて、データの順番を並び替えます。シーケンス番号は、[[3ウェイ・ハンドシェイク]]で決定します。
 
+
 
=== スロースタート ===
 
=== スロースタート ===
 
[[スロースタート]]とは、データの送信をゆっくり行う方法です。徐々にデータの送信量を増やしていきます。
 
[[スロースタート]]とは、データの送信をゆっくり行う方法です。徐々にデータの送信量を増やしていきます。
行45: 行38:
 
== フローコントロール ==
 
== フローコントロール ==
 
受信側のバッファがあふれたときには、[[TCP]]ヘッダのウィンドウを使用して、送信側のデータ量を制御します。
 
受信側のバッファがあふれたときには、[[TCP]]ヘッダのウィンドウを使用して、送信側のデータ量を制御します。
 
 
== ACK ==
 
== ACK ==
 
+
[[TCP]] では、コネクションの確立の [[SYNパケット]]への応答、データパケットの応答、[[FINパケット]]への応答を[[ACKパケット]](肯定応答 , ACKnowledgement)で行います。
[[TCP]] では、コネクションの確立の [[SYNパケット]]への応答、データパケットの応答、[[FINパケット]]への応答を[[ACKパケット]]([[肯定応答]] , ACKnowledgement)で行います。
+
 
+
 
== Selective ACK(s) ==
 
== Selective ACK(s) ==
 
 
Selective ACK ( Selective Acknowledgement, SACK ) は、再送が必要なパケットを効率的に通知する機能です。
 
Selective ACK ( Selective Acknowledgement, SACK ) は、再送が必要なパケットを効率的に通知する機能です。
  
 
;Right Edge:SRE
 
;Right Edge:SRE
 
;Left Edge: SLE
 
;Left Edge: SLE
 
 
== ポート番号 ==
 
== ポート番号 ==
ネットワークで提供するサービスは、サービスごとに[[ポート番号]]を決められています。[[Secure Shell]]は、22番、[[HTTP]]であれば、80番を使います。そういったポート番号は、[[ウェルノウンポート]]と呼ばれます。
+
ネットワークで提供するサービスは、サービスごとに[[ポート番号]]を決められています。[[Secure Shell]]は、22番、[[HTTP]]であれば、80番を使います。そういったポート番号は、ウェルノウンポートと呼ばれます。
必ず、その番号でそのサービスを提供しなければならない、ということはありませんが、接続先のサービスのポート番号を調べなければわからないため、[[ウェルノウンポート]]を使用するのが一般的です。
+
必ず、その番号でそのサービスを提供しなければならない、ということはありませんが、接続先のサービスのポート番号を調べなければわからないため、ウェルノウンポートを使用するのが一般的です。
  
独自のサービスについては、[[ウェルノウンポート]]以外のあまり一般的ではないポート番号(1024以降)を使用します。
+
独自のサービスについては、ウェルノウンポート以外のあまり一般的ではないポート番号(1024以降)を使用します。
  
[[ウェルノウンポート]]については、[[TCPやUDPのポート番号の一覧]]をご参照ください。
+
ウェルノウンポートについては、[[TCPやUDPのポート番号の一覧]]をご参照ください。
 +
== パケット ==
 +
* [[RSTパケット]]
 +
* [[FINパケット]]
 +
* [[SYNパケット]]
  
 
== TCP系コマンド ==
 
== TCP系コマンド ==
行75: 行67:
 
* [[インターネットプロトコル]]
 
* [[インターネットプロトコル]]
 
* [[UDP]]
 
* [[UDP]]
 +
* [[RSTパケット]]
 +
* [[FINパケット]]
 
* [[SYNパケット]]
 
* [[SYNパケット]]
 
* [[SYN cookies]]
 
* [[SYN cookies]]
* [[Fast Retransmit Algorithm]]
+
* Fast Retransmit Algorithm
 
* [[3ウェイ・ハンドシェイク]]
 
* [[3ウェイ・ハンドシェイク]]
<!--
+
{{socket}}
vim: filetype=mediawiki
+
<!-- vim: filetype=mediawiki
 
-->
 
-->

2015年9月22日 (火) 11:54時点における最新版

TCP (Transmission Control Protocol) は、伝送制御プロトコルといわれ、インターネットプロトコルスイートの中核をなすプロトコルの1つです。もう1つは、IPとよばれます。そのためスイートは、TCP/IP と呼びます。 TCPは、OSI参照モデルでのトランスポート層にあたります。

読み方

TCP
てぃーしーぴー
Transmission Control Protocol
とらんすみっしょん こんとろーる ぷろとこる

概要

TCP (Transmission Control Protocol) は、伝送制御プロトコルといわれ、インターネットプロトコルスイートの中核をなすプロトコルの1つです。もう1つは、IPとよばれます。そのためスイートは、TCP/IP と呼びます。 TCPは、OSI参照モデルでのトランスポート層にあたります。

TCPとUDP

TCPは、コネクション指向のプロトコルです。送信したデータが送信先に届いていることを保証します。UDPは、コネクションレスのプロトコルで、宛先にデータが到達していることを保証しません。その代わり、データ転送が高速です。

TCP の主な機能

  • シーケンスチェック
  • エラー訂正機能
  • 再送
  • 輻輳制御
  • スロースタート
  • ウィンドウスケーリング
  • TCPタイムスタンプ
  • フローコントロール

エラー訂正機能と再送

TCPでは、データが壊れた場合、訂正されます。

送信側は、データの送信時に、再送信タイマ(Retransmission Timeout, RTO, 再送タイムアウト)を設定します。 TCPヘッダのチェックサムと受信したデータを比較し、受信データが損傷していないか判断します。チェックサムのチェックが問題ない場合は、受信側のホストは、送信側にACKを送信します。

送信側は、再送信タイマが切れ、ACKパケットが戻ってきてない場合、データの再送を行います。

TCP シーケンスチェック

データサイズが大きい場合、複数のIPパケットに分割されて送信されます。データが到着する順番は、保証されません。そのため、TCPでは、シーケンス番号を用いて、データの順番を並び替えます。シーケンス番号は、3ウェイ・ハンドシェイクで決定します。

スロースタート

スロースタートとは、データの送信をゆっくり行う方法です。徐々にデータの送信量を増やしていきます。

詳細は、スロースタートをご参照ください。

フローコントロール

受信側のバッファがあふれたときには、TCPヘッダのウィンドウを使用して、送信側のデータ量を制御します。

ACK

TCP では、コネクションの確立の SYNパケットへの応答、データパケットの応答、FINパケットへの応答をACKパケット(肯定応答 , ACKnowledgement)で行います。

Selective ACK(s)

Selective ACK ( Selective Acknowledgement, SACK ) は、再送が必要なパケットを効率的に通知する機能です。

Right Edge
SRE
Left Edge
SLE

ポート番号

ネットワークで提供するサービスは、サービスごとにポート番号を決められています。Secure Shellは、22番、HTTPであれば、80番を使います。そういったポート番号は、ウェルノウンポートと呼ばれます。 必ず、その番号でそのサービスを提供しなければならない、ということはありませんが、接続先のサービスのポート番号を調べなければわからないため、ウェルノウンポートを使用するのが一般的です。

独自のサービスについては、ウェルノウンポート以外のあまり一般的ではないポート番号(1024以降)を使用します。

ウェルノウンポートについては、TCPやUDPのポート番号の一覧をご参照ください。

パケット

TCP系コマンド

関連項目