連載
» 2020年04月20日 06時00分 公開

IPパケットに載せられて運ばれるもの、UDP/TCPとその上位プロトコルはじめての車載イーサネット(4)(4/5 ページ)

[中村伸彦(ベクター・ジャパン),MONOist]

(4)ECU Bへのデータ送信

 まずECU Aが10バイトのデータを送ります。ECU Bは10バイトのデータを受信しました。

(5)アクノリッジとECU Aへのデータ送信

 ECU Bは、ACKをセットし受信したシーケンス番号(1301)+受信データバイト数(10)=1311を確認応答番号として「アクノリッジ」を返します。その際にECU Bは併せて20バイトのデータを送っています。ECU Aは20バイトのデータを受信しました。

(6)アクノリッジ

 ECU Aは、送信されてきたACKと確認応答番号(1311)をチェックし、データが正しく受信されたことを確認します。またECU Bが送ってきたシーケンス番号(3501)+受信データバイト数(20)=3521を確認応答番号としてACKをセットし「アクノリッジ」を返します。ECU Bは、受け取った「アクノリッジ」の応答確認番号が送ったシーケンス番号(3501)+送ったデータバイト数(20)=3521であることで、データが正常に受信されたことを確認します。

 そして最後には、コネクションを解放します(図7参照)。

図7:コネクション解放(TCP)(クリックして拡大) 出典:ベクター

(7)コネクション解放

 データ転送が終了し、通信の必要がなくなったため、ECU AがFINをセットし「コネクション解放要求」を送ります。

(8)アクノリッジ

 「コネクション解放要求」を受け取ったECU Bは、受信したシーケンス番号(1311)+1=1312を確認応答番号として「アクノリッジ」を送ります。それを受け取ったECU Aは、受信した「アクノリッジ」の応答確認番号が送ったシーケンス番号(1311)+1=1312であることで、「コネクション解放要求」が受け付けられたことを確認します。

(9)コネクション解放

 コネクションが双方向でしたので、ECU BからECU Aへコネクション解放も行います。

(10)アクノリッジ

 それに対し、ECU AはECU Bにアクノリッジを返します。なお、この例では双方1往復ずつのやりとりをしていますが、コネクション確立時と同様にスリーウェイで解放することもできます。

 ここでは、簡単な例でTCPの動作の一部を紹介しました。実際にはTCPはエラー検出時のリトライや、到着したデータの正しい順番への並べ替え(※9)をはじめとする高機能かつ信頼性の高いプロトコルです。ただ即時性は、コネクション確立等のオーバーヘッドがあり、UDPと比較した際に劣ります。つまりTCP/UDPともに一長一短があるため、上位のプロトコル(サービス)が、用途に合わせて使い分けています。

(※9)インターネット上では必ずしも同じルートを通るわけではないので、到着順も保証されていません。そのためシーケンス番号を見ることで受信側は正しい順番にデータを並べ替えます。

Copyright © ITmedia, Inc. All Rights Reserved.