Dlaczego w adresach URL witryn nie rozróżniana jest wielkość liter? [Zamknięte]

0

Jaki był tutaj wybór projektu? Dlaczego w adresach URL nie rozróżniana jest wielkość liter?

Na przykład: po wpisaniu „gaming.stackexchange.com” zabiorę mnie do Arqade.SE. Jeśli wpiszesz „GaminG.StackExchangE.CoM”, zabierze mnie to tego samego miejsca.

Rozumiem, że istnieją na to niektóre kontrprzykłady, jak wskazano poniżej .

yuritsuki
źródło
1
Nie jestem pewien, gdzie mam zadać to pytanie. Czy UX.SE będzie lepszym rozwiązaniem?
yuritsuki
Chciałbym, aby adresy URL były jeszcze bardziej wybaczające niż tylko nazwy hostów bez rozróżniania wielkości liter. Chciałbym, aby często mylone znaki były wymienne w interfejsach użytkownika, w tym w adresach URL, na przykład: (1) /i \ ; (2) 1i ( Ia lwięc także ii L); (3) 0i O(więc także o); ... i tak dalej.
Adrian Pronk

Odpowiedzi:

8

RFC 1035 sekcja 2.3.3 stwierdza, że ​​nazwy DNS nie rozróżniają wielkości liter. Oznacza to, że część hosta (i tylko część hosta) adresów URL nie rozróżnia wielkości liter.

Nie znam dokładnego sposobu myślenia za tą decyzją, ale standard został napisany w 1987 r., Kiedy systemy z ograniczoną obsługą zestawów znaków wieloznacznych były wciąż stosunkowo powszechne.

Flup
źródło
4
Dodaj, że: oryginalne pytanie popełnia błąd, to jego sformułowanie; Jak pokazuje ta odpowiedź, w rozpoznawaniu nazw DNS nie jest rozróżniana wielkość liter, ale w rzeczywistych adresach URL bardzo dobrze rozróżniana jest wielkość liter, w zależności od serwera HTTP i hosta OS.EG projects.apache.org/indexes/language.html nie jest taki sam jak projekty.apache .org / indexes / lANGUAge.html
SuperMagic
Tak, zdecydowanie warto to wyrazić, dzięki.
Flup
4

Mogę wymyślić dwa powody, które niekoniecznie mają związek z pierwotną decyzją.

  • łatwość użycia
  • eliminacja dwuznaczności

Wyobraź sobie, że musisz pamiętać różnicę między:

google Google GOogle GooGle GoogLe GooglE (....)

To raczej niepraktyczne, jeśli Host.com oznacza coś zupełnie innego niż host.com. Nazwa DNS ma być etykietą, a posiadanie znaków specjalnych lub rozróżnianie wielkich i małych liter tylko komplikuje to bez praktycznego zastosowania.

Ярослав Рахматуллин
źródło
0

Możliwe przyczyny:

  • Bezpieczeństwo: w nazwach DNS jest tylko 37 prawidłowych znaków *. Małe litery mają ustawiony bit 6, więc biblioteka tłumacząca lub serwer DNS mogą natychmiast i względnie po prostu zdezynfekować dane wejściowe poprzez ANDing z binarnym 0100 0000 i wyrzucając wszystko, co nie jest ASCII 45, 48 do 57 (cyfry) lub 65 do 90 (litery). Po napotkaniu kropki skończyłeś. Nie musisz odkrywać, co to jest i ignorować białe znaki, tokenizować lub wykonywać inne piękne i przepełnione buforami czynności związane z parsowaniem tekstu. Pomaga to także wyraźny limit 63 (?) Znaków w nazwach hostów.

  • DNS jako całość jest ogromny i musi działać szybko. Jestem pewien, że pomaga to przyspieszyć indeksowanie i przeszukiwanie baz danych DNS pod kątem nazwy DNS zawierającej ograniczoną liczbę znaków. Prawdopodobnie podobną rzecz można powiedzieć o rozmiarze. Biorąc pod uwagę możliwości komputerów w momencie wynalezienia DNS, jestem pewien, że ograniczenie rzeczy do „absolutnego minimum” było postrzegane jako konieczne.

  • Wydaje mi się, że mniej więcej w czasie wynalezienia DNS istniały komputery i terminale, które nie mogły wyświetlać małych liter (myślę, że tutaj Apple II, ale jestem pewien, że niektóre stare komputery mainframe z tamtych czasów miały równie stare terminale).


* Widziałeś wcześniej nazwy domen Unicode? Są to międzynarodowe nazwy domen - rozszerzenie zbudowane na tym. Naprawdę wewnętrznie składają się one z „xn--”, a następnie łańcucha zakodowanego w Punycode przy użyciu standardowego zestawu znaków DNS i są renderowane jako Unicode przez zgodną przeglądarkę.

LawrenceC
źródło