본문 바로가기
Network/HTTP

HTTP 1 - URI와 URL

by 슬픈 야옹이 2024. 7. 14.

소개

웹 상에서의 http 통신은 요청과 응답으로 이루어진다.

 

클라이언트가 서버에세 어떤 데이터를 달라고 요청하면,

서버는 들어온 요청을 바탕으로 필요한 데이터를 담아 클라이언트에게 응답하는 방식으로 통신이 이루어진다.

 

이 때 클라이언트가 어떤 데이터를 요청하는지 구분하는 식별자가 URI이며,

클라이언트는 데이터를 요청할 때 요청 메시지에 해당 URI을 포함해서 보내야 한다.

 

 

URI (Uniform Resource Identifier)

  • 리소스를 식별하는 통일된 방식
  • 통합적인 (Uniform) 리소스(Resource) 식별자 (Identifier)
  • URI의 종류에는 URL(Uniform Resource Locator)과 URN(Uniform Resource Name)이 있다.

 

Resource (리소스)

  • 자원
  • URI로 식별될 수 있는 모든 것을 가리킨다. (웹 페이지, 사진, 동영상, 문자, ...)

 

 

URL과 URN

URL (Uniform Resource Locator)

  • 리소스를 구분하는 기준이 위치인 것.
  • 위치는 변할 수 있다.
  • ex) URL이 localhost/pictures/logo인 로고의 경우
    • 해당 로고 사진 파일이 logo1.png에서 logo2.png로 바뀌어도, URL을 바꿀 필요는 없다.
    • localhost/pictures/logo에 매칭된 리소스를 logo2.png로 바꾸기만 해도 된다.

 

URN (Uniform Resource Name)

  • 리소스를 구분하는 기준이 고유한 이름인 것.
  • 이름은 변하지 않는다.
  • ex) 어떤 책의 urn이 urn:isbn:12345678인 경우
    • 새로운 책을 등록하려면 새로운 urn을 만들어야 한다.
    • urn:isbn:12345678이라는 이름을 가진 책은 유일하다.

 

현재 URN 만으로 리소스를 식별하는 방법은 보편적이지 않으며, 사실상 URI와 URL을 같은 의미로 사용한다.

 

 

 

URL 전체 문법

scheme://[userinfo@]host[:port][/path][?query][#fragment]

https://www.google.com/search?q=hello&hl=ko

 

scheme

  • 프로토콜 종류를 의미함 (http, https, ftp, ...)

 

[userinfo@]host

  • 접근 대상에 대한 사용자명과 주소를 의미함.
  • userinfo는 생략 가능하며, 거의 사용하지 않음.
  • host는 ip주소 혹은 도메인 주소로 입력 가능
  • ex) gdh@192.168.10.11
    • ip주소가 192.168.10.11인 호스트에 gdh 사용자로 접근한다는 의미.
  • gdh@www.google.com
    • www.google.com에 gdh 사용자로 접근한다는 의미.

 

port

  • 접근 대상 포트 번호를 의미함.
  • 통상 http 80, https 443, ftp 21, ssh 22 등이 사용되나, 설정에 따라 달리질 수 있음. (절대적인 것이 아님)
  • 생략 가능함.
  • 웹 브라우저에서 URL을 입력할 경우 자동으로 80 또는 443 등의 포트 번호가 붙어서 요청됨.

 

path

  • 리소스에 접근할 경로를 의미함.
  • 생략하면 기본 경로 (/, 루트 경로)로 해석됨

 

query

  • 쿼리 파라미터, 쿼리 스트링 등으로 불린다.
  • key-value 방식으로 표현하며, ?으로 시작, &으로 구분한다.
  • ex) ?key1=value1&key2=value2

같은 데이터에 대해 한국 사용자는 한글 데이터를, 북미 사용자는 영어 데이터를 원할 수 있다.
이 때 lang=ko, lang=en 등 같은 리소스를 다른 방식으로 요청할 수 있다.

 

 

fragment

  • html 내부 북마크 등에서 사용되는 정보.
  • 서버에 전송되지는 않는다.

 

예시

뭔가 많아 보이지만 천천히 해석해보면 복잡한건 없다. 아래 URL을 해석해보면 다음과 같다.

 

https://www.google.com/search?q=hello&hl=ko

 

  • scheme: 요청 프로토콜은 https다.
  • host: www.google.com
  • path: /search
  • query: q=hello&hl=ko

종합해보면,

https 프로토콜 기반의 URL이며,

www.google.com에게 /search  경로에 해당하는 리소스, 즉 검색 결과를 달라는 요청이다.

함께 전달한 쿼리 파라미터는 q=hello, hl=ko가 있다.

 

 

실제 google chrome에서 검색해보면 같은 문법으로 url이 작성되어 요청이 보내진 것을 볼 수 있다.

물론 사용자 환경 (웹 브라우저, 로그인 등)에 따라 다른 정보들도 추가될 수 있다.

chrome 주소 검색창

 

 

'Network > HTTP' 카테고리의 다른 글

HTTP 2 - HTTP의 특징  (0) 2024.07.14