본문 바로가기
Learning-log/Spring & JPA

(모든 개발자를 위한 HTTP 웹 기본 지식) 2-(1) URI, (2) 웹 브라우저 요청 흐름

by why제곱 2023. 4. 17.

- URI(Uniform Resource Identifier)

  • URI ? URL ? URN?
    • URI : 로케이터(locater), 이름(name) 또는 둘 다 추가로 분류될 수 있음.
    • URI 안에 URL(Resource Locator), URN(Resource Name)이 포함 됨
    • 위치는 변할 수 있지만 이름은 변하지 않음
    • urn:isbn:8960777331 : 어떤 책의 isbn URN
    • URN 이름 만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음
    • URI, URL 같은 의미로 이야기할 예
  • URI 단어 뜻
    • Uniform : 리소스 식별하는 통일된 방식
    • Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음)
    • Identifier : 다른 항목과 구분하는데에 필요한 정보
  • URL 분석
    • https://www.google.com/search?q=hello&hi=ko 이걸 분석해보자.
    • scheme://[userInfo@]host[:port][/path][?query][#fragment]
    • schema
      • 프로토콜 : https (주로 사용)
      • 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
      • http는 80포트, https 는 443포트 주로 사용, 포트는 생략 가능
      • https는 http에 보안 추가
    • userInfo
      • URL에 사용자 정보를 포함해서 인증
      • 거의 사용X
    • 호스트명 : www.google.com: 도메인명 혹은 IP주소 직접 사용
    • 포트번호 , 접속 포트, 일반적으로 생략, 생략시에는 http는 80, https는 443
    • path
      • 리소스 경로(path), 계층적 구조
    • Query 
      • key=value 형태
      • ?로 시작하고 &로 추가 가능 
      • query parameter 또는 query string 등으로 불림, 웹 서버에 제공하는 파라미터, 문자 형태
    • fragment
      • html 내부 북마크 등에 사용
      • 서버에 전송하는 정보 아님

- 웹 브라우저 요청 흐름

  • 웹 브라우저가 HTTP 요청 메시지 생성 
    • DNS 서버 조회 => IP가 나옴
    • HTTPS PORT 생략, 443
    • 위와 같이 IP와 PORT를 찾아냄
    • 위 정보를 가지고 HTTP 요청 메시지를 아래와 같은 형태로 작성
GET/search?q=hello&hi=ko HTTP/1.1
Host: www.google.com
  • HTTP 메시지 전송
    • 웹 브라우저가 메시지 생성
    • SOCKET 라이브러리를 통해 전달
      • TCP/IP연결(IP, PORT)
      • 데이터 전달
    • TCP/IP 패킷 생성, HTTP 메시지 포함
    • 서버에서 HTTP 응답메시지 만들어 냄
    • 응답 패킷 만들어서 웹 브라우저에 도착
    • 웹 브라우저에서는 HTTP메시지를 열어보고, html데이터를 따서 웹 브라우저가 렌더링
    • 사용자가 html 결과를 볼 수 있게 됨.