TCP/IPでのソフト開発に関して

解決


siro  2012-11-02 22:08:35  No: 43300

TCP/IPでのソフト開発に関して 

現在indy9とDelphiを使用してクライアントとサーバーソフトを作成しています。
サンプルのチャット等は問題なく動いています。

これを元に、indyコンポーネント等を使用してTCP/IPのヘッダ部分を触りたいのですが良く判りません。

例 IdTCPClient1.Host := '127.0.0.1'; // localhost
IPをセットする場合はこのように成ると思います

上記のような感じで、TCP/IPのフレームサイズを変更したり、Paddingデータを追加したりしたいのですが、方法が判りません。
例えば IdTCPClient1.PaddingData:='なになに';等方法が無いでしょうか。

宜しくお願いします。


KHE00221  2012-11-03 17:26:44  No: 43301

TCPプロトコル
http://www.picfun.com/lan19a.html

TCPヘッダ
http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/tcpheaders.html

MTU, MSS, RWIN
http://www.infraexpert.com/info/5adsl.htm

フレームサイズを変えたい  とか Paddingデータを追加したい
 ってどういうこと?


take  2012-11-03 17:59:16  No: 43302

フレームサイズを変えたいと言われても
ドライバの設定を変更するぐらいしかありません。

フレームサイズを超えたデータを送受信した場合は
自動的に分割されます。
これはindy9でもWinSockAPIでも同様です。

PaddingDataとかが必要になる場面がよくわかりません。
ルーターを作るのですか?

あとYahoo知恵袋でも質問されているみたいですね・・・


siro  2012-11-03 21:31:26  No: 43303

皆さん回答有難うございます。
知恵袋に関しては、2重投函に成ってしまいました。
どちらかでヒントでも判ればと書き込んでしまいました。

フレームサイズに関してては、ヘッダーを触れることが出来ればと思い書いてしまいました。

教えて頂きたいのは、PaddingDataの追加方法が知りたいのです。
宜しくお願いします。


take  2012-11-03 22:55:44  No: 43304

どうも話が通じてないようですね。

リンク先の情報は閲覧されましたか?

「PaddingDataを追加」というのは意味不明です。
IPヘッダは32ビット長なので
32ビットではない要素を埋めているのがPaddingです。

ヘッダの最後の要素「Options」が25bitなので
32bitにするために7bit分のPaddingがあるわけです。
これを増やすとはどういうことでしょうか?

という質問の返答をお願いしているわけです。

そもそもTCPヘッダを自分で加工したりするのは困難と思われます。
(そういうコンポーネントやドライバあったっけ?
  あったらこちらが教えて欲しいぐらい)

そしてそれらがどのような理由で必要なのかがわかりません。

・パケットキャプチャを作りたい
・パソコンをルーターにしたい

ちょっと思いつきません。


ssiro  2012-11-03 23:30:57  No: 43305

take さん、回答有難うございます。
TCP/IPに関しては初心者ということで、質問が支離滅裂で申し訳有りません。

教えて頂いたアドレスなどは、こちらで調べている間に目を通していました。
実際には、とある機械がありそれの通信データにPADDINが付いていたもので、
こちらからデータを送ると有る程度返事はするのですが、途中で通信が途切れてしまいました。データの数が有っていないのかと思い。ワイヤーシャークなどで調べていたら、こちらからの送信にPADDINGデータがついていないため最終的に切断されるのかと思ったしだいです。

もう少しTCPIPに関して勉強させて頂きます。
有難うございました。


take  2012-11-03 23:59:12  No: 43306

その機械と正常にやりとりする環境とかサンプルはありますか?

資料や仕様書を片手にやりとりするのも良いですが
正常な送受信がどういう内容なのかを
モニタすることができればおよそ解決できます。

言われている内容からするとTCP/IPあるいはUDP/IPサーバーソケットのある
機械と送受信するプログラムを組まれているようですので
Indyで良いかと思われます。

途中で通信が途絶えるのは送受信内容に問題があるようですね。

以前体験した現象としては
相手側が「エコーバック」機能を持っており
そのエコーバックを待たずに送信すると通信が途絶える
というのがありました。

エコーバックは、こちらが Aを送れば Aが帰ってくるというものです。

参考になれば幸いです。


siro  2012-11-05 03:37:31  No: 43307

take さん
こんばんは。

回答有難うございます。
データに関しては一度上の物と相談させて頂きます。
ご親切にお声がけをして頂きましたが、一度相談させて頂き問題ないようでしたらお願いします。

わがままな回答で申し訳有りませんが、宜しくお願いします。


siro  2012-11-10 21:25:59  No: 43308

siro さん

回答が送れて申し訳有りません。
体の悪く通院していたもので。

データに関しては申し訳有りませんが、出すことが出来ません。
せっかくお話頂きましたが申し訳ないです。

もうしばらく自分なりにがんばってみます。

有難うございました。


siro  2012-11-10 21:27:32  No: 43309

訂正。
あて先を間違っていました。

take さん

回答が送れて申し訳有りません。
体の悪く通院していたもので。

データに関しては申し訳有りませんが、出すことが出来ません。
せっかくお話頂きましたが申し訳ないです。

もうしばらく自分なりにがんばってみます。

有難うございました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加