이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
Prologue
-
인코딩(Encoding)된 URL은 어떻게 생성이 되는걸까?
-
이 글을 통해 질문에 대한 답을 알아보자.
URL 설계
-
URL은 인터넷에 있는 모든 리소스가
-
여러 프로토콜을 통해서 전달될 수 있도록
-
각 리소스에 유일한 이름을 지을 수 있게 설계되었다.
-
하지만
-
데이터를 전송하는 방법은
-
너무나 다양하기 때문에
-
안전하게 전송(= 정보가 유실될 위험 없이 URL을 전송할 수 있다는 것을 의미) 될 수 있도록
-
URL을 설계해야하는 이슈가 존재했다.
-
예를 들어
-
URL에 이진 데이터 혹은 일반적인 알파벳 외의 문자도 포함하더라도
-
안전한 전송이 가능하도록 해야했다.
-
그래서 URL 설계자들은
-
이스케이프라는 기능을 추가하여
-
안전하지 않은 문자를
-
안전한 문자로 인코딩할 수 있게 설계하였다.
URL 문자 집합
-
보통 컴퓨터 문자는 영어 중심으로 설정되어 있다.
-
그리고 역사적으로 US-ASCII 문자 집합을 사용해왔다.
US-ASCII 개념
-
문자를 서식화하고
-
하드웨어상에서 신호를 주고받기 위해
-
7비트를 사용하여
-
영문 자판에 있는 키 대부분과 몇몇 출력되지 않는 제어 문자를 표현한다.
US-ASCII 한계
-
US-ASCII는 오래된 문자 집합이다.
-
그렇기 때문에 적은 수의 문자만을 포함하고 있다.
-
미국 시민들 사이에서는 편리하게 쓰이지만
-
전 세계 사람들이 사용하는 모든 언어를 지원하지 않는다.
-
또한 URL에 특정 이진 데이터를 포함해야하는 경우도 있다.
US-ASCII 한계 해결
-
URL 설계자들은
-
URL에 이스케이프 문자열(= US-ASCII에서 사용이 금지된 문자들)을
-
인코딩을 하여 US-ASCII의 한계를 극복하였다.
인코딩(Encoding)
-
URL을 생성하는데 있어
-
안전하지 않은 문자들도 표현할 수 있는 인코딩 방식이 고안되었다.
-
그 인코딩 방식은 다음과 같다.
-
안전하지 않은 문자를 인코딩했음을 나타내기 위해 퍼센티지 기호(%)로 시작한다.
-
ASCII 코드로 표현되는 2개의 16진수 숫자로 이루어진 이스케이프 문자로 바꾼다.
-
URL에 예약되어 있는 문자들을 사용하고 싶다면 미리 인코딩을 한 후 사용해야 한다.
문자 | ASCII 코드 | URL | Encoding |
---|---|---|---|
~ | 126 (0x7E) | http://goodgid.coom/~ | http://goodgid.com/%7E |
빈 문자 | 32 (0x20) | http://goodgid.com/more tools.html | http://goodgid.com/more%20tools.html |
% | 37 (0x25) | http://goodgid.com/100%confirm.html | http://goodgid.com/100%25confirm.html |
Summary
-
글의 제목이자 질문이였던
-
인코딩(Encoding)된 URL은 어떻게 생성이 되는걸까? 라는 궁금증에 대해 답을 찾을 수 있었다.
-
또한 URL 설계자들의 고민과
-
그 고민들을 어떻게 해결하였는지에 대해 알아보았다.
-
특히 인코딩이 어떻게 이뤄지는지에 대해 기억해두면 좋을 듯 싶다.
-
ex) 퍼센트지 기호(%)로 시작, 16진수 숫자 사용 등등