개발/기타🎸

URL의 구조 (/, ?, # 이게 다 뭐야)

duknock 2022. 10. 5. 12:01
반응형

 

https://duknock.tistory.com/page.html?type=post#top

Protocol://Host/Path?QueryString#Fragment

 

 

 

주소창의 URL을 보면 이런식으로 되어있다.

 

1. 프로토콜

2. 호스트:포트번호

3. 경로

4. 쿼리스트링

5. 프래그먼트(앵커)

 

 

 


 

프로토콜

 

https://duknock.tistory.com/page.html?type=post#top

 

 

프로토콜은 컴퓨터끼리 네트워크 통신을 하기 위한 규약이다.

 

우리가 웹 페이지의 주소를 표현할 때는 http (HyperText Transfer Protocol)를 사용한다.

 

http에 보안이 추가된 https도 있다. https나 http나 동일한 규격임ㅇㅇ

 

http, https 외에도 ftp(파일서버 접속)나 telnet(원격 접속)등이 있다.

 

 

 


 

호스트:포트번호

 

https://duknock.tistory.com/page.html?type=post#top

 

 

호스트는 웹 페이지를 요청할 서버의 주소다. 사실 상 집 주소나 같은 것

 

호스트는 호스트명과 도메인으로 이루어져있는데, duknock이 호스트이고 tistory가 도메인이다.

 

쉽게 아파트 동호수에 비유하자면, 도메인은 동을 뜻하고, 호스트는 호수에 비할 수 있겠다. (tistory동의 duknock호)

 

 

그리고 포트번호라는게 있는데, 웹서버에서 자원을 접근하기 위해 사용하는 관문이다.

 

가정집에 문 여러개 달아두고 하나는 정문, 하나는 차고로 가는 문, 하나는 반려동물용 문 뭐 이런식으로 나눠둔거랑 비슷하다.

 

근데 우리가 쓰는 웹 URL을 보면 포트번호가 보이지 않는다. 위의 예시만 봐도 포트번호는 눈을 씻고 찾아봐도 없다.

 

기본적으로 포트번호를 입력하지 않았을 때는 프로토콜이 가지고 있는 기본 포트번호가 적용되어 생략 가능하기 때문이다.

 

http의 경우 80번, https의 경우 443번의 포트번호가 기본으로 적용된다.

 

 

 


 

경로

 

https://duknock.tistory.com/page.html?type=post#top

 

 

웹서버 프로그램 내에 짜인 로직으로 가는 자원에 대한 경로

 

로컬 컴퓨터의 경로와 똑같다.

 

예시로 경로가 /pages/page1.html 이면 page라는 폴더 안에 page1.html 페이지를 가리킨다.

 

 

 

 


 

쿼리스트링

 

https://duknock.tistory.com/page.html?type=post#top

 

 

쿼리스트링은 서버에 추가로 보내는 파라미터다.

 

주로, 같은 경로라 하더라도 입력한 값에 따라 다른 결과를 보여줘야할 때 쿼리 문자열을 사용한다.

(검색엔진 등에서 검색 결과를 보여주는 경우에 검색어를 전달하는 용도로 많이 쓰임.)

 

만약 여러개의 데이터를 보낸다면 &문자로 구분한다. (?key1=value1&key2=value2)

 

 

 


 

프래그먼트(앵커)

https://duknock.tistory.com/page.html?type=post#top

 

프래그먼트(앵커)는 URL이 지정하는 자원의 세부 부분을 지정할때 쓰인다. 책갈피 같은거다.

 

얘는 없어도 페이지가 잘 나온다.

 

주로 위키백과 같은 곳에서 특정 항목을 정확히 가리킬 때 사용한다.

 

https://ko.wikipedia.org/wiki/URL#표현방법

 

위 링크를 들어가보면 URL 항목의 표현방법 단락으로 바로 이동하는것을 볼 수 있다.

 

 


그 외)

 

Q : URL이 막 https://ko.wikipedia.org/wiki/URL#%ED%91%9C%ED%98%84%EB%B0%A9%EB%B2%95
      이런식으로 나오는데 저 %랑 숫자랑 알파벳 조합들은 뭐에요?
A : 한글이 깨진겁니다. 인터넷을 통해 전송할 수 있는 문자는 오직 ASCII 문자밖에 없거든요. 그래서 강제로 인코딩 된겁니다.

 

 

 

 

끝!

반응형