|
>>2019 aiko > 結局は、分割したEthernetフレームの1個1個にMACアドレスが > たされるということですか。 そうです。IP データグラムのヘッダに送信先 IP アドレスと 送信元 IP アドレスがあるように、Ethernet フレームのヘッダにも 送信先 Mac アドレスと送信元 Mac アドレスが付いています。 > IPアドレスの大きさが保証されてないから (IPv6に変わったり)、 > Ethernetフレームのアドレス用の領域分(フレーム構成)が、 > IPアドレスの大きさが変わった場合に影響受けるのは、 > 階層的?にまずいということですか。 まぁそうですね。もし Ethernet が IPv4 べったりな規格だったら IPv6 は実現しなかったでしょう。各レイヤ間ができるだけ依存 しないように考えた結果、柔軟性が生まれたのです。ちなみに Ethernet の上に載せられるプロトコルには、IP の他に Xerox XNS や Novell IPX などもあります。 > 自分の環境って関係ないんじゃないですか。だって相手の MAC > アドレスが知りたいわけだから。 Ethernet を使っていないなら Mac アドレスは全く使いません。 arp -a でテーブルが空だった理由はわかりません。時間が 経過したためキャッシュを破棄したのかもしれないし、そうで ないかもしれない。 > あと、MACアドレスを問い合わせない通信ってあるんですか。 IP データグラムを送るという前提なら、必ず Mac アドレスを 知らなくてはいけないでしょう。 # 強いて言えば、ARP プロトコルは Mac アドレスを問い # 合わせるためのプロトコルだから、ARP を投げる前に # Mac アドレスを問い合わせることはありませんね。 > IPデータグラムって、自分のマシンから出て行くときに絶対 > Ethernetフレームに分解されて出て行くんですか。 Ethernet を利用していないなら、それは間違いです。もし Ethernet を利用しているならば、IP データグラムは必ず Ethernet フレームに載せられて流れていきますが、サイズが 小さければ分割はされません。 > 是非、勉強方法など教えてください。 概要を知るにはこれ http://www.ohmsha.co.jp/data/books/contents/4-274-06257-0.htm プログラミングするならこれ http://www.mmjp.or.jp/pearsoned/washo/network/wa_net28-j.html がお勧めではないかと思います。 |
|
>>2019 aiko あと、Ethernet と IP では、役割が違います。Ethernet はセグメント内 (ルータから先は別セグメント) の通信を保証するレイヤ (データリンク層)。 ルータから先は Ethernet の管轄外です。 で、IP はエンドツーエンドの通信を保証するレイヤ (ネットワーク層)。 ついでに言うと、TCP は IP のような細切れなパケットでなく、連続した ストリームを送ることを保証するレイヤ (トランスポート層)。 バカ HUB やツイストペアケーブルは、端点 (って言うのかな?) から 端点へ正常な信号を送ることを保証するレイヤ (物理層)。 # ここで書いた各層の役割は、僕が勝手に考えたもので、OSI 参照 # モデルの定義とは違います。 # http://home7.highway.ne.jp/dayan/tips/unix/tcp.html |
|
>>2016 68user 何の事は無い、あっさり解決しました。()の動作はperlと同じなのですね。 (というよりperlがシェルに似せたのだと思うけど) ps での表示で親子関係表示されました。 今後詰まった時、とりあえずperlでの記述を真似てみます(笑) 同時に終了の件は、考えてみればそこまでやるなら各種デーモン類の 起動法を真似ればいいかも、なのでとりあえずコレで良しとします。 ともかく、ありがとうございました。 ちなみにこのスクリプトは、自宅で公開しているサーバーでのログ監視 に利用しています。 ついでに、といってはなんですが、このマシンはサーバーとして利用して いるので、通常はリモートログインでコンソールからの操作は滅多に行わ ないため、アイドルが続くとディスプレーが非表示モード(でいいのかな) になります。 BIOS関係かなとも思いますが、Windowsも同居しているのでできればOS側で 対処できないかと考えています。 変更箇所もしくはポインターを教えてもらえれば幸いです。 |
|
こちらでは、お久しぶりです。 >>2016 68user 68user さんは、お気づきだろうと思うので、蛇足ですが。 私の方では core を吐きました。多分、path とか URL の長さチェックを していないからだと思います。 /* genx.c */ #include <stdio.h> int main(int argc, char *argv[]) { int i; for (i = 0; i < 1000; i++) putchar('x'); return 0; } こんなプログラムを作って、 % ./http-client-2 http://www.yahoo.co.jp/`./genx`.html としたら signal 10 を受けて core を吐きました。 # 個人的にはこの程度のサンプルで、長さチェックまでやるのは # 本質的な部分が見えなくなるので、今のままで良いかと思います。 # せいぜい、注意をひとこと書けば良いだけだと思います。 >>2015 nana 上記の通りなので、こういうバグ報告の際には引数に与えた文字列とか 環境変数を参照するものは環境変数とかを明示しないと意味がないです。 上記のは core を吐かせるための一例なので、原因は他にもあるかも 知れませんが。 |
|
>>2022 スナフキン > 何の事は無い、あっさり解決しました。 そうですか、() で囲めば解決しましたか。プロセスグループとか tty とか、さっぱりわかってないので適当に言ってみたのですが。 > ()の動作はperlと同じなのですね。 open(IN, "(cd dir; foo | bar) |") みたいなのを言ってますか? perl では、open の引数の先頭か末尾に `|' を付けると、構文 解析なども行わず 丸ごと /bin/sh に投げます。なので、perl の 作りが sh に似ているのではなく、単に sh を利用しているだけです。 > アイドルが続くとディスプレーが非表示モード(でいいのかな) > になります。 XFree86 ならば xset -dpms とするか、/etc/XF86Config で BlankTime, StandbyTime, SuspendTime, OffTime などを設定 します。詳しくは XF86Config(5) をどうぞ。 ただのコンソールならば FreeBSD 4.3-RELEASE なら /etc/rc.conf に saver="NO" です。それ以外の環境はわかりません。 >>750 を見ると Vine Linux をお使いのようですが、毎回必ず 環境を書いた方がよいでしょう。 |
|
>>2023 rosegarden > 68user さんは、お気づきだろうと思うので、蛇足ですが。 > 私の方では core を吐きました。多分、path とか URL の > 長さチェックをしていないからだと思います。 全然お気づきではなかったです。お恥ずかしい。 「C で書くならここまでちゃんとやらないと」と言えるような サンプルにしたいので、直しておきます。 |
|
PerlのCGIで記入した文章において, 改行をスペースに変換する方法を以前お尋ねしました。 その後,いろいろ試してみたのですが, 日本語コード変換直後に $val =~ s/\r\n|\r|\n/ /g; を記入することで上手くいきました。 どうもありがとうございました。 |
|
>>2024 68user プロセスグループというのですか、時間があれば調べてみます。 しかし、ホントに良くできていますよね、M$とは大違いだ(笑) >open(IN, "(cd dir; foo | bar) |") みたいなのを言ってますか? いえいえ、全体的にです。 自分は、今の所bashしか使っていませんが、スクリプト言語全体に 同じような構文が多いように感じます。(意識的なんでしょうか?) >環境を書いた方がよいでしょう。 そうですね、これからそう心がけます。 VineLinuxには /etc/rc.conf は無く、/etc/rc.d/ 関係にもそれらしい 記述は見つけられませんでした。いろいろ調べてみます。 ありがとうございました。 |
|
>>2022 スナフキン > 何の事は無い、あっさり解決しました。 すいません、上記の発言は正確では有りませんでした。 正確には、ps での表示にはちゃんと親子関係が表示されましたが、 コマンド jobs には表示されませんでした。 ん〜、親PIDが判る(killできる)のでこれでも可です。 >プロセスグループ コレ、特有の呼び名かと思いましたが、単純に自分の言っていた親子 関係にあるプロセス群のことを指していたのですね(^^; |
|
すみません。ネット初心者です。 くだらないことをおききしたいのですが、、、。 いろいろなホームページをみていたら、かってに 何かわからないのですが、「無料のダウンロードを行いました」 といって、なんだか何もしていないにもかかわらず、 なにかが、ダウンロードされてしまったみたいです。 これによって、個人情報が流れてしまったり、することはあるのでしょうか?なんだか不安です。 アドバイスお願いします。 いろいろ不安になります。 |
|
koni と申します。 (環境: ActivePerl v5.6.0 + WinNT) ワンタイムパスワードについて質問があります。 MD5 を使い認証をしてくるサーバーに Net::FTP を使用して自動 FTP をし たいのですが、うまく行きません。 詳細は以下です。 ※この件に明るくないため、言葉の使用法が誤っているかも知れません。 == まずは、 # start ----- use Net::FTP; $ftp = Net::FTP->new("ftp-server-name.co.jp", Debug => 1); $ftp->login('user', 'pass'); $ftp->quit; # end ------- などとしたところ、PASS を送信したところで、はじかれてしまいました。 ちなみにこれを ffftp などの MD5 対応のクライアントを使うと、 FFFTP Ver.1.80 Copyright(C) 1997-2001 Sota. ---------------------------- ホスト ftp-server-name.co.jp を探しています. ホスト ftp-server-name.co.jp (***.***.***.*** (21)) に接続しています. 接続しました. :(省略) >USER user 331 * * * MD5を使用します. >PASS [xxxxxx] 230 User user logged in. >TYPE A 200 Type set to A. ダウンロードのためにホスト ***.***.***.*** (*****) に接続しています. 接続しました. >NLST -alL 150 Opening ASCII mode data connection for /bin/ls. 226 Transfer complete. ファイル一覧の取得は正常終了しました. (124 Bytes) (* の部分は伏せてあります。) などとなり、接続できました。 個人的には、Net::FTP にこの MD5 を実装するには、上記の USER user をし たあと、331 の後の値を、Digest::MD5 のメソッドにかませて、戻り値をパ スワードとして送信すれば OK なのか、と考え、やってみたのですがダメそ うでした。 もしご存知のかたがいらっしゃいましたら、ご教授願います。 |
|
>>2030 koni > ワンタイムパスワードについて質問があります。 > MD5 を使い認証をしてくるサーバーに Net::FTP を使用して自動 FTP をし > たいのですが、うまく行きません。 一口にワンタイムパスワードといってもいくつかあるので、 これだけでは分かりません。 しかし、md5 が云々と言うことから、opie じゃないかと思いますが。 私自身 opie も S/key も使ったことがないので、分かりませんが、 > 個人的には、Net::FTP にこの MD5 を実装するには、上記の USER user をし > たあと、331 の後の値を、Digest::MD5 のメソッドにかませて、戻り値をパ > スワードとして送信すれば OK なのか、と考え、やってみたのですがダメそ > うでした。 多分 password を md5 でハッシュしても駄目でしょう。 ワンタイムパスワードの意味がないです。 CPAN に http://search.cpan.org/search?mode=module&query=opie という module があるのでトライしてはどうでしょうか? とにかく、認証方法がワンタイムパスワードとしか分からないので、 これでうまくいくかどうかは保証できません。 上記サイトの module search で S/key とか MD5 とか MD4 で それらしきものを検索してはどうですか? でも良いことを聞きました。ありがとうございました。 # web サーバで ftp 使わせているのですが、 # パスワードの保護がどうにかならないかと # 頭を抱えていたところです。 |
|
はじめまして、C言語でFTPクライントを作ろうとここのページを参照させて いただいたのですが、以下の部分のソースがよくわかりません。 87: while (1){ 88: char c; 89: c = getopt(argc, argv, "d"); 90: if ( c == -1 ) break; 91: switch (c){ 92: case 'd': 93: debug_flg = 1; 94: argc--; 95: argv++; 96: break; 97: default: 98: break; 99: } 100: } getoptは調べたところint型だと思うのですが、なぜchar型の変数に値を 代入しているのでしょうか? また、いろいろ調べてみたんですが、このgetoptで何をしているのかもよく わかりませんでした。よろしければこの部分についての解説もお願いいたし ます。m(_ _)m |
|
>>2030 koni そういう FTP サーバを使ったことがないので試すこともできないのですが、 これって APOP みたいな感じなんですかね? どこかで公開されている FTP サーバはないものでしょうか。 >>2032 snow > getoptは調べたところint型だと思うのですが、なぜchar型の変数に > 値を代入しているのでしょうか? これは僕のミスで、正しくは int です。直しておきます。 > このgetoptで何をしているのかもよくわかりませんでした。 引数解析です。 for ( i=1 ; i<argc ; i++ ){ if ( argv[i][0] == '-' ){ switch (argv[i][1]){ case 'd': debug_flg = 1; break; } } } みたいなもんですが、自分で書くのもめんどくさいのでライブラリを 使いました。 詳しくはここらへんをどうぞ。 http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=getopt&dir=jpman-3.1.0%2Fman§=3 |
|
>>2033 otp-md5 google 君に教えてもらいました。なるほど、こんな感じの流れになるのか。 http://www.jaist.ac.jp/~uchida-t/otp/ |
|
>>2033 68user ご回答ありがとうございます。 ですが、このままint型に変えただけだと、エラーがなければCに入るのは 通常「100」ですよね?ということは case 100: とすれば良いのですよね? そこを修正して、先ほどのプログラムを例に従って実行してみたのですが、 どうもどこかでループにはまっているようで、ファイルの取得ができません。 う〜ん・・・(汗 |
|
>68userさん http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/view-segabbs.cgi.diff?r1=1.3&r2=1.1&f=h ロボット検からまだ引っかかるので上記ページを確認したのですが <head>の部分が</head>になっているのがちょっと変かなっと思ったのですが…どうなんでしょうか。 |
|
>>2035 snow > エラーがなければCに入るのは通常「100」ですよね? 'd' の character code は 100 なので、100 でも 'd' でも動作は 同じですけど、可読性やメンテナンス性を考えて 'd' と書きましょう。 > どうもどこかでループにはまっているようで、ファイルの取得ができません。 できる限り余分な部分を削ったソースを見せて下さい。 >>2036 ED > <head>の部分が</head>になっているのがちょっと変かな プログラムのソースでなく実物を見て下さい。 http://X68000.startshop.co.jp/~68user/segabbs/bbs3/vol5/5_97.html > ロボット検からまだ引っかかるので META タグを追加してからまだ15日しか経過していません。例えば google なら、クロール頻度は最低1ヵ月に1回だそうです。 http://www.google.com/intl/ja/faq.html |
|
>>2037 68user >> エラーがなければCに入るのは通常「100」ですよね? >'d' の character code は 100 なので、100 でも 'd' でも動作は >同じですけど、可読性やメンテナンス性を考えて 'd' と書きましょう。 そうなんですか。すいません、'd'で大丈夫だとは知りませんでした。 >> どうもどこかでループにはまっているようで、ファイルの取得ができま >>せん。 >できる限り余分な部分を削ったソースを見せて下さい。 いえ、前回のcの型の変更以外の変更は行っていません。 それでできないのですが・・・ |
|
>68useさん すいません。プログラムのほうしか見てませんでした。 |
|
お礼です。 「ネットワークプログラミングの基礎知識」を参考にさせて頂きました。 とても分かりやすく私にとって大変役に立ちました。 自分はDOSやWindowsのアプリ、ドライバを作ることが主な仕事ですが この度、サーバ側のプログラムを作ることになり、こちらのHPを参考に させていただきました。 特に「ネットワークプログラミングの基礎知識」と「簡易版コマンド マニュアル」内のcrontabを読ませていただき、大いに参考になりました。 普段はC(ドライバ作成用)とDelphi(クライアント側アプリ作成用) を使っていますが、こちらでPerlの使い方までも教えてもらいました。 ただただお礼を言うばかりです。 素晴らしいHPを提供してくださって、こころから感謝申し上げます。 有り難うございました。 |
|
>>2038 snow > いえ、前回のcの型の変更以外の変更は行っていません。 > それでできないのですが・・・ 動かないというのは、 http://X68000.startshop.co.jp/~68user/net/c-ftp-1.html の ftp-client.c ですか? コマンドラインからは何とタイプしましたか? % ./ftp-client -d anonymous your@mail.address ftp.jp.FreeBSD.org /pub/FreeBSD/README.TXT のように -d を付けるとデバッグ情報が表示されますが、どこで 止まっていますか? もし NAT 環境で試しておられるなら、 --> PORT 192,168,0,7,9,58 <-- 500 Illegal PORT range rejected. などとプライベート IP アドレスを送ってしまい、エラーと なります。しかしこのプログラムではエラーチェックを行って いないので、構わず RETR を送ってしまいうためファイルを 取得できません。この点は説明を付けておくべきでしたね。 getopt の件は修正しておきました。ご指摘ありがとうございました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/ftp-client.c >>2039 ED というわけで、しばらくお待ち下さい。 >>2040 Moo どもども。わかりにくい点がありましたら ご指摘お願いします。 |
|
>>2041 68user > この点は説明を付けておくべきでしたね。 NAT 環境では動かない旨、追加しました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/c-ftp-1.html.diff?r1=1.1&r2=1.2&f=h |
|
>>1691 紅の猫 >>2023 rosegarden http-client, http-client-2 のバッファオーバーランの修正と、 bzero,bcopy の説明の追加を行いました。ご指摘ありがとうございました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/http-client.c http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/c-http-1.html |