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