ZMODEM通信の内部動作について
Open Date: 2012-01-17 18:01
Letztes Update: 2012-01-20 08:36
Reporter: | damumeta | Eigentümer: | yutakapon |
---|---|---|---|
Priority: | 5 - Medium | MileStone: | Tera Term 4.73 (closed) |
Type: | SupportRequest | Severity: | 5 - Medium |
Component: | Tera Term | Status: | Closed |
Resolution | None |
Details
はじめまして。組込み機器向けにZMODEMプロトコルを実装しているものです。
PCとの通信も前提としてまして、第一に頻繁に使用するTera Termとの通信精度は重視しています。ただ、Tera Termのzmodem.cのソースコードを拝見させて いただいた所、若干ZMODEMプロトコル本来の振る舞いと異なる所がありました。 ZACKというヘッダパケットがあるのですが、ZMODEMプロトコルでは、ZACKは内部に受信したファイルのオフセット情報を含むことになっています。しかしTera Termの 実装では常にオフセット0としているようです。ZACK受信時にはZACKのオフセットを解析しているようですが、送信時は常に0指定です。そして、ZACK後に続けてZRPOSと うヘッダ(これにもファイルオフセットを含みます)を送信しているようです。 概ねこれでも問題ないのですが、送信側にスライディングウインドウを実装しようとした場合、データパケット終端にZCRCWまたはZCRCQという、受信側のZACKを待つ制御 コードを添付します。そして受信したZACKのオフセット情報をみて、送信側のオフセットと照合し、送信データをシークするというのが基本的な動作です。そこに、常にオフ セット0のZACKと、オフセットを含むZRPOSが連続して送信されてくる為、データの整合性が保証できなくなってしまいます。
Tera Termを対向とする場合だけ特別扱いすることも可能ですが、できればそういった方法は避けたいと考えています。ZACKにオフセット情報を含ませるようにすることと、 続けて送るZRPOSを送信しないように変更していただくことは可能でしょうか?
Last Update of this Ticket
2012-01-20 08:36 Update by: maya
- Milestone Update from (None) to Tera Term 4.73 (closed).
- Ticket Close date set to 2012-01-20 08:36
- Status Update from Open to Closed.