ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTTP] URI /URL / URN
    HTTP 2023. 1. 21. 20:17

    URI (Uniform Resource Identifier)

    URI는 resource(자원)을 통일된 방식으로 다른항목과 구분하는 식별자이다.

    • URI는 식별자이다. 경로(locater)-URL, 이름(Name)-URN을 사용해 식별할 수 있다.
    • resource는 URI로 식별가능한 모든것이다. (무엇이든 가능)
    • URI는 URL을 포함하는 개념으로 혼용해서 사용한다,

    URL,URN을 포함하는 URI구조

     

    • Uniform : 리소스를 식별하는 통일된 방식
    • Resource : URI로 식별할 수 있는 모든 것
    • Identifier : 다른 항목과 구분하는데 필요한 정보 (주민등록번호, 등)

     

    URL과 URN의 차이

    URL (Resource Locater) : 경로를 통해 식별하면?

    Locater를 이용해 식별하는 방법으로 리소스가 있는 위치를 지정한다.

     

    URN( Resource Name) : 이름을 통해 식별하면?

    Name을 이용해 식별하는 방법으로 리소스의 이름을 부여한다.

    • URN으로 식별하기는 어렵다. 이유는 이름만으로는 실제 리소스를 찾을 수 있는 방법이 보편화되지 않았기때문.
    • 그래서 거의 Locater를 이용하여 식별하는 URL을 쓰기떄문에 URL = URI로 개념을 두고 사용하는것이 보편적이다.

     

     

     

    URI URL 분석 - (구글에 hello를 검색했을때 URL)

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

    URL의 전체문법

    scheme://[userinfo@]host[:port][/path][?queary][#framgment]

     

    URL문법을 통해 구글에 hello를 검색했을떄 URL을 하나하나 분석해보자

    scheme -> https 

    주로 프로토콜 사용한다. 

    "프로토콜이란 ? 어떤 방식으로 자원에 접근할 것인가하는 약속규칙이다." ex) http, https, ftp

    https 는 http에 보안(HTTP Secuare)이 추가된것이다.

     

    [userinfo@]

    URL에 사용자정보를 포함에서인증, 거의 사용하지않음

     

    host -> www.google.com  

    호스트명 위치 (도메인명 혹은 ip주소를 직접 사용)

    도메인명으로 DNS서버에서 iP주소를 얻을 수 있다.

     

    [:port] -> :445

    http - 80port, https-443port를 사용하며, 포트는 생략 가능하다.

     

    [/path] -> /search

    리소스 경로, 계층적 구조

    ex) lee-ding.tistory.com/manage/newpost . . . 와같은 계층적구조

     

    [?quaery] ->  ?q=hello&hl=ko

    key=value형태로 구성된다.

    ?로시작한다. &로 파라미터 추가가능

     

    [#fragment] -> #getting-started-introducing-spring-boot

    html내부 북마크에서 사용, 서버에 전송되는 정보는 아님

     

    웹 브라우저의 요청 흐름 (위의 분석한 URL은 서버-클라이언트에서 어떻게 사용될까)

    <client>

    1. DNS로 URL에 포함되어있는 도메인명 조회 : DNS 서버에 도메인명(ww.google.com:443)을 조회해서 ip를 얻음 ->IP

    2. URL에서 Port정보->TCP 찾아냄 (HTTPS PORT 443)

    3. HTTP 요청 메시지 작성 (GET/serarch?q=hello&hl=ko HTTP/1.1 Host:www.google.com)

    4. SOCKET라이브러리를 통해 HTTP메세지가 OS로 전달되고

    OS에서 요청패킷<TCP/IP(IP,PORT)패킷 +HTTP메세지(전송데이터)> 생성후 데이터 전달

     

    <server>

    5. 서버가 요청패킷이 도착하면 패킷을 벗겨내고 요청메세지만 분석후 데이터를 찾음

    6. 서버에서 HTTP응답 메세지를 만든다.

    7. HTTP응답메세지에 TCP/IP패킷 씌어서 다시 브라우저로 보낸다.

     

    <client>

    8. 패킷을 벗겨내고 렌더링 하면 우리가 원하는 요청 메세지(웹 사이트)가 보인다.

     

     

     

     

    https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

     

    모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

    실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

    www.inflearn.com

     

    댓글

lee-ding