TCP/IPプロトコル・スタックの省メモリ開発事例(後編) ――ROM 8Kバイト,RAM 0.5KバイトにTCP/IPプロトコル・スタックを収める
● 信頼性と省メモリ,どちらを取るか?
開発に先立ち,一般に公開されている省メモリのTCP/IPプロトコル・スタックの再調査を行いました.調査したTCP/IPプロトコル・スタックの中には比較的コード量の小さなものがありましたが,TCPの信頼性の核となる機能が省略されているものも多く見受けられました.例えば,以下のような機能を省略した実装がありました(いずれも,前編の「TCP/IPで外せない機能をリストアップする」で紹介した機能である).
1) ウィンドウによるフロー制御
受信側ホストの空きウィンドウ・サイズに関係なく送信を行っている実装がありました.受信側ホストで受信できなかった場合,送信側はパケットの再転送を行います.再転送が一定回数繰り返されると,コネクションが切断されて,それ以降の通信が不能になります.
2) ゼロ・ウィンドウ・プローブ
ゼロ・ウィンドウ・プローブの代わりにデータの再転送を行っているものや,受信側のホストから応答が返ってきているにもかかわらず,再転送が一定回数に達するとコネクションを切断する実装がありました.
3) チェック・サム
チェック・サムによるエラー検出を行っていない実装がありました.