[HTTP] #2. URI와 웹 브라우저 요청 흐름 - 김영한(인프런)

bien·2023년 6월 2일
0

HTTP

목록 보기
2/7

1. URI(Uniform Resource Identifier)

리소스를 식별하는 통합된 방법

URI? URL? URN?

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

"리소스 식별"이라는 의미의 URI안에 URL과 URN이 포함된다. 리소스를 식별한다는 것은 주민번호를 통해 사람을 식별하듯이 URI를 통해 리소스를 식별함을 의미한다.

URI에는 URL, Resorces Locator, "리소스의 위치"가 포함되고, URN, Resorces Name, "리소스의 이름"이 포함된다.


주로 사용되는 것은 URL. URL은 이런 존재가 있다, 정도만 알면 됨.

URI 단어 뜻

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

  • Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)

    • ex) 웹 브라우저, 실시간 교통정보 등 구분 가능한 모든 것.
  • Identifier: 다른 항목과 구분(식별)하는 데 필요한 정보

    • URL: Uniform Resorces "Locator"
    • URN: Uniform Resorces "Name"

URL, URN 단어 뜻

  • URL - Locator: 리소스가 있는 위치를 지정
  • URN - Name: 리소스에 이름을 부여
  • 위치는 변할 수 있지만, 이름은 변하지 않는다
  • urn:isbn:8960777331 (어떤 책의 isbn URN)
  • URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음
    URN만으로 주소창에 입력해서 바로 접근하는게 어려움.
  • 앞으로 URI를 URL과 같은 의미로 이야기하겠음.


google에 "hello"라는 단어를 검색하는 uri.

URL 전체 문법

  • 프로토콜(http) - 스키마에 들어가는 정보
  • 호스트명(www.google.com)
  • 포트번호(443)
  • 패스(/search)
  • 쿼리 파라미터(q=hello&hl=ko)

URL scheme

  • scheme://[userinfo@]host[:port][/path][?query][#fragment]
  • https://www.google.com:443/search?q=hello&hl=ko
  • 주로 프로토콜 사용
  • 프로토콜: 어떤 방식으로 자원에 접근할 것인가 하는(클라이언트와 서버 사이의) 규칙
    • 예) http, https, ftp 등등
  • http는 80포트, https는 443 포트를 주로 사용, 포트는 생략 가능
  • https는 http에 보안 추가 (HTTP Secure)

URL userinfo

  • URL에 사용자정보를 포함해서 인증(해야할 때 사용)
  • 거의 사용하지 않음

URL HOST

  • scheme://[userinfo@] host [:port][/path][?query][#fragment]
  • https:// www.google.com: 443/search?q=hello&hl=ko
  • 호스트명
  • 도메인 명 또는 IP주소를 직접 사용 가능

URL PORT

  • scheme://[userinfo@]host [:port] [/path][?query][#fragment]
  • https://www.google.com: 443 /search?q=hello&hl=ko
  • 포트(PORT)
  • 접속 포트
  • 일반적으로 생략, 생략시 http는 80, https는 443
    일반적으로 생략 많이함. 특정 포트에 따로 잡근해야 할때 입력하기도 한다.

URL path

  • 리소스 경로(path), 계층적 구조
  • 예)
    • /home/file1.jpg
    • /members
    • /members/100, /items/iphone1
      • 계층적구조: 멤버 하위 100번. 계층적 개념으로 설계해 이해를 도울 수 있다!

URL query

  • key=value 형태
  • "?"로 시작, "&"로 추가 가능 ?keyA=valueA&keyB=valueB
  • "query parameter", "query string" 등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태

URL fragment

  • fragment
  • html 내부 북마크 등에 사용 (html 내부에서 이동할대 사용)
  • 서버에 전송하는 정보 아님

2.웹 브라우저 요청 흐름


1. DNS 서버 조회
2. PORT 생략 (HTTPS = 443)
3. 클라이언트에서 HTTP 요청 메시지 생성


HTTP 요청 메시지 형태는 다음과 같다.
GET 요청, PATH +query Parameter / HTTP 버전 정보/ host 정보

HTTP 메시지 전송

  1. 웹 브라우저가 HTTP 메시지 생성

  2. SOCKET 라이브러리를 통해 전달

    • A: TCP/IP 연결(IP, PORT)
    • B: 데이터 전달
  3. TCP/IP 패킷 생성, HTTP 메시지 포함

패킷 생성

전송 데이터: 웹 브라우저가 만든 HTTP 메시지

요청 패킷이 노드를 타고 서버로 전달된다.

요청 패킷이 전달되면 서버가 TCP/IP패킷을 다 까서 안의 요청 메시지를 해석한다.

서버에서 답장을 위한 HTTP 응답 메시지를 생성한다.

클라이언트측에서 받은 데이터의 패킷을 벗기고 안의 데이터들을 렌더링한다.

0개의 댓글