Google 브라우저에서 '안녕하세요'라고 한글로 검색해보았다.


Google 브라우저에서 '안녕하세요' 검색시 발생하는 URL
https://www.google.com/search?q=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94&oq=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94&aqs=chrome.0.35i39j46i433i512j0i512l4j46i340i512l2j0i512l2.2245j0j15&sourceid=chrome&ie=UTF-8
위 URL을 URL의 구조에 따라서 한번 분석해보자
사용자가 원하는 정보의 위치가 어디인지, 정보의 종류는 무엇인지 파악할 수 있도록 웹페이지의 정보 구조를 반영한 것
웹에 존재하는 자원, 리소스를 구분하는 식별자
프로토콜: https
프로토콜과 도메인 구분 : //
서브 도메인: www
도메인 및 도메인 확장자: google.com
포트 번호: 아마 443(https여서)
서브 디렉토리: /search...
매개변수, 부분 식별자
서브 디렉토리 부분의 URL의 문자가 이해하기 어려운 형태인 이유
URL에는 특수문자를 사용하면 이해하기 어려움
URL 공유 시 위의 특수문자의 경우 인코딩되어 길이가 길어져 이해하기 어려운 형태가 됨
위의 경우도 '안녕하세요'라는 한글이 인코딩되어 사람이 이해하기 어려운 url로 변환
유니코드 한글 코드표로 query에 들어간 '안녕하세요' 분석
한글
- 조합형 방식
- 한글의 편리함을 그대로 가지고 있는 방식입니다. 자음과 모음을 초성, 중성, 종성으로 구분하여 문자를 작성하는 방식을 이야기 합니다. 초성, 중성, 종성을 각기 따로 인식하고 그 것들을 하나의 바이트로 인식하고 조합되어, 총 3바이트의 문자로 인식합니다. (다른 종류도 있긴 하지만 3바이트 방식이 가장 일반적인것 같습니다.)
url에서 한글의 표현
- %초성%중성%종성
- 초성, 중성, 종성은 1바이트
- 1바이트는 8개의 비트
- 따라서, 16진수 표현으로 1바이트를 표현
'안녕하세요' url에서 한글 표현
key: q
- value를 확인하니 이 부분은
- 검색 엔진에 '검색한 단어'에 대한 key 인 것 같다.
- value로 '검색한 단어'가 들어감
value
'안'
'녕'
'하'
'세'
UTF8: 236, 132, 184;
초성: %EC
중성: %84
종성: %B8
'q=q=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8' 부분 완성
'요'
'q=%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94' 부분 완성
key: 검색한 문장을 담은 key
value: 검색한 문장을 url에 형식으로 encoding하여 담음
필자는 '안녕하세요'를 검색 엔진에 입력
url은 ASCII 문자에 있는 것은 그대로 인코딩 됨
ASCII 문자에 있지 않은 것은 %00과 같이 한 바이트씩 나눠서 인코딩
한글은 초성, 중성, 종성 3부분을 1바이트씩 나눠서 url로 인코딩
그래서, 한글의 한글자는 총 3바이트를 차지
Google은 ASCII 코드 표에 없는 문자는 UTF-8 인코딩을 사용한다고 함
Google URL 구조 가이드라인
key: oq
value: 'q' key와 동일한 value가 들어감
&sourceid=chrome&ie=UTF-8
key: sourceid
value: chrome
key: ie
value: UTP-8