http://****/
上記のような形をした文字列のうち、URIとして正しいものは何個ありますか?
ただし、*には任意の文字が入るものとします。
No.1
- 回答日時:
なぞなぞですか?
URL/URIの長さに規定はありません。
PATH_INFOやQUERY_STRINGとして/で終わるURIも考えられるので
無限
とも言えますし、
文法上はpathとしての/以外の"/"はパーセントエンコードしなければならないので、/で終わるURIは存在しないと考えると、(PATH_INFO、QUERY_STRINGを考えない場合に限る)
0
とも言えます。
科学的な質問です。
言葉足らずで申し訳ありません。
*には、任意の1文字 (char) が入るという意味です。
「http://a.jp/」という文字列がURIの要件を満たし得るならば、答えは1個以上あるといえます。
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 まで
・・・頑張って計算してください。
長いURIでは計算が複雑になってしまいますが、
****が4文字であるとしたら、どうでしょうか。
簡単にするため、実装上の違いは考慮せず、
現時点で標準とされているRFCなどの技術文書の仕様に従ってURIかどうかを判定するのが良いかも知れません。
最初はURIに使える文字と、2文字のトップレベルドメインの総数が分かれば求められるのではないか、と思っていました。
つまり、ASCII順に並べたとき最初に来るURIは、「http://-.ac/」ではないかと考えていました。
.acドメインのレジストラが、-という文字の使用を認めていないかもしれませんが...。
しかし「http://localhost/」というのも正しいURIですから、hostsファイルの設定によっては「http://----/」のようなURIもあり得るのでしょうか?
No.3
- 回答日時:
hostaddress(いわゆるドメイン名)については上限はありますが、
http://a.jp/
これはURLであって、URIになり得るんですかね?
http://a.jp/index.html や、 http://a.jp/menu.html ならURIですが。
、、、と、思ったので0と答えたわけですが。
私は、
http://a.jp/
http://a.jp/index.html
file://home/
urn:isbn:0-123-45678-9
上記のようなものがすべてURIだと思い込んでいました。
No.4
- 回答日時:
URLはURIのサブセットだから、
URLであるならURIでもあるんじゃないの?
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 /
で計算できます。
この回答への補足
申し訳ありません。
下記のお礼で勘違いをしていました。
無限数の文字というのは、「任意の1文字」にあたるものが無数にある、ということですよね。
例えば、
http://例え.テスト/
というのは正しいURIではないのではないでしょうか。
正しくは、
http://xn--r8jz45g.xn--zckzah/
のようにPunycodeエンコードしなければならないので、後者が正しいURIになるのではないか、ということです。
> 無限数の文字を並べた最後に/をつけておけば、質問文の条件は満たされると思います。
満たされませんよ。
http://****/の「****」は、任意の1文字(/を含むあらゆる文字)を4つ並べた、長さが4の文字列です。
無限数の文字を並べてしまうと、この条件を超えてしまいます。
No.6
- 回答日時:
> ディレクトリを示すURLとファイル名を示すURNをつなげたものがURIと思っていましたが
URLやURNにそんなに詳しい訳じゃないけど、
調べた限りではURLがディレクトリだとかURNがファイル名だとか解釈できる文献は見つけられませんでした。
初耳だったからあらためて探しては見たのですが。
もし参考文献などご存じであれば教えてくださいな。
私は、URLやURNはディレクトリやファイルより抽象的な概念だと思ってました。
No.7
- 回答日時:
>
http://****/の「****」は、任意の1文字(/を含むあらゆる文字)を4つ並べた、長さが4の文字列です。ああ、そういうことですか。
文字数が限定されてるなら、計算で出せるんじゃないですかね。
使用できる文字種はNo.2に出てますので、計算してみてください。
> もし参考文献などご存じであれば教えてくださいな。
RFC2616
> 私は、URLやURNはディレクトリやファイルより抽象的な概念だと思ってました。
私はディレクトリやファイルと同じ抽象的な概念と考えます。
アクセスする方法(通信プロトコルやハードディスクとのデータを送受信する方法)の違いと、
人が見たときにわかりやすくするために、\で区切るか:で区切るか、/で区切るかの違いだけの。
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
この質問を解決するには、より単純な問題から始めて、それを徐々に一般化していく方法が必要になると思います。
誠に勝手ながら、ここで一旦締め切らせていただきます。
次の議論に移りましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数独の解法についてお聞きします 4 2023/05/25 17:15
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) セルの値 11 2022/06/29 11:00
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- gooブログ Twitterの動画画面をgooブログに埋め込めない 4 2022/06/03 16:40
- その他(コンピューター・テクノロジー) googleスプレッドシートでカッコ内の文字数をカウントしたい 1 2023/01/17 15:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
fopenでファイルが開かない場合...
-
CakePHP のディレクトリの構成...
-
includeが出来ない訳とは?
-
ファイルアップロードに関して...
-
Subversionのリポジトリの削除
-
C# 特殊ディレクトリを変更した...
-
PHP ftp_fput()関数について
-
UWSCでファイルのアップロード...
-
findfirst("*",&ffblk,FA_DIREC...
-
PHPのプログラムの保存場所
-
ファイル選択ダイアログで選択...
-
CakePHPの設置ディレクトリにつ...
-
/usr/local/lib/phpとはどうい...
-
Permission denied in
-
現在位置より2つ上のディレク...
-
CFileDialogの最初のディレクト...
-
こちらはただの直列処理ですか?
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
visualstudioでc#のdllができない
-
ファイルアップロードに関して...
-
現在位置より2つ上のディレク...
-
makefile でファイルをコピーす...
-
fopenでファイルが開かない場合...
-
rmdirでフォルダが消せません
-
絶対パス?絶対アドレス?意味...
-
コマンドプロンプトを指定のデ...
-
VB.NET 最下位のディレクトリ名...
-
VB2008でFTPでのディ...
-
DLL のロードの順序
-
MkDir関数
-
ファイル選択ダイアログで選択...
-
図に示す階層構造で,現在のデ...
-
[ ディレクトリ '.' は書き込み...
-
JAVA内で複数のファイルを削除...
おすすめ情報