As URLs são divididas em várias partes. Assumindo esta sintaxe:
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
Além disso, eu normalmente divido o host em um domínio e subdomínio, embora não tenha certeza se esse é um esquema oficial de nomenclatura.
Com isso, você pode dividir seus exemplos nos seguintes segmentos:
http://example.com/google.com/?q=http://example.net&#id=http://example.org&
- Esquema:
http
- Host:
example.com.
- Domínio:
example.com.
- Caminho:
google.com
- Consulta:
q=http://example.net&
- Fragmento:
id=http://example.org&
http://google.com.example.com/file.example.com#666
- Esquema:
http
- Host:
google.com.example.com.
- Domínio:
example.com.
- subdomínio:
google.com
- Caminho:
file.example.com
- Fragmento:
666
Para DNS, apenas o host é usado. Em seguida, você comunica seu caminho e consulta o servidor. Seu navegador cuida do fragmento rolando você para a página direita ou exibindo ou ocultando conteúdo.
Nos exemplos acima, lembre-se do ponto depois de alguns dos domínios. Isso significa que eles são o fim do domínio ou o TLD (domínio de nível superior). Subdomínios não têm isso porque não são uma referência completa. Você pode ver isso nos registros DNS também:
demo.example.com. 3600 IN A 12.34.56.78
localhost 3600 IN A 127.0.0.1
www 3600 IN CNAME demo.example.com.
ftp 3600 IN A 12.34.56.78
Esses registros DNS resultariam nos seguintes hosts:
- demo.example.com, resolvendo para 12.34.56.78
- localhost.example.com, resolvendo para 127.0.0.1
- www.example.com, resolvendo para demo.example.com, que resolve para 12.34.56.78
- ftp.example.com, resolvendo para 12.34.56.78