URL이 대소 문자를 구분하지 않는 이유는 무엇입니까?
나는 그것이 도발적인 (그리고 "악마의 옹호자") 유형의 수사적 질문처럼 보일 수도 있지만, 고려하는 것이 유용하다고 생각합니다. HTTP의 디자인은 일반적으로 "웹 브라우저"라고하는 "클라이언트"는 "웹 서버"에 데이터를 요청하는 것입니다.
릴리스 된 많은 다른 웹 서버가 있습니다. Microsoft는 Windows Server 운영 체제 (및 Windows XP Professional을 포함한 기타)와 함께 IIS를 출시했습니다. 유닉스에는 OpenBSD의 내부 httpd, thttpd 또는 lighttpd와 같은 더 작은 오퍼링은 말할 것도없고 nginx 및 Apache와 같은 헤비급이 있습니다. 또한 많은 네트워크 가능 장치에는 라우터 (많은 Wi-Fi 액세스 포인트 및 DSL 모뎀 포함)와 같은 네트워크 전용 장치 및 프린터 나 네트워크 연결이 가능한 UPS (배터리 기반 무정전 전원 공급 장치).
"URL이 대소 문자를 구분하는 이유는 무엇입니까?"라는 질문은 "웹 서버가 URL을 대소 문자를 구분하는 이유는 무엇입니까?"입니다. 그리고 실제 대답은 : 그들이 전부는 아닙니다. 상당히 인기있는 하나 이상의 웹 서버는 일반적으로 대소 문자를 구분하지 않습니다. (웹 서버는 IIS입니다.)
서로 다른 웹 서버간에 서로 다른 동작을하는 주요 이유는 단순성의 문제 일 수 있습니다. 웹 서버를 만드는 간단한 방법은 컴퓨터 / 장치 운영 체제가 파일을 찾는 방법과 같은 방식으로 작업하는 것입니다. 많은 경우, 웹 서버는 응답을 제공하기 위해 파일을 찾습니다. Unix는 고급 컴퓨터를 중심으로 설계되었으므로 Unix는 대문자와 소문자를 허용하는 바람직한 기능을 제공했습니다. 유닉스는 대문자와 소문자를 다르게 처리하기로 결정했습니다. 그것은 간단하고 자연스러운 일입니다. Windows는 이미 작성된 소프트웨어를 지원하려는 욕구 때문에 대소 문자를 구분하지 않은 이력을 가지고 있으며,이 이력은 단순히 소문자를 지원하지 않은 DOS로 되돌아갑니다. 적은 메모리를 사용하는 덜 강력한 컴퓨터로 작업을 단순화하기 위해 노력하고 있습니다. 이러한 운영 체제가 다르기 때문에 단순하게 설계된 (이전 버전의) 웹 서버는 동일한 차이점을 반영합니다.
이제 모든 배경 지식을 바탕으로 구체적인 질문에 대한 몇 가지 구체적인 답변이 있습니다.
URL을 처음 디자인 할 때 대 / 소문자를 구분 한 이유는 무엇입니까?
왜 안돼? 모든 표준 웹 서버가 대소 문자를 구분하지 않으면 웹 서버가 표준에 지정된 일련의 규칙을 따르고 있음을 나타냅니다. 그 사건을 무시해야한다는 규칙은 없었습니다. 규칙이없는 이유는 단순히 그러한 규칙이있을 이유가 없기 때문입니다. 왜 불필요한 규칙을 만들려고 귀찮게합니까?
필자는 불필요 한 오류를 방지하고 이미 복잡한 텍스트 문자열을 단순화하기 위해 대소 문자를 구분하지 않는 것이 나 (즉, 평신도)에게 보이기 때문에 이것을 묻습니다.
URL은 기계가 처리하도록 설계되었습니다. 사람은 주소 표시 줄에 전체 URL을 입력 할 수 있지만 의도 한 디자인의 주요 부분은 아닙니다. 의도 된 디자인은 사람들이 하이퍼 링크를 따라갈 수 있도록하는 것입니다. 평범한 평신도들이 그렇게하고 있다면, 보이지 않는 URL이 단순하거나 복잡한 지 상관하지 않습니다.
또한 대소 문자에 상관없이 동일한 페이지를 가리키는 대부분의 URL과 달리 대소 문자를 구분하는 URL을 사용하는 실질적인 목적 / 장점이 있습니까?
윌리엄 헤이 (William Hay)의 답변에서 다섯 번째로 지적 된 점은 기술적 이점이 있습니다. URL은 웹 브라우저가 웹 서버에 약간의 정보를 전송하는 효과적인 방법이 될 수 있으며 제한이 적 으면 더 많은 정보가 포함될 수 있으므로 대소 문자 구분 제한은 포함 할 수있는 정보의 양을 줄입니다.
그러나 대부분의 경우 대 / 소문자 구분에 대한 강력한 이점은 없습니다. 이는 일반적으로 IIS가이를 방해하지 않는다는 사실에 의해 입증됩니다.
요약하자면, 가장 강력한 이유는 웹 서버 소프트웨어를 디자인 한 사람들, 특히 유닉스와 같이 대소 문자를 구분하는 플랫폼에서 간단 할 것입니다. (유닉스가 특히 HTTP보다 오래 되었기 때문에 HTTP는 Unix의 원래 디자인에 영향을 미치지 않았습니다.)