C/400

30. TCP/IP 受信の注意

SNA では、どのような環境下であっても一回の受信によって必要なすべての ストリーム を
受信することができるが、TCP/IP ではそうはいかない。
ルーター 超えや機器どうしに著しく処理速度の差があるときには、受信が途中で
断絶してしまうことが多いからである。
特に ルーター 超えのときは、問題でほとんどといってよいくらい ストリーム が断絶してしまう。
ルーター の メーカー はこのあたりは是非改善すべき点である。
さて受信 ストリーム は断絶したときには、続きを再読み込みすることによって残りの部分を
結合して全体の ストリーム を構築することができる。
しかし受信側で受信 ストリーム が断絶したかどうかを知ることはできない。
そこで送信側では、送信 ストリーム の長さを最初の先頭に入れておいて
受信側では、この長さを読み取って全体で送られてくるべき長さを知るのである。
受信した長さがこの受信長に不足している場合は、再度 残りの部分を繰り返し
読み取る作業が必要となる。

このことは、TCP/IP 受信の基本となるものであるが、残念ながら市販書籍や
Microsoft/IBM のヘルプや解説書にもほとんど説明がないのである。
ついでにもうひとつ覚えておいて欲しいのは、

TCP/IP の最大送信長は 1492 バイトである。

ということである。
これより長いデータを送信する場合は、必ず 1492バイト単位に分割してから
送信する必要がある。
1492という数字は、コロンブスの米大陸発見の年と同じ数字であるので
覚えやすいかもしれない。