• ベストアンサー

http://****/の形をしたURIの総数

http://****/ 上記のような形をした文字列のうち、URIとして正しいものは何個ありますか? ただし、*には任意の文字が入るものとします。

質問者が選んだベストアンサー

  • ベストアンサー
  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

URIの形式として scheme://[username[:password]@]hostaddress[:port][path] scheme = http path = / ・username,password に関する制限は何かあったかな? ・hostaddressについて DNS表記では RFC1035によると ホスト名の最大サイズは63オクテット FQDN の最大サイズは255オクテット それぞれ最小サイズは1オクテット RFC4343によると、大文字小文字は区別しないことになっていますが、有効なURIとして考えるなら大文字小文字は区別することになりますね。 使用できる文字はアルファベット,-,数字 Windowsの場合はこれに _ が追加されます IPv6 直アドレスの形式の場合は16進数表現で、あらわされ、 [0000:0000:0000:0000:0000:0000:0000:0000] 03ef などは 3ef として表現してよい 0000:0000 など、0が連続する場合は :: で短縮できる。 日本語ドメインに関してはよくわかりませんがこれもURIとしては有効です。 ・port について 0~65535 まで ・・・頑張って計算してください。

0x4F4B
質問者

お礼

長いURIでは計算が複雑になってしまいますが、 ****が4文字であるとしたら、どうでしょうか。 簡単にするため、実装上の違いは考慮せず、 現時点で標準とされているRFCなどの技術文書の仕様に従ってURIかどうかを判定するのが良いかも知れません。 最初はURIに使える文字と、2文字のトップレベルドメインの総数が分かれば求められるのではないか、と思っていました。 つまり、ASCII順に並べたとき最初に来るURIは、「http://-.ac/」ではないかと考えていました。 .acドメインのレジストラが、-という文字の使用を認めていないかもしれませんが...。 しかし「http://localhost/」というのも正しいURIですから、hostsファイルの設定によっては「http://----/」のようなURIもあり得るのでしょうか?

その他の回答 (7)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.8

> > もし参考文献などご存じであれば教えてくださいな。 > RFC2616 これですか。HTTP/1.1ですね? http://www.ietf.org/rfc/rfc2616.txt ざっとそれらしい記述を探してみましたが見つかりませんした。 一瞬、3.2 Uniform Resource Identifiersの "... and finally the combination of Uniform Resource Locators (URL) [4] and Names (URN) [20]." あたりかと思ったけど、これは意味合いが違うだろうし。 どの辺を見て回答No.3の結論になりました? なお、私が読んだ文献は、 http://www.ietf.org/rfc/rfc3986.txt で、 3. Syntax Componentsの > URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] > > hier-part = "//" authority path-abempty > / path-absolute と、3.3. Path の > path-abempty = *( "/" segment ) > segment = *pchar より、 http://a.jp/http://a.jp/aaa/ もURIになると判断しました。 > > 私は、URLやURNはディレクトリやファイルより抽象的な概念だと思ってました。 > 私はディレクトリやファイルと同じ抽象的な概念と考えます。 URLやURNはファイルやディレクトリ以外のリソースを指すかもしれないこと、 queryやfragmentの様な情報もURIに含まれることから、 ファイルより抽象的な概念だと前回発言しました。 でもよく考えてみると、抽象度の違いと言うよりは ディレクトリやファイルを包括したより広い概念であると言う方が 近い表現な気もしてきた。 使える文字種は、RFC3986だと 3.2.2. Hostに > host = IP-literal / IPv4address / reg-name > reg-name = *( unreserved / pct-encoded / sub-delims ) なのでかなり緩い感じです。さすがに日本語は入ってませんけどね。 この近くに、この仕様書では特定のルックアップ技術を強制しないとか、 しかし広い範囲で使うURIではFQDNみたいなのが必要とか記述があるので、 必要ならRFC1034 "Domain names - concepts and facilities" 等の文献を当たれと言うことかな。 No.2のお礼で現存するTLDまで気にしてるみたいだからそれに関わる情報もいるのか…。 IANAにこんなのあったけどこれで全部なんだろうか? http://data.iana.org/TLD/tlds-alpha-by-domain.txt

0x4F4B
質問者

お礼

この質問を解決するには、より単純な問題から始めて、それを徐々に一般化していく方法が必要になると思います。 誠に勝手ながら、ここで一旦締め切らせていただきます。 次の議論に移りましょう。

回答No.7

