혼자 정리

[HTTP기본지식] URI와 웹 브라우저 요청 흐름 본문

카테고리 없음

[HTTP기본지식] URI와 웹 브라우저 요청 흐름

tbonelee 2021. 11. 20. 22:23

강의를 듣고 혼자 메모한 내용입니다.

URI(Uniform Resource Identifier)

URI, URL, URN의 차이?

"A URI can be further classified as a locator, a name, or both."(https://www.ietf.org/rfc/rfc3986.txt)

즉, URI 안에 URL(Locator)과 URN(Name)이 담겨 있음.

  • Uniform : 리소스 식별하는 통일된 방식
  • Resource: URI로 식별할 수 있는 모든 자원
  • Identifier: 다른 항목과 구분할 때 필요한 정보

URL - 리소스가 있는 위치를 지정

URN - 리소스에 이름을 부여

URN 이름만 가지고 실제 리소스 찾는 방법이 보편화되지 않아서 잘 안 쓰임

URI와 URL을 같은 의미로 많이 사용

URL 전체 문법

  • scheme
    • 주로 프로토콜 사용.
    • 프로토콜 : 어떤 방법으로 자원에 접근할지 약속한 규칙
  • userinfo@
    • 사용자 정보 포함. 잘 사용하지는 않음
  • :port
    • 일반적으로 생략
    • http - 80 / https - 443
  • /path
    • 리소스 경로, 계층적 구조
  • ?query
    • key=value 형태
    • ?로 시작. &로 추가 가능
    • 쿼리 파라미터, 쿼리 스트링(문자열로 인식되므로) 등으로 부름.
  • #fragment
    • html 내부 북마크 등에 사용
    • 서버에 전송하는 정보는 아님

웹 브라우저 요청 흐름

  • URL에서
  • DNS에 조회에서 IP 얻어옴. 포트 정보는 URL에 있음
  • HTTP 요청 메시지 생성 : ex) GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com
  • HTTP 메시지 전송
    1. 웹 브라우저가 HTTP 메시지 생성
    2. 소켓 라이브러리 통해 전달
      a. 데이터 전달 이전에 TCP/IP 연결을 먼저 진행(SYN, ACK같은 거)
      b. 그리고 데이터 전달
    3. TCP/IP 패킷 생성, HTTP 메시지 포함
  • 서버에서 받은 패킷 분석해서 적절한 응답