とある(無料)サーバに ~hogehoge というファイルをFTP転送しました が,これは作業中のバックアップ用ファイルを誤って転送したものです。 そこでWindows用FTPソフトを使って削除しようとすると, >DELE ~hogehoge 550 ~hogehoge: No such file or directory という結果になります。ちなみに相手方は ProFTPD です。 まあ当然といえば当然の結果かも知れませんが,いったいどうすれば削除で きるでしょうか。コマンドを手動入力することは可能です。恐らくは ~ を 別の形式で表現すればいいのだと思いますが,どうも分からないのです。 ファイルが残っていても実害はないのですが,何となく気持ち悪いので, よろしくご教示ください。 |
UNIX同士の通信で、TCP/IPのソケットを使ってHTTPのPOSTでデータのやり取りをしたいのですが、どのようにすればいいのでしょうか?? 理解不足でもしかしたらわけわかんない質問をしているかもしれませんが、お願いします。 ソケットでのデータのやりとりだと思ってください。 また、TCP/IPプロコトルとHTTPは別もの??これもわけわかんないですか? |
>>1937 CZ そのファイルをフルパスで指定すれば消せませんか? DELE /home/hoge/~hogehoge みたいに。 >>1938 ほいほい http://x68000.startshop.co.jp/~68user/net/ 68userさんがせっかくこういう物を提供してくださってるんですから 読みましょうよ・・・。 |
>>1939 hsj たすかりました。 なんかいろいろ見てて混乱してました。 いまみたら、理解しました。どうもすいません・・・・・ |
メールでいただいた質問ですが、勉強になったのでこちらでお返事。 > http://x68000.startshop.co.jp/~68user/net/perl4.html > にも書かれていますが > Perl4では SOCK_STREAM の値を直接指定しなければならない > となっておりますが、Perl4の場合 > require 'sys/socket.ph'; > とするのでは無いでしょうか? > (perl4環境が無く、人づてなので当てずっぽうです。) なるほど、既に perl4 のラクダ本も手元になく、常用環境には perl5 しかないので知りませんでした。あのページには perl4 なら sys/socket.ph を使うよう追記しておきます。 > また、サンプルの > > socket(SOCKET,PF_INET,SOCK_STREAM,0); > ですが、protocol だけが直接、値を指定しているのは > 何故でしょうか? TCP や UDP を使う場合は 0 でよいです。/etc/protocols には ip 0 IP # internet protocol, pseudo protocol number tcp 6 TCP # transmission control protocol udp 17 UDP # user datagram protocol となっていますので、TCP を使う場合は socket(SOCKET, PF_INET, SOCK_STREAM, 6); socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')); などと明示的に指定してもいいです (可読性と、NIS への対応 という面から見ると後者がよい)。 しかし、アドレスファミリ(PF_*) とソケットタイプ (SOCK_*) の 値が決まると、プロトコルは一意に定まります (なぜかはよく わかりません)。なので、プロトコルに 0 を指定すれば、自動的に 適切なプロトコルが決定されます。 FreeBSD なら socket(2) の下請け関数である socreate で http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/sys/kern/uipc_socket.c?rev=1.97 int socreate(dom, aso, type, proto, p) if (proto) prp = pffindproto(dom, proto, type); else prp = pffindtype(dom, type); と検索を行う関数 pffindtype が呼ばれています。 なお、ICMP をしゃべったり、IP データグラムを直接生成する ために raw ソケットを生成したい場合は 非 0 を指定します。 |
>>1939 hsj > そのファイルをフルパスで指定すれば消せませんか? > DELE /home/hoge/~hogehoge > みたいに。 FTP サーバの実装依存でしょうが、FreeBSD 4.3-RELEASE 付属の ftpd だと、カレントディレクトリに ~hogehoge がある状態で > rm ~hogehoge DELE ~hogehoge となり消せました。 ただ、 > rm ./~hogehoge > rm /home/user/~hogehoge は同じく 4.3-RELEASE 付属の ftp コマンドが何を勘違いしたのか RMD ./~hogehoge RMD /home/user/~hogehoge とディレクトリを削除しようとして失敗していました。 > quote DELE ./~hogehoge DELE ./~hogehoge と、直接 FTP コマンドを送ると OK でした。 UNIX 界では、~hoge が「hoge ユーザのホームディレクトリ」と 解釈されるのは ~ が先頭にあるときのみですから、フルパスで 書いたり ./~hoge などとすればよいです。ただし、 % perl Makefile.PL INSTALLMAN3DIR=~/install のように、アプリケーション側 (この場合は ExtUtils::MakeMaker) で 展開してくれるものもあります。 |
>>1941 68user > アドレスファミリ(PF_*) プロトコルファミリでした。 ちなみに、うちの web ではアドレスファミリ (AF_*) と プロトコルファミリ (PF_*) の使い分けがいいかげんだった ような気がします。いまだに違いがよくわからんなぁ。 |
68userさん> SEGA BBS以外は問題ないです。 理由はまあ掲示板の中身です… 友人が私の名前を使って書いたものなのですが。 部分的に消去とかはできるのでしょうか? |
>>1939 hsj >>1942 68user 無事削除できました。回答してくださったお二方に感謝します。 そのサーバ(ProFTPD 1.2.0rc3)では >DELE /user/www/~hogehoge.html 250 DELE command successful. および >DELE ./~hogehoge.html 250 DELE command successful. のどちらでも成功しました。 で,実験していて気が付いたのですが, >STOR ~hogehoge 550 ~hogehoge: No such file or directory はダメで, >STOR ~hogehoge.html 150 Opening ASCII mode data connection for ~hoge.hoge. 226 Transfer complete. のように拡張子が付くとOKというのは何だか不思議な仕様だと思いました。 |
>>1944 ED > 友人が私の名前を使って書いたものなのですが。 > 部分的に消去とかはできるのでしょうか? 基本的には消したくありません。それをやり出すと、「恥ずかしいので 昔書いた私の発言を消して」というような要望にまで対応しなければ いけないからです。 また、これはこっちの都合ですが、消去は手作業になります。URL を 入力してボタン一発で消去というわけにはいかないので、この作業に 時間を取られるようなら SEGA BBS 過去ログの公開は中止となります。 とは言っても、やはり見られては困る場合もあるでしょうし、こちらも 公開している以上はちゃんと管理する責任がありますので、「どうしても 困る」ということであれば消します。 あるいは、goo などのロボットよけを書いておけば OK ということで あれば、そっちの方向で対処するかもしれません。 というわけで、質問です。 Q1. できればやりたくないのですが、どうしても消さなければいけませんか? Q2. 発言を消さずに、ロボットよけを書くという対処でも OK ですか? |
68userさん> 個人的には消してほしいです。 その箇所は http://x68000.startshop.co.jp/~68user/segabbs/bbs4/vol10/home.html の53行目あたり オススメの曲を教えて! - 朝生 浩 97/9/17 00:07:22 Re: オススメの曲を教えて! - ふらんこ 97/9/17 01:28:34 THANK YOU! - ヨ−タ 97/9/18 20:45:33 THANK YOU! - ヨ−タ 97/9/18 20:46:14 今は「硝子の少年」のよーだが - もひろ 97/9/18 21:19:01 結果は? - ヨ−タ 97/9/22 22:51:31 私のお薦めはコレです〜♪ - MINAMI 97/10/09 09:15:05 です。この部分を消してほしいです。 ロボット検索にひっかからないようにでもいいのですが Web上に自分の名前があるのはどうも落ち着かなくて。 |
風光るの沖田さんとせいちゃんがすきなひといませんか?それと京都にあるという沖田さんの肖像画見た人だれかいませんか?私は、沖田さんの子孫をモデルにして書いたものなら見た事があるんですが・・・・・。 |
>>1947 ED > ロボット検索にひっかからないようにでもいいのですが ということであれば、ロボットよけを書くことで対処させて いただきます。 |
>>1941 68user メールで質問した者です。(名前違うけど・・・) 68userさん。ご回答ありがとうございます。 > perl4 なら sys/socket.ph を使うよう追記しておきます。 歌代さんの tcpconnect-1.0 ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/tcpconnect-1.0 にて ;# require 'sys/socket.ph'; unless (do 'sys/socket.ph') { #print "File sys/socket.ph is not found. Using default...\n"; eval 'sub SOCK_STREAM {1;} sub AF_INET {2;} sub PF_INET {2;}'; } というコードを発見しました。 同じ「自分で直接 値を書く」でも、ここまですれば 許されそうな気がします(笑) > TCP や UDP を使う場合は 0 でよいです。 > … > プロトコルに 0 を指定すれば、自動的に > 適切なプロトコルが決定されます。 > … > なお、ICMP をしゃべったり、IP データグラムを直接生成する > ために raw ソケットを生成したい場合は 非 0 を指定します。 なるほど、socket の説明の際によく書かれている 「普通は 0 でいいです」 的な言葉の意味が、ようやくわかりました。 # 危うく 0 を指定したいが為に getprotobyname('ip') とか # 書くところだった… (本末転倒) ところで、基本的な事がよく分かっていないので、勘違いの可能性大ですが > socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')); これだとリストで渡されませんか? > プロトコル |
loggerコマンドで、-p"(priority)というのがあるのですが、 ここには、何を設定したらよいのですか。 ”man logger”で見てもそれほど詳しくでできません。 設定する内容が詳しく書かれているものはないですか。 |
コマンドを使用して結果を出力せたた場合、1行ごとに改行と空白行 を含んで表示されます。 空白行を削除して詰めた結果を取得したいのですが、シェルスクリプト でどう記述すればよいですか。 |
こんちわっす! APACHEに繋ぐにはどうしたらいいのでしょうか?? このホームページは一通りよんだのですが、頭が悪いせいかよく理解できませんでした。どうかお願いします。ちなみにUNIX on APACHEです。 ソケットで繋いだらいいのでしょうか?? |
68userさん> ロボットよけじゃなくて やっぱ その部分だけ消してもらえませんか? よろしくお願いします |
かきこみ |
ちょっと趣旨が違うかもしれないのですが、同じパソコン上でCGIが動くかを試したいのですが(ソケット通信)どのようにすればいいかわかりません。 で、そのCGIが動くパソコンにはAPACHEが入っててそのAPACHEを通してデータのやり取りをしたいのですがいまいちよく分かりません・・・ どなたかURLだけでもいいのでお教えしていただけないでしょうか??? |
困っています。"ln"コマンドでリンクを張ろうとし、誤ってしまいました。 >ls -la lrwxrwrxrwx 1 haru 2 May 15 02:35 -s -> -s となってしまいました。ファイルを消したくてrmを打ってみても >rm -rf *s usage: rm [-rif] file ... と出てきて消せません。何方か消し方わかる方いらっしゃいますか? |
>>1957 はる > ファイルを消したくてrmを打ってみても > >rm -rf *s > usage: rm [-rif] file ... > と出てきて消せません。 rm ./-s で消せませんか? |
/tkさん 本当にありがとうございます。 消えました。 |
はじめまして。炭酸といいます。 HTTPプロトコルでファイルを転送するプログラムを作成しています。 HTTP/1.1で部分的なPUTを行うためのヘッダの記述方法がわからないので、 教えていただけないでしょうか? 「あいうえおかきくけこ」 ↑このようなファイルを10バイトずつ2回に分けてPUTしたいのです。 以下のようにやってみました。 一回目 PUT /test.txt HTTP/1.1 Host: Content-Length: 10 Content-Range: 0-9/20 あいうえお 二回目 PUT /test.txt HTTP/1.1 Host: Content-Length: 10 Content-Range: 10-19/20 かきくけこ これではうまくいかないようです。 ほかに必要なヘッダなどありましたらお教えいただけませんでしょうか。 長々と失礼いたしました。 |
>>1956 ひろさん WinでApacheなら、<http://tohoho.wakusei.ne.jp/wwwxx048.htm> ソケット通信は、localhostか直結してるなら自身のIPアドレスで 普通にアクセスすればいいです。 >rm ./-s unixは使ったことないけど、 rm -- -s でもいいのかな? |
>>1961 mm > unixは使ったことないけど、 > rm -- -s > でもいいのかな? rm なら良いみたいです。 http://pipi.iis.u-tokyo.ac.jp/~miyoshi/QandA/unix/file/15.html ちょこっとテストした結果では touch, cp, mv にも「--」オプションは有効でした。 # 調べものすると、自分の為になるなぁ… |
>>1962 /tk さん >touch, cp, mv にも「--」オプションは有効でした。 getopt.cを使う古くからのコマンドや上位互換のライブラリを 使うものなら、たぶん有効だと思ってました。 けど、リンク先を見ると、./-s の方も覚えておいた方がいいようですね。 ありがとうございます。 |
>>1950 /tk >> socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')); > これだとリストで渡されませんか? > プロトコル スカラーコンテキストなので、スカラー値が返ります。 socket(SOCKET, PF_INET, SOCK_STREAM, @a=getprotobyname('tcp')) || warn "$!"; print "@a\n"; と socket(SOCKET, PF_INET, SOCK_STREAM, $a=getprotobyname('tcp')) || warn "$!"; print "$a\n"; を試してみるとわかると思います。 >>1951 斎藤 syslog.conf(5) に解説がありませんか? >>1952 鈴木 状況がよくわかりません。command | grep -v '^$' とか? ところで、 >>1951 斎藤 >>1952 鈴木 REMOTE_HOST が同じですが、同じ方ですか? >>1953 後藤 どういう意味で「apache に繋ぐ」と言っているのかよくわかりません。 「〜はわかったが、〜の部分がわからない」という質問の仕方をして下さい。 >>1956 ひろ http://X68000.startshop.co.jp/~68user/net/ を読んで、 「〜はわかったが、〜の部分がわからない」という質問の仕方をして下さい。 ところで、 >>1953 後藤 >>1956 ひろ REMOTE_HOST が似ていますが、同じ方ですか? >>1954 ED わかりました。しかし、時間が取れないのですぐに作業することは できません。ご了承下さい。 >>1960 炭酸 ちょっと時間が取れないので、土日にでも調べてみます。 > これではうまくいかないようです。 どううまくいかないのか、エラーメッセージは出るのか、 PUT 一つだとどうなるか、などを書くと回答をもらいやすい かもしれません。 |
はじめまして。PERL版HTTPクライアントのページが、大変役に立ちました。ありがとうございます。 最近、会社のフィルタリング(^^;が厳しくなっきた為、ちょうど、作っていたところでした。STDOUTへ バーナーを挿入する無料サーバー(*1)を経由して、画像ファイル(*2)をGETする場合、一旦、 *2を*1へ保存してから、*2の埋め込みページを出力する、以外の面白いアイデアがあれは、お 聞かせ下さい。 #ウェブメールクライアントも作らないと(^^; |
レス、ありがとうございます。>68userさん。 言葉が足りませんでした。補足させてください。 RFC2616 の14.16あたりを読んでやってみています。 ■リクエスト 1回目 PUT /test.txt HTTP/1.1 Host: Content-Length: 10 Content-Range: bytes 0-9/20 あいうえお 2回目 PUT /test.txt HTTP/1.1 Host: Content-Length: 10 Content-Range: bytes 10-19/20 かきくけこ ■結果 レスポンスヘッダには Content-Range ヘッダがありません。 リクエストに Content-Range ヘッダがないときと同じように 動作しているようです。 サーバには「かきくけこ」というデータが上がった状態になります。 (2回目のリクエストで上書きされているようです。) サーバーのバージョンは、 Apache/1.3.12(Unix) (Red Hat/Linux) tomcat/1.0 DAV/1.0.0 mod_perl/1.21 です。ひょっとしてサーバーがレンジに対応していないのでしょうか? ネットワークプログラムの初心者なので、リクエストに問題があるのかと不安に 思い、質問させていただきました。 |
>>1964 68user > スカラーコンテキストなので、スカラー値が返ります。 うう。やはり基本的な事がわかってなかった。 何でスカラーコンテキストになるのかが 理解出来てなかったです。 今回の件で青ラクダ本のコンテキストの項や サブルーチン(プロトタイプ)の項を読んで 自作の関数に getprotobyname() 渡して その中で print したりして 何となく理解出来たつもりになりました。 # 今まで引数の型の宣言なんて知らなかった。 68userさん。ご回答ありがとうございました。 で、お礼の後の質問で恐縮なんですけど 自分なりに分かったつもりなった結果 > socket(SOCKET, PF_INET, SOCK_STREAM, @a=getprotobyname('tcp')) || warn "$!"; これの警告が出る理由は getprotobyname('tcp') の リストの要素数が 3つだからだとと思うのですが 実のところどうなんでしょう? # またもや間違っている可能性大 |
>68userさん ありがとうございます。 助かります。 |
>>1966 炭酸 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6 によると >If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a modified version of the one residing on the origin server. とあるので、 >サーバには「かきくけこ」というデータが上がった状態になります。 >(2回目のリクエストで上書きされているようです。) というのは仕様上正しい動作だと思います。 >>1960 炭酸 を読むと、おそらく「レジュームの逆」を行いたいのだと思うのですが、それは PUT ではできないと思います。 # FTP の PUT でもできないですよね? |
>>1967 /tk > これの警告が出る理由は getprotobyname('tcp') の > リストの要素数が 3つだからだとと思うのですが そうですね。 socket(SOCKET, PF_INET, SOCK_STREAM, @a=getprotobyname('tcp')) は Protocol not supported at -e line 1. となりますが、これは ('tcp','TCP',6) というスカラーが返って、 先頭の 'tcp' の値が使われるのでエラーになると思っていましたが、 勘違いでした。 ('tcp','TCP',6) というリストをスカラーコンテキストで評価 したため 3 が返り、 socket(SOCKET, PF_INET, SOCK_STREAM, 3) と等価になってしまったということですね。 >>1966 炭酸 すいません。今 apache で PUT メソッドを有効にするには どうすればいいんだっけ? と調べているところです。 # apache 単体では無理で、mod_put か DAV あたりを入れないと # ダメみたいですね。 また PUT や Content-Range は実際に使ったことがないので、 あまり期待しないで下さい。 |
>>1969 The WAY > http://way.direct.ne.jp/HTTP/ RFC2616 は流し読んだ程度なので、僕も勉強しないと。というわけで、 http://X68000.startshop.co.jp/~68user/net/rfc.html からリンクを張らせていただきました。 # http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/rfc.html |
大変勉強になり感謝しています。(本当だよ) パールの関数で $port = getservbyname('http','tcp'); の出力がなくて 悩んでいたのですが、今日その理由がわかりました。 プロバイダーの /etc/services に http tcp/80 のエントリが 無いのです。(-_-;) 試しに自分のPCの C:\windows\services を覗いたら ここにもエントリがありません。 他のウェルノゥンポートはエントリがあるのに 何故 HTTP のみがエントリされてないのでしょうか。 セキュリティーの関係なのでしょうか。 |
>>1972 moto > プロバイダーの /etc/services に http tcp/80 のエントリが > 無いのです。(-_-;) 例えば Solaris2.6 などは http tcp/80 がありませんね。 > 試しに自分のPCの C:\windows\services を覗いたら > ここにもエントリがありません。 生まれて初めて C:\windows\services を見ましたが、http の エントリってないのですね (Windows Me)。 Solaris は最小限のエントリのみ書いておくから、必要なら勝手に 追加してね、という思想じゃないかと想像します。Windows Me は なぜでしょうね? わかりません。 なお、UNIX では NIS というシステム情報を共有する仕組みがあります。 もしそれを使っているなら % ypcat services とすれば出てくる場合もあるでしょう。NIS 使用時には getservbyname は /etc/services を見ません。 |
どうもありがとうございます。>68userさん The Wayさん サーバーにはDAVが入ってるので、普通のPUTはできます。 もういちどRFCをよく見直してみます。 ほんとにありがとうございました。 |
はじめまして、ENOと申します。 質問その1: FreeBSD4.2で、ENIのatmアダプタを認識させ、 en0というインタフェースが出来たのですが、 これをmulticastに対応させたいのですが、 en0=841<UP,RUNNING,SIMPLEX>mtu 9180 となっていて、対応してくれません、 ここに<....,MULTICAST>となるようにするに は、どうしたらよいのでしょうか・・・どな たか教えてください その2: その1のマシンで、mroutedを動かして、マル チキャストルータとしたいのですが、webのあ ちこちにある資料にあるように、デフォルトで mrouted_enable="YES"としても、動いてくれま せん。mroutedを動く状態にするまでにどうした らよいのか教えてください 宜しくお願いいたします |
はじめて質問させていただきます。 本ページで色々勉強させて頂いてます(感謝) 当方のレベル)初心者 winsockを用いたマルチスレッドクラサバ作成調査中 クライアント・サーバ間の通信確立方法の基本は理解(してるつもり) 内容) クライアントからの接続要求が複数同時に(理論的に全く同時はありえないかもしれませんが)サーバにきた場合、サーバ側のリクエスト待ちプロセス内のlisten関数は、どのようにこの要求を処理するのでしょうか?つまり、全く同時のアクセスに対して、listen関数が作る待ち行列(キュー)にはどう格納されるのでしょうか? 要求受付後は、各クライアント毎に処理を並行に行う(マルチスレッド) ことができますが、要求受付部のlisten関数はマルチ対応なのかどうか 、前出の全く同時の接続要求はどう処理されるのかが分からないので、ご存知の方が、是非ご教授いただければありがたいです。 質問内容が初歩的かもしれませんが、よろしくお願いしますm(__)m |
>>1975 ENO マルチポストは禁止です。 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse >>1976 isaq 要は、listen が thread safe かどうか、ということでしょうか? 複数のスレッドが同時にクライアントとの接続を取り合ったりしないのか? と いう意味かと思いますが、listen は OS へ「クライアントからの接続を受け 付けなさいと」命令するだけです。それに対して、accept は OS がキュー イングしておいた待ち行列から、先頭のクライアントを取り出す命令。 というわけで、listen や accpet のマニュアルを見て、thread safe か どうかを確かめましょう。 FreeBSD ならばマニュアルに http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=listen&dir=jpman-4.3.0%2Fman 非スレッドライブラリ listen() は listen システムコールとして実装されています。 スレッドライブラリでは、 listen システムコールは _thread_sys_listen() に アセンブルされ、 listen() は読み書きについて s をロックしてから、 _thread_sys_listen() を呼び出す関数として実装されています。戻る前に listen() は s をアンロックします。 とあります。Windows は知りませんが、マニュアルに書いてあるのでは ないでしょうか。 あるいは、「スレッド」という用語を、pthread などの thread でなく、 単に「並行動作」という意味で使ってますか? |
skel.103Mです。いつもお世話になっております。 さて、 http://X68000.startshop.co.jp/~68user/Cgi-room/ の「MXレコードのお話」についてですが、質問させていただきたい ことがあります。 メールアドレスは、「{ユーザー名}@{ホスト名}」という構成をし ていますが、この{ホスト名}の部分に記述されたホストが実際に存 在する場合、即座に(MXレコードを参照せずに)そのホストに送ら れるのでしょうか。それとも、{ホスト名}に記述されたホストが実 際に存在したとしても、存在しないホストと同様に、まずMXレコー ドを参照し、その結果現れたホストに送られるのでしょうか。 先述したページを読むと、{ホスト名}の部分が存在しない場合に*のみ*、 MXレコードを参照し、その結果現れたホストに送られるものである、 と書いてあるように思えました。実際、これは(少なくとも私にとっ ては)直感に反しないことで、そうなのかなと納得してました。と ころが、某メーリングリスト宛てのメールが私に届きまして、ヘッ ダを見ると、To: の欄のメールアドレスのホスト名の部分(@より右側)が 実際に存在するホスト名であるにもかかわらず、Received: にその ホスト名が載ってない?!…ということがありましたので。 |
68user殿 ご指摘の通り、listenがthread safeかどうかが知りたかったわけです。 教えていただいたURL参考にさせていただき、もう一度調べ直してみて、分からなければ質問させていただきます。 また分かりましたら、報告させていただきます。 分かりにくい質問を投げてしまったけれど、お返事ありがとうございました。 ちなみに、OS:Windows 2000 でクラサバ開発しているのですが、私が使っているwinsock関連書籍で ”WinSock2.0プログラミング 発行:ソフトバンクパブリッシング” というのがあリます。もしwinsockを初めて使おうとしている方がいましたら一読すると良いかもしれません。 |
>>1978 skel.103M > この{ホスト名}の部分に記述されたホストが実際に存在する場合、 > 即座に(MXレコードを参照せずに)そのホストに送られるのでしょうか。 1. IP アドレス直接指定なら、直接 IP アドレス宛に送信 (Ex. To: foo@<127.0.0.1>) 2. 1 がダメで、MX が引けたなら、優先順位を考慮して MX 宛に送信 3. 2 がダメで、A レコードが引けたなら (=正引きできた)、A レコード宛に送信 という順序だと思います。なので、MX が優先ですね。 多分、ここらへんは RFC 2821 に書いてあると思います。 # http://ring.riken.go.jp/pub/doc/RFC/rfc2821.txt |
どうも、skel.103Mです。ご返答どうもです。 メールアドレスと送信先ホストの件、了解しました。私なりに調べた ところ、RFC2821の「5. Address Resolution and Mail Handling」で、 > are generally discouraged. The lookup first attempts to locate an MX > record associated with the name. If a CNAME record is found instead, > the resulting name is processed as if it were the initial name. If > no MX records are found, but an A RR is found, the A RR is treated as > if it was associated with an implicit MX RR, with a preference of 0, > pointing to that host. If one or more MX RRs are found for a given > name, SMTP systems MUST NOT utilize any A RRs associated with that > name unless they are located using the MX RRs; the "implicit MX" rule > above applies only if there are no MX records present. If MX records > are present, but none of them are usable, this situation MUST be > reported as an error. とありますね。なるほど。ちなみに、RFC974にも似たような記述があり ましたね(現在はHISTORICですけど) ただ、分からないのは、なぜこのように定められているのか、その理 由が私にはよく分かりません。。私には直感に反するように思うんで すが…… |
「ソースを表示してみよう」で、 http://www.chailien.com/ が、正常表示されません。 |
>>1981 skel.103M たとえば UNIX マシンが数百台あるような環境があるとして、 % hostname host123.example.ac.jp % whoami user のとき % echo | mail foo@bar などとすると、 From: user@host123.example.ac.jp なメールが foo@bar 宛に届きます。 このままリプライをすると host123.example.ac.jp 宛に メールが送られますが、数百台全てのマシンに SMTP サーバを立ち上げておくのは現実的ではありません。 で、それらの MX を mail.example.ac.jp に指定しておけば、 From: user@host123.example.ac.jp であっても MX 宛に届きます。もちろんその際には MX レコードが A レコードより優先されなければいけません。 …という感じで僕は理解しておりますが、いかがでしょうか。 >>1982 匿名 どうもです。直しました。 |
skel.103Mです。68user様、ご返答どうもです。 >>1983 68user なるほど!よく分かりました。 そこで、実際にそうなっていることを確かめるために、某ネットの (すなわち大学以外の)マシンを使って以下の要領で実験を行って みました。 ・送信元ホスト:test.bounet.net ・宛先メールアドレス:s1080224@exist.u-aizu.ac.jp 正式なメールアドレスではなく、@の右側を実際に存在するホスト 名に改竄。 結果は以下のようになりました: ---------- 1. まずMXレコードを調べておく。 →@exist.u-aizu.ac.jpのアドレスに対応するMXレコードは mailhost.u-aizu.ac.jpである。 [bounet] % nslookup Default Server: localhost Address: 127.0.0.1 > set q=mx > exist.u-aizu.ac.jp. Server: localhost Address: 127.0.0.1 Non-authoritative answer: exist.u-aizu.ac.jp preference = 10, mail exchanger = mailhost.u-aizu.ac.jp Authoritative answers can be found from: …(省略)… [bounet] % 2. メールを送信。 [bounet] % telnet localhost 25 Trying 127.0.0.1... Connected to localhost.bounet.net. Escape character is '^]'. 220 test.bounet.net ESMTP Sendmail 8.11.3/***************; Thu, 24 May 2001 20:47:40 +0900 (JST) EHLO localhost 250-test.bounet.net Hello localhost.bounet.net [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-SIZE 250-DSN 250-ONEX 250-ETRN 250-XUSR 250 HELP MAIL FROM: testerz@bounet.net 250 2.1.0 testerz@bounet.net... Sender ok RCPT TO: s1080224@exist.u-aizu.ac.jp 250 2.1.5 s1080224@exist.u-aizu.ac.jp... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Subject: test X-Mailer: telnet JiKaUcHi (^^;;; This is a test mail. . 250 2.0.0 f4OBm4K02587 Message accepted for delivery quit 221 2.0.0 test.bounet.net closing connection Connection closed by foreign host. [bounet] % 3. 送信ログを確認する。 →配送先はexist.u-aizu.ac.jpでは*なく*、MXレコードとして指定され ているホストmailhost.u-aizu.ac.jpに配送された。 May 24 20:50:34 test sendmail[2587]: f4OBm4K02587: from=testerz@bounet.net, size=**, class=0, nrcpts=1, msgid=<200105241149.f4OBm4K02587@test.bounet.net>, proto=ESMTP, daemon=Daemon0, relay=localhost.bounet.net [127.0.0.1] May 24 20:50:41 test sendmail[2596]: f4OBm4K02587: to=s1080224@exist.u-aizu.ac.jp, ctladdr=testerz@bounet.net (****/****), delay=00:01:22, xdelay=00:00:07, mailer=esmtp, pri=30069, relay=mailhost.u-aizu.ac.jp. [163.143.1.43], dsn=2.0.0, stat=Sent (UAA23329 Message accepted for delivery) ---------- たしかに、MXレコードがAレコードより優先されていますね。 どうもありがとうございました。 これからもよろしくお願いします! |
お久しぶりです。 ちょっと思うところがあって、掲示板の検索をしたのですが、ふと疑問が出てきました。 http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi?query=http&whence=0&max=20&result=normal&sort=score とかしますと、>とか<とか"とかが、>とか<とか"e;と表示 されるみたいです。これは、仕様ですか? あと、同じページの最後に、webmaster@www2.startshop.co.jp と ありますが、このwww2は、http://x68000.startshop.co.jp/~68user/ から推測するに、間違いなのではないですか? 違ったら済みません。 |
初めて書き込みさせていただきます。 和文で,改行を空白に置換する方法を ご存知の方はいないでしょうか。 例) おはよう こんにちは こんばんは ↓ おはよう こんにちは こんばんは 目的は,ウェブページのフォームから送られた文章を, 表示するページの都合で,改行無しの文に変更することです。 よろしくお願いいたします。 |
>>1986 椎 HTMLならば加工するまでも無く改行が無視されますが? |
>>1985 へにか > >とか<とか"e;と表示されるみたいです。これは、仕様ですか? いえ、正しくは < > " と表示されるべきです。この掲示板の データ用の文書フィルタ http://www.namazu.org/doc/manual.html#doc-filter を作成したのですが、それが不十分な状態です。 > あと、同じページの最後に、webmaster@www2.startshop.co.jp と > ありますが こちらも正しくは 68user@X68000.startshop.co.jp です。これは… どこで設定するんだっけ。なんかコンパイル時に埋め込まれるような 気がしないでもないなぁ。 両方とも調べて直しておきます。ご指摘ありがとうございました。 >>1986 椎 > 目的は,ウェブページのフォームから送られた文章を, > 表示するページの都合で,改行無しの文に変更することです。 ちゃんと使っている環境を書きましょう。perl なら $str =~ s/\r\n|\n/ /g (半角空白に置換したい場合) $str =~ s/\r\n|\n/ /g (全角空白に置換したい場合) でしょうか。 |
初めて書き込みします。 UNIXのシステム音のビープ音の音量を大きくしたいのですが、どうすれば いいのでしょう。CDEデスクトップツールでビープ音の調整というのがあっ たのですが、その最大値よりもさらに大きくしたいと思ってます。 このビープ音は内部スピーカーから鳴っている様で、もし音量を調整でき ないのであれば内部スピーカーを外部スピーカーに切り替える方法を知り たいのですが、誰か分かる人いませんか。 どうぞよろしくお願いします。 |
いつも困ったときばかり相談ですみません。 #! perl ... for (sort {&year($b) <=> &year($a)} glob './bank*.txt') { my $foooo = &year($_); warn ":::: [$idat2] vs [$foooo]"; if ($idat >= $foooo) { warn "!!!!:::: [$idat2] >= [$foooo]"; open BANK, $_ or die "can't open $_ because $!"; last; } } という文が CGI の中にあって、 エラーログに :::: [20010730] vs [20010701] at /html/cgi-bin/foo.cgi line 319. :::: [20010730] vs [20010601] at /html/cgi-bin/foo.cgi line 319. :::: [20010730] vs [00000000] at /html/cgi-bin/foo.cgi line 319. !!!!:::: [20010730] >= [00000000] at /html/cgi-bin/foo.cgi line 321. と出ます。 20010730 対 20010701 の時点で 20010730 が勝つと思うのに納得いきません。 助けてください〜 |
試みに s/>=/ge/ してみたら(ゼロづめなので文字として比較しても同じかと思って)、 :::: [20010530] vs [20010701] at /html/cgi-bin/foo.cgi line 319. !!!!:::: [20010530] ge [20010701] at /html/cgi-bin/foo.cgi line 321. だそうです。(T.T) |
すっすいませんでした。 過去の2発言、忘れてください。 (文字面で、もういきなりバグってます) |
>>1987 通りすがり > HTMLならば加工するまでも無く改行が無視されますが? すみません。意味がわかりませんでした。 >>1988 68user > ちゃんと使っている環境を書きましょう。 すみません,忘れていました。 使い方も読んでいなくて,申し訳ありませんでした。今後は気を付けます。 ご推察の通り,環境はperlです。 $str =~ s/\\n/ /g なんて自分で書いて試してみたらできなかったので 書き込ませていただいたのです。 今回, $str =~ s/\r\n|\n/ /g で,試してみたのですが,上手くいきませんでした。 でも,基本的に考え方は間違っていなかったようだと わかったので助かりました。 もしかしたら,プログラムの他の部分に問題があるのかもしれません。 チェックし直してから,報告させていただきます。 |
このページは、めちゃくちゃためになりますね。 今後も参考になることをやってくれるとありがたいっす。 |
このページのおかげで,ネットワーク全体が見えてきました. 本当にありがとうございます. これからも参考にさせていただきたいので, このHPがずっとなくならないことを心よりお願いいたします. これからも頑張ってください. |
どうも忙しくて回答さえ満足にできませんな。いかんことです。 >>1989 gooo > もし音量を調整できないのであれば内部スピーカーを外部スピーカーに > 切り替える方法を知りたいのですが、 最大限に上げたのならもう音量は調節できないでしょう。 後はハード工作になるんですかね。その方面は全くわからないので、 すいませんがわかりません。 >>1990 ふくし >>1991 ふくし >>1992 ふくし えっと、解決したんですよね? >>1994 PC歴5ヶ月 >>1995 といも どもども。とはいえ時間がなくて更新も満足にできないのですが。 |
>68userさん Sega BBSの件なんですけど、 消去が時間かかりそうだったら、 とりあえずロボット検索に 引っかからないように、しといてほしいのですが… 早めにお願いします。 http://www.google.com/intl/ja/faq.html お忙しいところすいません。 よろしくお願いします。 |
初めまして。質問です。 ホームページ本体を置くサーバー(A)とCGIサーバー(B)が別になっていて、 サーバーAにあるHTMLファイルからサーバーBにあるCGIを呼び出し、 サーバーAにある別のファイルの情報を取得するため、以下のように記述しました。 open FH ,"http://www.abc.co.jp/xyz/index.html" or die "open失敗:$!"; しかし、うまくファイルをオープンすることができませんでした。 パスを相対的に指定すれば成功するのですが、絶対的に指定すると、 CGIサーバー内であってもオープンできません。 これはこういう仕様なのでしょうか。 そうだとすれば、他にいい方法はあるのでしょうか。(被参照ファイルをサーバーBに置く以外で) ご回答をよろしくお願いいたします。 |
>>1997 ED ロボットよけ META タグを追加しました。 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 時間が取れたらコンテンツ自体を削除します。 >>1998 田中 > open FH ,"http://www.abc.co.jp/xyz/index.html" or die "open失敗:$!"; open というのはファイルをオープンするもので、ファイルいうのは マシンに接続されている HDD や CD-ROM に格納されているものを 指します。 # っていうととても語弊がありますけど。将来的にはそういう指定の # 仕方ができるようになるんじゃないかと思います。 なので、それをしたければサーバ B で動かすプログラムから サーバ A の web サーバにアクセスして http://www.abc.co.jp/xyz/index.html を取得しなければいけません。仕組みについてはここらへんを。 http://X68000.startshop.co.jp/~68user/net/ 実際は wget, fetch などのコマンドや、(perl なら) LWP, IO::Socket などのモジュールを使ってサーバ A から /xyz/index.html を 取得するのがお手軽です。 |
68userさん、素早い回答をありがとうございました。 教えて頂いたやり方は、私にはまだ高度すぎるようです。 もう少し勉強してみます。 |
はじめまして。初男と申します。 質問があります。 あるシェルスクリプトを実行し成功するのですが、 remshを使って、 remsh 自分のサーバ名 -n スクリプト名 として、実行すると、sortの処理でエラーが出てしまいます。 sortは、remshを使うとどうしてエラーになってしまうのでしょうか? ご存知の方は教えていただきたいと思います。 よろしくお願いします。 |
>>2001 初男 具体的にどういう書き方をしていて、どういうエラーが出ていますか? |
68userさん、お返事ありがとうございます。 あのあと、調査して、原因がわかりました。 ありがとうございました。 |
はじめまして!僕はUNIXなどのプログラム関係は全く理解できなかったのですがこちらのサイトではとてもわかりやすく説明されているため大変勉強させていただきまことに感謝いたしております。これからも応援いたしますのでがんばってください。 |
はじめまして。初訪問で初投稿です.宜しくお願いします. 現在、[A装置]−[Router]−[B装置](簡単に記述)で接続した環境で、RouterにてIP Filteringの設定を追加しようとがんばっています。[A]→[B」は、RCPによるファイルの送受信を行っているため、RCP以外のアプリケーションプロトコル(Telnetとか)を遮断する方法を探しております。 まずは、「全アプリケーションプロトコル遮断」として、「RCPだけ通過」という方法を取ろうと思っているのですが、【RCPのポート番号】が不明です.【RCP】は、Welknown-portではないのでしょうか?UNIXがその都度ポート番号を取得してしまうのでしょうか?ご存知の方教えて下さい. |
>>2005 ネットワークセキュリティ > 【RCPのポート番号】が不明です shell 514/tcp です。 こういう場合はサイズの大きなファイルを rcp しておいて、 その間に netstat -a を実行すればよいでしょう。 |
>>2005 ネットワークセキュリティ 蛇足ですがセキュリティを気にするのなら r系のコマンド自体使わない方が良いかと思いますが・・・。 |
はじめまして。もっちと申します。 いつも参考にさせていただいています。 はじめて投稿させていただきます。 http⇔https(https⇔https)のsocket通信をC言語で実現させたいのですが、 情報が無い為、何をどうすれば良いのかわかりません。 http⇔httpの通信はこちらのホームページを参考にさせていただいて、 実現することが出来ました。(ありがとうございます) いろいろ情報を検索して、opensslを使用すれば良いということまでは わかったのですが、それをどの様に使用すれば、暗号化が行われ、 通信を行い、受信データを複合できるのかわからず、悩んでおります。 情けないのですが、私には余りC言語での開発経験がありません (普段はPerlを使用しています) ですので、余計に訳がわからなくなってきております。 どなたか、この問題に関する情報をお持ちの方、いらっしゃらないでしょうか? 開発環境は、Solaris SunOSです。 opensslなど、必要と思われるものは準備されております。 (他に必要なものなどあれば、それも併せて教えていただければ幸いです) どうぞ、よろしくお願い致します。 |
>>2008 もっち 僕には難しいことはわかりませんが、とりあえず OpenSSL のマニュアル http://www.openssl.org/docs/ssl/ssl.html OpenSSL 和訳サイト。古いかも。 http://www.infoscience.co.jp/technical/openssl/docs/ssl.html SSLを使った暗号化通信のやり方 http://stingray.sfc.keio.ac.jp/security/ssl/ssl.html RFC 2246 TLS-1.0 (≒ SSL-3.0) http://ring.asahi-net.or.jp/archives/doc/RFC/rfc2246.txt ここらへんを参考にしてみて下さい。 |
>>2009 68user 68user様、早速のご返答ありがとうございます!! >OpenSSL のマニュアル の方は、私のほうでも見つけていたのですが、何を書いているのか 理解出来ず、挫折していました。 >SSLを使った暗号化通信のやり方 早速行ってきました。 まだ、詳細まで読んでいませんが、説明がスゴク丁寧で、 私の知りたかった関数の説明までされていて、私のようなC言語未熟者にも 理解できそうな気がします。 教えていただいたサイトを参考にして、実現できる様、頑張って見ます。 実現出来次第、報告に伺います!! |
「ネットワークセキュリティ」の件 >>2007 hsj hsjどの ご指摘の通り、R系のコマンドを使用している時点でセキュリティに問題ありとは認識しています。。。先にこっちを対応すべきかもしれませんね。参考にさせていただきます。 >>2006 68user 68userどの ポート番号の件ありがとうございます。 さっそく、設定値反映して確認します。確認結果は後日ご報告します。 |
初めまして、すごく初心者の者です。 早速質問なのですが、HTTPでは要求などを文字列として送ってるだけなのでしょうか。つまり GET /test/test.html HTTP/1.0 などの文字列を相手に送ってるだけでしょか。 相手側では、その文字列を受け取って、Javaのtokenizerとかで、文字を切り出して s1="GET" s2="/test/test.html" s3="HTTP/1.0" if(s1.equals("GET"){} でプログラムで処理して結果をクライアントに文字列で返して、 またブラウザが文字列を切り出して、レイアウトしているだけでしょか。 だから、自分でも送られてくる文字列を受けることができて、文字列を見れて、また、HTTPで文字列を返すプログラムが書けるのでしょうか。 また、こんな質問を受け付けてる掲示板をご存知でしたら教えてください。 |
こんにちは、お邪魔します。 >HTTPでは要求などを文字列として送ってるだけなのでしょうか。 そうです。人間が見て理解できるので楽しいですよ。 >相手側では、その文字列を受け取って、Javaのtokenizerとかで、文字を切り出して 相手側=WWWサーバーと考えると、おっしゃる通りだと思います。 受け取った文字を解釈して、レスポンスを(画像だったりもしますので全て文字列とは限りませんが)ブラウザに送ります。 ブラウザは、受け取ったデータがHTMLの場合はそれを解釈して(文字列を切り出して)レイアウトして表示します。 >だから、自分でも送られてくる文字列を受けることができて、文字列を見れて、また、HTTPで文字列を返すプログラムが書けるのでしょうか。 書けます。 偶然、先日「まさにそれ」というような物を書いたので、良かったら見てみて下さい(だからノコノコ出てきてしまいました)。 http://www.gyosatu.com/jumper/software/MHTTPD/MHTTPD.java http://www.gyosatu.com/jumper/cgi-bin/bbs/bbs2.pl?bbs=jumper&i=110#3 に、コンパイルと起動の仕方をごく簡単に書いてあります。 #もし分からなくてかつ動かしたかったら言って下さい。 まさに >if(s1.equals("GET"){} のような処理をしている筈です。 受け取った文字列を見えるように改造するのも簡単だと思います。 >また、こんな質問を受け付けてる掲示板をご存知でしたら教えてください。 ここが適切だと思います。 |
またまたお世話になります。 bash上で以下のようにすると、 # tail -f anylog.log ログに追加される内容が逐次見られますが、コレをちょっと変更して # tail -f anylog.log | grep "extract_keyword" > /dev/tty0 & として、ログインしていないコンソールに表示させようとしましたが、 jobs で表示されないため、停止が出来なくなりました。 ps で見てみると、プロセスの親子関係が無くなっているように見えます。 これはどうしてなんでしょうか? また、このコマンドを実行したコンソールがログアウトした時に 同時に終了させたいのですが、どう指定すればいいでしょうか。 アドバイスをよろしくお願いします。 |
こんにちは。 私は今ソケットを使ったプログラムを作成していて、 いろいろ調べてたら、このサイトが見つかり非常に助かってます。 そこで質問なのですが以下のURLよりDLしたものをコンパイルし、 実行するとコアダンプしませんか? http://www2.startshop.co.jp/~68user/net/sample/http-client-2.c 私はWindows2000(Cygwin)でもSolarisでも コアダンプしました。 最初は自分でかなりいじってしまったので、 そのせいかなぁとも思ったのですが、 DLしたものをそのまま使ってもなっちゃいました。 今、修正しようと思ってるのですが、 なかなかうまくいきません。 どなたか知ってる方いらっしゃいませんか? 教えて下さい。 よろしくお願いします。 |
>>2014 スナフキン > # tail -f anylog.log | grep "extract_keyword" > /dev/tty0 & > として、ログインしていないコンソールに表示させようとしましたが、 > jobs で表示されないため、停止が出来なくなりました。 こちらの環境の bash では、jobs で表示できました。 関係ないかもしれませんが、 % (tail -f anylog.log | grep "extract_keyword" > /dev/tty0) & だとどうなりますか? > また、このコマンドを実行したコンソールがログアウトした時に > 同時に終了させたいのですが、どう指定すればいいでしょうか。 bash で & を付けると、SIGHUP をブロックしてしまったような 気がしますが…。違ったっけ。回避策は知りません。bash 使いの 方、いらっしゃいますか? >>2015 nana > 以下のURLよりDLしたものをコンパイルし、実行するとコアダンプ > しませんか? こちらの FreeBSD, Solaris, Linux 環境ではコアダンプしません でした。引数はどのように指定しましたか? また、-g を付けて コンパイルして、gdb で backtrace するとどう表示されますか? % gcc -g -o http-client-2 http-client-2.c % gdb http-client-2 (gdb) run http://www.yahoo.co.jp/index.html Starting program: http-client-2 http://www.yahoo.co.jp/index.html Program received signal SIGSEGV, Segmentation fault. 0xef5a4674 in strlen () from /usr/lib/libc.so.1 (gdb) backtrace #0 0xef5a4674 in strlen () from /usr/lib/libc.so.1 #1 0xef776b74 in _doprnt () from /usr/ucblib/libucb.so.1 #2 0xef777aa4 in printf () from /usr/ucblib/libucb.so.1 #3 0x11320 in main (argc=2, argv=0xeffffac4) at http-client-2.c:108 # 今気づきましたが、引数に「http://」を指定したときに # エラーで弾かないのはバグですね。 |
早速質問なのですが、 MACアドレスとIPアドレスの両方が必要な理由を教えてください。 あと、windowsのDOSでarp -aとタイプしてもNO ARP Entries Foundと出てしまうのは、なぜですか。どういったときに、テーブルにMAC,IPの対応がたされるのですか。www.goo.ne.jpとかにアクセスしただけではだめなのですか。 通信するときに,最初IPアドレスでその通信相手のマシンからMACアドレスの情報を得て、それからまた、パケットにIP,MAC両方のアドレスをつけて、また、その相手のマシンにパケットを送るのは、無駄じゃないですか。 あと、初心者がネットワークエンジニアになるための勉強に、お勧めの参考書、ホームページ、どのようなステップをふめばいいか、皆さんの意見、経験を教えて下さい。 |
>>2017 aiko > windowsのDOSでarp -aとタイプしてもNO ARP Entries Foundと > 出てしまうのは、なぜですか。 Ethernet カード (=ネットワークカード=NIC) を使っていますか? MAC アドレスは Ethernet カードに対して割り振られるもので、もし ダイヤルアップ PPP を利用していたら arp テーブルは全く利用されません。 > MACアドレスとIPアドレスの両方が必要な理由を教えてください。 IP データグラムの最大長は 64K バイトですが、Ethernet フレームの 最大長は 1500 バイト程度です。64K バイトの IP データグラムを Ethernet 上で送信する場合、数十個の Ethernet フレームに分割 しなければいけません。 宛先 IP アドレスが書いてあるのは IP データグラムの先頭だけなので、 分割した途中の Ethernet フレームを見ても、宛先 IP アドレスは わかりません。つまり Ethernet というレイヤでは、通信先を特定 のに IP アドレスが使えないわけです。ここに MAC アドレスの 存在理由があります。 より根本的には、Ethernet というのは IP に特化したものではないから、 というのが説明になるでしょう。例えば ADSL で使われている PPPoE (PPP over Ethernet) がその一例です。 # http://www.rtpro.yamaha.co.jp/RT/docs/pppoe/ |
>>2018 68user >64K バイトの IP データグラムを >Ethernet 上で送信する場合、数十個の Ethernet フレームに分割 >しなければいけません。 結局は、分割したEthernetフレームの1個1個にMACアドレスがたされるということですか。もしかして、そのEthernetフレームにIPアドレスを1個1個つけてもいいけど、IPアドレスの大きさが保証されてないから(IPv6に変わったり)、Ethernetフレームのアドレス用の領域分(フレーム構成)が、IPアドレスの大きさが変わった場合に影響受けるのは、階層的?にまずいということですか。 だから、IP(プロトコル)とは別に、LAN上では、独自のプロトコルでフレーム構成を決めて、MACアドレスで配信してるということですか。 >Ethernet カード (=ネットワークカード=NIC) を使っていますか? 自分の環境って関係ないんじゃないですか。だって相手のMACアドレスが知りたいわけだから。自分は、Laneed LD-10/100AWLとかいうカードで、ハブにつないで、LANに接続してます。 あと、MACアドレスを問い合わせない通信ってあるんですか。 IPデータグラムって、自分のマシンから出て行くときに絶対Ethernetフレームに分解されて出て行くんですか。 ネットワークって難しいですね。是非、勉強方法など教えてください。 |
>>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 をお使いのようですが、毎回必ず 環境を書いた方がよいでしょう。 |