TCP/IPプロトコル・スタックの省メモリ開発事例(前編) ――ミドルウェアの追加で既存の16ビット・マイコンがネット対応マイコンに変身
4) ウィンドウによるフロー制御(TCP層)
TCP層で受信ウィンドウと呼ばれるバッファ領域を確保し,受信データを一時的にこのバッファに格納します(図6).バッファ領域はリング・バッファとして使用します.通信相手につねにこの受信ウィンドウの残りサイズを通知します.相手は通知されたウィンドウ・サイズを超えるデータを送信することはできません.上位アプリケーションによってデータが読み出されると,受信ウィンドウにその分空きが生じ,相手に通知するウィンドウ・サイズが再び増加して,通信が再開されます.
5) ゼロ・ウィンドウ・プローブ(TCP層)
データ送信時に受信側ホストのウィンドウに空きがなかった場合,送信側ホストはデータ・サイズが1バイト(または0バイト)のパケットを送信して,受信側ホストの応答からウィンドウに空きができたかどうかを定期的に調べます.受信側ホストからゼロ・ウィンドウ・プローブが返ってくる間は,送信側ホストはコネクションを切断しません.
6) チェック・サム(TCP層)
2)と同様に,TCPパケットのチェック・サムを計算します.このようにTCP/IPでは,IPパケットとTCPパケットのチェック・サムによって最低限の信頼性を確保しています.