개발자 공부 - 인프런 온라인 강의/모든 개발자를 위한 HTTP 웹 기본 지식

[섹션 2. URI와 웹 브라우저 요청 흐름] URI / 인프런 김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식

easpop 2023. 12. 30. 20:58
728x90
반응형

 

이번 시간에는 URI, URL에 대해서 알아보았다.

 

먼저 URI는 Uniform Resource Identifier의 준말이고,

풀어서 보면, 리소스를 식별하는 통합된 방법이라고 보면 된다!

 

그리고 헷갈리기 쉬운게, URI, URL, URN 등.. 헷갈린다.

 

 

URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다... 라고 설명하는데..

아직도 설명이 헷갈린다.

 

그림과 같이, URI는 URL과 URN을 포함한다.

 

URI의 I는 identifier, 즉, 식별자인데, 말 그대로 리소스(자원)를 식별하는 것을 말한다.

URI의 단어 뜻을 자세히 살펴보자.

U : Uniform, 리소스 식별하는 통일된 방식이라는 뜻이다.

R : Resource, 자원, URI로 식별할 수 있는 모든 것이며, 제한이 없다.

예를 들면, 웹 브라우저의 html 파일만 자원을 뜻하는 게 아닌, 실시간 교통정보 등,

구분할 수 있는 모든 것을 리소스라고 생각하면 된다.

I : Identifier, 다른 항목과 구분하는데 필요한 정보를 뜻한다.

사람을 자원(리소스)으로 보면, 사람을 구분할 때 주민번호로 구분을 할 것이고, Identifier는 주민번호가 될 것이다.

 

URL의 L은 locator로, 리소스의 위치를 지정하는 것을 말한다.

그림의 예로 보면, https://google.com가 될 것이다. 

 

URN의 N은 Name으로, 리소스에 이름을 부여하는 것을 말한다.

리소스에다가 이름을 부여하는 방식인데, 리소스 이름을 매핑을 해줘야 하는데 찾기 어렵다는 점 때문에,

URN은 잘 안쓰이기 때문에 이런게 있다 정도만...

 

그렇기 때문에 URI와 URL은 거의 같은 의미로 쓰인다고 할 수 있다.

 

그렇다면, URL을 분석을 해보자.

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

 

위와 같은 URL이 있다고 하자.

위 URL로 검색을 하게 되면 브라우저에서 리소스 결과를 리턴받을 것이다. (쉽게 말해서 검색이 된다...ㅎㅎ)

 

위의 URL을 자세히 뜯어보면 아래와 같은 구조로 되어 있다.

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

아래에 자세히 설명되어 있음!

 

즉, 프로토콜 : https / 호스트명 : www.google.com / 포트번호(443) / 패스(/search) / 쿼리 파라미터(q=hello&hl=ko)

이렇게 되어 있다.

 

scheme, 즉, 스키마는 주로 프로토콜이 사용이 되고,

프로토콜은 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙을 말한다.

예를 들면, http, https, ftp 등이 있다.

추가로 http는 주로 80 포트, https는 443 포트를 주로 사용하고, http나 https를 쓰면, 포트는 생략이 가능하다.

생략하면 http는 80포트, https는 443 포트가 들어가게 된다.

참고로 https는 http에 강력한 보안이 추가된 것으로 s는 secure를 뜻한다.

요즘 대부분 사이트는 https로 동작을 하고 있다.

 

userinfo는 URL에 사용자 정보를 포함해서 인증할 때 쓰는데, 거의 사용하지 않는다고 한다.

 

host는 호스트명이고, 도메인명 또는 IP 주소를 직접 사용할 수 있다.

예시에서는 www.google.com이 호스트명이 될 것이다.

 

port는 접속 포트이고 앞서 언급한 것과 같이 생략이 가능하다.

요즘 웹 브라우저에서는 보통 생략을 하는데, 특정 서버에 따로 접근해야 될 때는 입력하기도 한다.

 

path는 리소스가 있는 경로를 말한다.

리소스 경로는 계층적 구조로 되어 있고, 예를 들자면, /home/file1.jpg 이런 식으로, 디렉토리처럼 되어 있다.

 

query는 key = value의 형태로 이루어져있고, ?로 시작해서, &로 추가가 가능하다.

URL 예시를 보면, q가 key 값이 될 것이고, hello가 value값이 될 것이다.

그래서 q의 값을 hello로 받아서 검색을 해주고, hl에 언어 정보를 받아서, 그 언어 정보로 데이터를 내려주게 된다.

query는 query parameter, query string 등으로 불리기도 한다.

왜냐하면, 웹 서버에 제공하는 파라미터 정보 혹은 문자 형태이기 때문에 그렇게 불리기도 한다.

(+숫자를 넘겨도 String 형태로 넘어간다.)

 

fragment는 html 내부 북마크 등에서 사용하고, 서버에 전송하는 정보는 아니다.

그렇지만, 잘 사용하지는 않기 때문에.. 그냥 있다 정도만!

728x90
반응형