소개
웹 상에서의 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이 작성되어 요청이 보내진 것을 볼 수 있다.
물론 사용자 환경 (웹 브라우저, 로그인 등)에 따라 다른 정보들도 추가될 수 있다.
'Network > HTTP' 카테고리의 다른 글
HTTP 2 - HTTP의 특징 (0) | 2024.07.14 |
---|