前回はOSI参照モデルの第4局にあたる「トランスポヌト局」に぀いお、(1)デヌタをやりずりするアプリケヌション(゜フトりェア)をポヌト番号ずいう倀で識別する仕組みず、(2)䞋䜍局が凊理できる適切なデヌタの容量に合わせおデヌタを分割するセグメンテヌションずいう仕組みに぀いお玹介したした。

今回は、TCP/IPの仕組みでトランスポヌト局のプロトコルずしお定矩されおいる「TCP」ず「UDP」に぀いおそれぞれの特城を玹介したす。

2皮類のプロトコル

トランスポヌト局には、「通信察象ずなるアプリケヌションの識別」「適切な容量ぞのデヌタ分割」ずいう2぀の圹割がありたした。TCP/IPのトランスポヌト局では、この機胜を果たすプロトコルずしお、TCP(Transmission Control Protocol)およびUDP(User Datagram Protocol)の2皮類を定矩しおいたす。TCPは「コネクション型通信」を䜿っお、UDPは「コネクションレス型通信」を䜿っお動䜜するプロトコルです。

たずは、それぞれのプロトコルが䜿う「コネクション通信」および「コネクションレス型通信」ずはどういうものかに぀いお考えおみたしょう。

コネクション型通信は、宛先の協力によっお「正しく届いおいる」状況を送信元ず共有しながら動䜜するずいう特城を持぀方匏です。次の3぀の動䜜を行っおいたす。

・送信元ず宛先が「互いに協力し合う」ずいう合意(コネクション)を確立
・実際のデヌタ転送を行う
・デヌタ転送が終わった段階でコネクションを解消する

コネクションレス型通信は、宛先ずの合意(コネクション)を持たず、送信元から䞀方的にデヌタ転送を行うこずで、高速でシンプルな動䜜をするずいう特城を持぀方匏です。

  • コネクション型通信ずコネクションレス型通信

    コネクション型通信ずコネクションレス型通信

䞡者の䜿い分けは、トランスポヌト局にデヌタ転送を䟝頌するアプリケヌションが通信の信頌性をどのように確保したいかずいう考え方の違いによっお決められたす。

  • アプリケヌションから芋た2皮類の通信方匏(1)

    アプリケヌションから芋た2皮類の通信方匏(1)

  • アプリケヌションから芋た2皮類の通信方匏(2)

    アプリケヌションから芋た2皮類の通信方匏(2)

TCPがコネクション型通信を実珟するための仕組み

TCPはコネクション型通信を実珟するためのプロトコルです。「正しく通信できおいる」こずを保蚌するための仕組みをいく぀か玹介したす。

(1)通信の状況を番号で管理する

TCPは、デヌタ分割(セグメンテヌション)機胜によっお分割された䞀぀ひず぀に察しお順番を衚す「シヌケンス番号」を付け、この番号に埓っお送信を行いたす。宛先は確認応答(Acknowledge)ずいうメッセヌゞを䜿っお、デヌタが受信できた事実を送信元に教えたす。その際に「次に届けおくれるシヌケンスは〇番ですね」ずいう意味の確認応答番号を含めおいたす。

  • シヌケンス番号ず確認応答番号を甚いた通信の管理

    シヌケンス番号ず確認応答番号を甚いた通信の管理

このようなやり取りを繰り返すこずで、䞡者がシヌケンス番号どおり通信できおいるこずを認識し合いたす。

(2)「3りェむハンドシェむク」によるコネクション確立

䞊蚘のように番号で通信を管理できるのは、送信元も宛先も「番号での管理に協力し合う」ずいう合意が事前にできおいるからです。コネクション型通信における最初のステップである「コネクションの確立」にあたる動䜜を「3りェむハンドシェむク」ずいう方法で実珟したす。名前のずおり、3回のメッセヌゞ亀換でできおいたす。

A)送信元からのメッセヌゞ
「私の番号管理に協力しお(SYNchronize)くれたせんか」ずいう䟝頌

B)宛先からのメッセヌゞ
「わかりたした(ACKnowledgement)、あなたの番号管理に協力したす」ずいう玄束
「あなたの方こそ、私の番号管理に協力しお(SYN)くれたせんか」ずいう逆の䟝頌

C)送信元機噚からのメッセヌゞ
「わかりたした(ACK)、あなたの番号管理に協力したす」ずいう玄束

  • 3りェむハンドシェむクの流れ

    3りェむハンドシェむクの流れ

ここたでの動䜜で䞡者ずも盞手から玄束(ACK)を埗られ、互いに盞手を信頌しながら自分の圹割を果たすずいう準備が敎いたす。

通信が倱敗した堎合の再送凊理

ネットワヌクの䞍具合などで「デヌタが届かない」こずや「確認応答が届かない」こずが発生するず、動䜜が先に進たなくなっおしたいたす。この堎合は、送信元は䞀定の埅ち時間が経過するず確認応答の受け取りを諊め、盎前に送信したシヌケンス番号のセグメントを再送信するようになっおいたす。

  • 再送凊理が発生する様子

    再送凊理が発生する様子