> http://****/​の「****」は、任意の1文字(/を含むあらゆる文字)を4つ並べた、長さが4の文字列です。 ああ、そういうことですか。 文字数が限定されてるなら、計算で出せるんじゃないですかね。 使用できる文字種はNo.2に出てますので、計算してみてください。 > もし参考文献などご存じであれば教えてくださいな。 RFC2616 > 私は、URLやURNはディレクトリやファイルより抽象的な概念だと思ってました。 私はディレクトリやファイルと同じ抽象的な概念と考えます。 アクセスする方法(通信プロトコルやハードディスクとのデータを送受信する方法)の違いと、 人が見たときにわかりやすくするために、\で区切るか:で区切るか、/で区切るかの違いだけの。

0x4F4B
質問者

お礼

taloo様ほか、皆様ご回答ありがとうございます。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.6

> ディレクトリを示すURLとファイル名を示すURNをつなげたものがURIと思っていましたが URLやURNにそんなに詳しい訳じゃないけど、 調べた限りではURLがディレクトリだとかURNがファイル名だとか解釈できる文献は見つけられませんでした。 初耳だったからあらためて探しては見たのですが。 もし参考文献などご存じであれば教えてくださいな。 私は、URLやURNはディレクトリやファイルより抽象的な概念だと思ってました。

回答No.5

ディレクトリを示すURLとファイル名を示すURNをつなげたものがURIと思っていましたが、、、 No.1にも書いているとおり、PATH_INFOとして/で終わる事もありますので、URLにもURIにもなるかもしれませんが、 もしそうなら、 http://www.example.com/ http://localhost/a/b/c/ これらはすべてURIになり得る、という事ですよね。 (任意の1文字 -> / も含まれる) URIの文法上の字数制限はない(と思う。実質ブラウザやサーバー依存)ので 無限数の文字を並べた最後に/をつけておけば、質問文の条件は満たされると思います。 (実用性云々はぬきにして。) 任意の1文字に/を含めないのであれば、No.2が正解じゃないでしょうか。 小ネタ。 http://2130706433/ RFCには反していますが、一部のブラウザはhttp://localhost/またはhttp://127.0.0.1/にアクセスします。 http://1.2.3.4/としたとき http:// 1 * 256^3 + 2 * 256^2 + 3 * 256^1 + 4 * 256^0 / で計算できます。

0x4F4B
質問者

お礼

> 無限数の文字を並べた最後に/をつけておけば、質問文の条件は満たされると思います。 満たされませんよ。 http://****/の「****」は、任意の1文字(/を含むあらゆる文字)を4つ並べた、長さが4の文字列です。 無限数の文字を並べてしまうと、この条件を超えてしまいます。

0x4F4B
質問者

補足

申し訳ありません。 下記のお礼で勘違いをしていました。 無限数の文字というのは、「任意の1文字」にあたるものが無数にある、ということですよね。 例えば、 http://例え.テスト/ というのは正しいURIではないのではないでしょうか。 正しくは、 http://xn--r8jz45g.xn--zckzah/ のようにPunycodeエンコードしなければならないので、後者が正しいURIになるのではないか、ということです。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.4

URLはURIのサブセットだから、 URLであるならURIでもあるんじゃないの?

0x4F4B
質問者

お礼

URLとURNを拡張して一般化したものがURIだと思っていましたが、どうなのでしょうか。

回答No.3

hostaddress(いわゆるドメイン名)については上限はありますが、 http://a.jp/ これはURLであって、URIになり得るんですかね? http://a.jp/index.html や、 http://a.jp/menu.html ならURIですが。 、、、と、思ったので0と答えたわけですが。

0x4F4B
質問者

お礼

私は、 http://a.jp/ http://a.jp/index.html file://home/ urn:isbn:0-123-45678-9 上記のようなものがすべてURIだと思い込んでいました。

回答No.1

なぞなぞですか? URL/URIの長さに規定はありません。 PATH_INFOやQUERY_STRINGとして/で終わるURIも考えられるので 無限 とも言えますし、 文法上はpathとしての/以外の"/"はパーセントエンコードしなければならないので、/で終わるURIは存在しないと考えると、(PATH_INFO、QUERY_STRINGを考えない場合に限る) 0 とも言えます。

0x4F4B
質問者

お礼

科学的な質問です。 言葉足らずで申し訳ありません。 *には、任意の1文字 (char) が入るという意味です。 「http://a.jp/」という文字列がURIの要件を満たし得るならば、答えは1個以上あるといえます。

関連するQ&A