URI와 웹 브라우저 요청 흐름

강한친구·2022년 4월 1일
0

Server Studies

목록 보기
18/27

URI

Uniform Resource Identifier

Uniform

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

Resource

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

Identifier

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

URI URL URN

locator 또는 name 혹은 둘다 추가루 분류 될 수 있다. 가장 큰 범주.

URL

리소스의 위치

URN

리소스의 이름

예시

이러한 주소가 있을때 이 주소가 URL이다.
foo://example.com:8042/over/there?name=ferret#nose

URN은 리소스 네임이다. 이 주소에 이름을 부여해준것이다.
문제는 찾기가 너무 어렵다. 그래서 앵간하면 URL만 쓴다.

URL 분석

https://www.google.com

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

각각 구글의 URL, 구글에서 Hello를 검색한 URL이다.

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

이를 구조별로 나눠보면 다음과 같다.

Scheme

  • 주로 프로토콜이 사용
  • 프로토콜 : 어떤 방식으로 자원에 접근할지에 대한 약속
  • https로 통일되는 추세이고 대부분 443포트를 쓴다. 따라서 포트는 생략가능하다.

userinfo

  • 사용자 정보를 포함하여 인증할 때 사용하는데 거의 쓰지 않는다.

host

  • 도메인명이 온다

port

  • 안써도 무방

/path

  • 리소스가 있는 경로이다, 계층적 구조를 의미한다.
    • /member/new 같은게 path에 해당한다.

query

  • key = value 형태이다
  • ?로 시작하고 &로 추가할 수 있따.
  • 웹서버에 제공하는 파라미터이고 문자형태로 간다.

fragment

  • html내부 북마크등에 사용된다.
  • 서버에 전송하는 정보가 아니다.

요청 흐름

  1. URL을 보고 DNS를 조회 ip를 구해온다.
  2. HTTP 요청 메세지를 생성한다.
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
  1. HTTP 메세지 전송

과정

  1. HTTP 메세지 생성

  2. SOCKET 라이브러리 통해 전딜

    • A = TCP/IP 연걸
    • B = 데이터 전달
  3. TCP/IP 패킷 생성, HTTP 메세지 포함

  4. 랜 드라이버, 랜 장비를 통해 연결

  5. 패킷 생성

    • 패킷에는 출발지, 목적지, 데이터가 있다.
  6. 요청을 받으면 소켓을 전부 버리고 http 메세지를 해석한다.

  7. 응답메세지를 만들어서 보내준다.

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
 <body>...</body>
</html>
  1. 웹브라우저가 이 메세지를 받으면 이 안에는 html이 들어있다. 이를 랜더링해서 출력해주는 원리이다.

0개의 댓글