URI(Uniform Resource Identifier)

URI, URL, URN

URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있다.

[ URI ]

  • 자원을 식별하는 가장 큰 영역

[ URL ]

  • Resource Locator
  • 위치를 의미한다.

ex) foo://example.com:8080/over/there?name=ferret#nose

scheme/authority/path/query/fragment

[ URN ]

  • Resource Name
  • 이름을 의미한다.

URI의 뜻

Uniform : 리소스를 식별하는 통일된 방식

Resource: 자원, URI로 식별할 수 있는 모든 것

Identifier: 다른 항목과 구분하는데 필요한 정보

URL, URN의 뜻

  • URL - Locator: 리소스가 있는 위치를 지정
  • URN - Name: 리소스에 이름을 부여
  • 위치는 변할 수 있지만, 이름은 변하지 않는다.

URL 전체 문법

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

[ scheme ]

  • 주로 프로토콜 사용
    • 어떤 방식으로 자원에 접근할 것인가 하는 약속
    • ex) http, https, ftp 등등
    • http: 8080, https: 443 포트를 주로 사용, 포트는 생략이 가능

[ host ]

  • 호스트 명
  • 도메인 명 혹은 IP

[ PORT ]

  • 접속 포트
  • 일반적으로 생략, 생략시 http: 80, https: 443

[ path ]

  • 리소스 경로, 계층적 구조
    • ex) /home/file1.jpg, /members, /members/100, /items/iphone12

[ query ]

  • key=value 의 형태
  • ?로 시작, &로 추가 가능
    • ex) ?keyA=valueA&keyB=valueB
  • query parameter, query string 등으로 부른다. 웹서버에 제공하는 파라미터, 문자 형태

[ fragment ]

  • html 내부 북마크 등에 사용
  • 서버에 전송되는 정보가 아님.

웹 브라우저 요청 흐름

  1. DNS 및 포트 조회
  2. HTTP 요청 메시지 생성
  3. SOCKET 라이브러리를 통해 전달
    • TCP/IP 연결 (IP, PORT)
    • 데이터 전달
  4. TCP/IP 패킷 생성, HTTP 메시지 포함
  5. 인터넷을 통해 해당 패킷을 전달
  6. 패킷 속 HTTP 메시지를 받아서 HTTP 응답 메시지를 만들어 위 순서를 통해 다시 패킷을 전달