Gidhub BE Developer

인코딩(Encoding)된 URL은 어떻게 생성이 되는걸까?

2020-03-23
goodGid

이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.

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을 생성하는데 있어

  • 안전하지 않은 문자들도 표현할 수 있는 인코딩 방식이 고안되었다.

  • 그 인코딩 방식은 다음과 같다.

  1. 안전하지 않은 문자를 인코딩했음을 나타내기 위해 퍼센티지 기호(%)로 시작한다.

  2. ASCII 코드로 표현되는 2개의 16진수 숫자로 이루어진 이스케이프 문자로 바꾼다.

  3. 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진수 숫자 사용 등등


Reference


Recommend

Index