URLの形式は次のとおりです。
scheme://server:port/pathname
ここでサーバーとドメイン名の違いは何ですか?//superuser.com/questions/ask
(相対)URLです。
スキームは省略されています(http:
)。サーバーはsuperuser.com
です。たぶん、サーバーはドメイン名と同じですか?
URLの形式は次のとおりです。
scheme://server:port/pathname
ここでサーバーとドメイン名の違いは何ですか?//superuser.com/questions/ask
(相対)URLです。
スキームは省略されています(http:
)。サーバーはsuperuser.com
です。たぶん、サーバーはドメイン名と同じですか?
回答:
サーバーは物理的なハードウェアです。このハードウェアには、複数のIPアドレスが関連付けられています。サーバーは、関連付けられているIPアドレスの1つを参照するか、そのIPアドレスを指すドメイン名で参照されることがよくあります。
サーバーには複数のドメインを関連付けることができます(Webサイトの場合は通常あります)。
技術的に言えば、HTTP URLで "server:port"を使用するのは間違っていると主張します-domain:portである必要がありますが、とにかくそうするのが一般的です。サーバーがそれと関連付けられた(任意の)ドメインまたはそのIPアドレスによって参照される場合、違いがないため、サーバーを呼び出す一部のアドレス指定スキーム(たとえばFTPなど)では意味があります。[HTTPには追加のロジックがあるため、サーバーはどのドメインが参照されているかを判断できます]
与えられた例に違いはありません。
ある意味では、完全修飾ドメイン名(FQDN)はサーバー名です。しかし、それは(名前が示すように)完全修飾名です。サーバーの名前はになりますがsuperuser
、com
ドメインに存在します。したがって、フルネームはになりますsuperuser.com
。
ドメイン名は、サーバーをホストするIPアドレスへのポインターです。番地「Example Street 42」(ドメイン名)とその番地の家(サーバー)の違いと考えてください。ドメイン名を呼び出す方が意味的に正しいかどうか、server
またはdomain
そのような例については永遠に議論できます。server
そしてdomain
等しくないが、例の目的のために、同等である。
//
構文は特別な意味を持っています。これは、「選択する、http://
またはhttps://
適切に」の省略形です。この構文の背景には、ブラウザがhttpsページ(セキュア)からhttpプロトコル(暗号化されていない)を介してリソースをロードする際のセキュリティ制限があることがあります。//
構文は、サーバーがHTTPとHTTP経由で同じコンテンツを提供することができたときに有益です。そのため、要求されたページのプロトコルに基づいて、使用するプロトコルをサーバーまたはクライアント側のスクリプトに決定させる代わりに、URLは常に//
、ブラウザがこの複雑さを処理できるURLとして常に与えられます。
たとえば、この略記が発明される前は、次のようなコードが表示され、httpまたはhttpsのいずれかで提供される可能性のあるページにGoogleアナリティクスを読み込むことができます。
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxx-y']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://')
+'stats.g.doubleclick.net/dc.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
これのより新しいバージョンは次のようになります。
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxx-y']);
_gaq.push(['_trackPageview']);
</script>
<script type="text/javascript" src="//stats.g.doubleclick.net/dc.js"></script>
最近ではhttp
、一般的なユーザーが実際にフィールドに入力した内容とより厳密に一致させるために、ブラウザーがアドレスフィールドのURL の一部を除外することも一般的です。ただし、http
この場合、その部分はまだ暗示されています。ブラウザによっては、この動作をオフにして、http
パーツが常に表示されるようにすることができます。また、一部のブラウザではhttp
、アドレスフィールドにフォーカスするとパーツが表示されます。
//
それ自体について話していません。略記はhttp(s):
、HTML5でURL の一部を省略できるという事実を指します。私が言ったことは、質問がどのように尋ねられたかという文脈で読むべきです。
あなたはおそらくhost
(の一部ですauthority
)を参照しています。
STD 66(URI標準)の定義:
権限のホストサブコンポーネントは、角括弧内にカプセル化されたIPリテラル、ドット付き10進形式のIPv4アドレス、または登録名によって識別されます。
[…]
host = IP-literal / IPv4address / reg-name
(これらの部分は、リンクされたセクション「3.2.2。ホスト」で定義されています。)
そのためhost
、IPまたはドメイン名を指定できます。
質問に含めたURI形式(標準化された形式ではありません)では、で何を意味するのか明確ではないことに注意してくださいserver
。のコンポーネントは、ログイン用のユーザー名とパスワードを提供するためのユーザー情報()authority
でもあります。userinfo
ここでのサーバーはそのアドレスを意味します。
http://74.125.224.72/
これはGoogleのIPの1つです。しかし、誰もが彼の答えを「74.125.224.72」と言うことができるとは思いません。
ドメイン名は、IPをより人間が読みやすいものに変換する方法です
http://google.com/
どちらの場合も、サーバーを配置しました。最初の方法はIPであり、2番目の方法はDNSを使用してその場でIPに変換されるドメイン名です。
http://www.example.com
代わりに例えばに行くhttp://example.com
。これは、(組織などの)ドメイン 内で、example.com
慣例www
によりその組織のWebサイトにサービスを提供しているホストがホストしているためです。