1章 ネットワーク層
2章 ICMP
3章 ルーティングプロトコル
4章 TCP/UDP
5章 FTP/TELNET
4.1 トランスポート層の役割
4.2 コネクション型とコネクションレス型
4.3 ポート番号
4.4 UDP
4.5 TCP
4.6 TCP-基本-
4.7 TCP-データ転送の流れ-
4.8 TCP-ウインドウ制御-
4.9 TCP-効率的なデータ転送のために-
演習問題
4.6 TCP-基本-
4.6.1TCPのコネクション通信の流れ
TCPでは信頼性のある通信を行うために、コネクション型の通信を行う。その処理の手順を図4.6.1に示す。この図は図4.2.1(2)と同様のものである。これからいくつかのセクションに渡ってTCPの説明を行うが全てはこの流れを基本にしている。
図 4.6.1 コネクション管理
送信元ホストは宛先ホストにコネクション確立要求のためのセグメントを送信する。このセグメントを
SYNセグメント
という。
宛先ホストでは送信元ホストからのSYNセグメントを受信したら、確認応答のセグメントを送信元に返す。このセグメントを
ACKセグメント(または単にACK)
という。また、このACKセグメントには宛先ホストから送信元ホストへのコネクション確立要求データが入っている。
宛先ホストからのACKを受信したら送信元ホストは宛先ホストからのコネクション要求に対してのACKを送信する。
コネクションが確立したら、目的のデータを宛先ホストに送信する。そのとき、宛先ホストはデータが正しく到着しているかを常に確認し、送信元はACKが返ってくることにより、データが正しく届いていることを把握する。
データが送信し終わったら、送信元ホストはコネクション切断要求のセグメントを宛先ホストに送信する。このセグメントを
FINセグメント
という。
宛先ホストは、送信元ホストからFINセグメントを受信したら、FINに対するACKセグメントを送信する。
宛先ホストから送信元ホストへFINセグメントを送信する。
送信元ホストは宛先ホストからのFINセグメントに対するACKを返し、コネクションが切断され、データ通信を終了する。
このような手順によって、送信元ホストは送信先ホストにデータを送って良いかどうかを確認しながら目的のデータを相手に送信する。
4.6.2 MTUとMSS
TCP通信の流れは上で示したようになっている。ではTCP通信における1セグメントに含まれるデータの大きさはどのように決まっているのだろうか。それを決めるのがMSS(Maximum Segment Size)という値である。
コース1のデータリンク層でMTU(最大転送単位)の説明をした。MTUはデータリンクにおける最大のデータの大きさであった。データリンク層ではデータはフレームという単位でやりとりされ、そのフレームに含まれるフレームデータの最大値を決めるのがMTUであり、MTUはデータリンクの種類によって異なる値で決まっていた。
MTUがデータリンクの最大転送単位であったのに対して、MSSはTCPにおける最大のデータの大きさである。MTUとMSSの関係は下図4.5.2のようになっている。前節で説明したように、TCPセグメントはTCPヘッダとTCPデータで構成されている。そして、TCPセグメントにIPヘッダを付加したものがIPパケットである。IPパケットがフレームデータとなり、フレームヘッダがついたものがフレームである。
図4.6.2 MTUとMSS
ここではMSSの基本的な概念について説明した。
次節では例を用いて実際のTCP通信でどのようにMSSが決定されるかを説明する。