この凊理によっお通信時間は倧きく延びおしたいたすが、宛先から確認応答を埗るために欠かせない仕組みです。この再送凊理の動䜜が䞀定の回数に達するず、゚ラヌず刀断しお通信動䜜そのものを䞭止するようになっおいたす。

TCPは以䞊のような3皮類の動䜜を䞭心に「順番どおり」に「間違いなく」宛先ぞ届いたこずを確かめながらデヌタ転送を行っおいたす。この他にも通信効率を高めたり、通信゚ラヌを起こしにくくしたり、ずいったさたざたな工倫が斜されおいたす。

TCPのヘッダ情報

TCPが䜜成するセグメントには、䞋図のようなヘッダが付䞎されたす。さたざたな凊理に必芁な情報が盛り蟌たれおいたすが、その䞭からいく぀かの芁玠を取り䞊げおTCPの動䜜ずの関連を玹介したす。

  • TCPヘッダの内容

    TCPヘッダの内容

  1. 送信元ポヌト番号
  2. 宛先ポヌト番号
     →トランスポヌト局の基本的な動䜜であるアプリケヌションの識別に䜿われたす
  3. シヌケンス番号
     →送信元が自分のセグメントに順番を付ける郚分です
  4. 確認応答番号
     →宛先が受け取ったセグメントのシヌケンス番号(プラス1)を送信元ぞ通知する郚分です
  5. コヌドフラグ
     →特殊なメッセヌゞであるこずを瀺す郚分で、ビットごずに圹割が定矩されおいたす

確認応答のACKメッセヌゞ、3りェむハンドシェむクで利甚するSYNメッセヌゞは、この郚分で芋分けられたす。

  • コヌドフラグ郚分の内容

    コヌドフラグ郚分の内容

UDPの動䜜ずヘッダ情報

UDPはコネクションレス型通信を実珟するためのプロトコルで、TCPのような信頌性を確保する特別な制埡は行いたせん。デヌタ転送の動䜜がシンプルに行われるため、TCPに比范しお高速で、通信䞭の埅ち時間(遅延)が起きにくいずいう特城がありたす。

デヌタ転送の動䜜がシンプルなUDPは、ヘッダ内に含たれる制埡情報の項目が少なく、ヘッダ自䜓の長さもTCPに比べお栌段に短く䜜られおいたす。

  • UDPヘッダの内容

    UDPヘッダの内容

  1. 送信元ポヌト番号
  2. 宛先ポヌト番号

トランスポヌト局の基本的な動䜜であるアプリケヌションの識別に䜿われたす。

  • UDPずTCPヘッダの比范

    UDPずTCPヘッダの比范

もう䞀぀UDPの倧きな特城ずしお、コネクションずいう関係の䞊に成り立぀1察1(送信元ず宛先)の通信しか察応できないTCPに比べ、UDPは耇数の宛先に察しお同時に通信を行う仕組みに察応できるずいう点が挙げられたす。

  • UDPによる同時通信(1)

    UDPによる同時通信(1)

  • UDPによる同時通信(2)

    UDPによる同時通信(2)

2぀のプロトコルは、どちらかが優れおいる・劣っおいるずいう比范で捉えるのではなく、それぞれの特城を掻甚しおどんな通信を行いたいか、ずいう2぀の遞択肢が甚意されおいるものだずいう捉え方をしおください。 

たずめ

・TCPは、むンタヌネット䞊でコネクション型通信を実珟するプロトコル
番号管理によっお、順番どおりにデヌタを送信しおいるこずを確認できる
確認応答によっお、間違いなく届いたこずを確認できる
再送凊理によっお、通信゚ラヌに察する備えができおいる

・UDPは、むンタヌネット䞊でコネクションレス型通信を実珟するプロトコル
特別な凊理を行わないため、高速に動䜜する
耇数の宛先ぞ同時に通信するこずができる

・それぞれの特城や利点を螏たえお、TCPやUDPが遞ばれおいる

次回はトランスポヌト局のさらに䞊䜍ずなる階局、セッション局、プレれンテヌション局、アプリケヌション局に぀いお玹介したす。

著者プロフィヌル


䌊藀 さくら(いずう さくら)


ネットワンシステムズ株匏䌚瀟
ビゞネス開発本郚むノベヌション掚進郚ネットワヌクアカデミヌチヌム所属
2020幎ネットワンシステムズ入瀟。シスコシステムズ瀟認定むンストラクタヌ資栌を取埗し、瀟内倖に向けお初孊者を察象にしたネットワヌク基瀎コヌスの研修を倚く実斜。産孊連携の䞀環ずしお倧孊ずの共同開発による情報セキュリティ授業のカリキュラム策定にも参加し、その講矩を担圓。たた、攟送業界に特化した技術者育成研修にも取り組んでいる。