URI와 웹 브라우저 요청 흐름

slee2·2021년 12월 26일
0

URI

URL -> Resuorce Locator
리소스의 위치
URN -> Resuorce Name
리소스의 이름
URI -> Resuorce Identifier
리소스의 정체

URI는 URL과 URN을 가지고 있다.

URN의 경우 이름만 정의되어있어 매핑을 못하기 때문에 거의 쓰지 않고
URL을 많이 사용한다.

Uniform: 리소스 식별하는 통일된 방식
Resource: 모든 자원, URI로 식별할 수 있는 모든 것(제한 없음)
Identifier: 다른 항목과 구분하는데 필요한 정보

URL - Locator: 리소스가 있는 위치를 지정
URN - Name: 리소스에 이름을 부여
위치는 변할 수 있지만, 이름은 변하지 않는다.
URN은 이름만으로 리소스 위치를 찾을 수 없기 때문에 거의 사용안함.
앞으로 설명할 때 URI를 URL과 같은 의미로 이야기한다고 함.

URL

https://www.google.com:443/search?q=hello&hl=ko
schemme://[userinfo@]host[:port][/path][?query][#fragment]

프로토콜(https)

  • 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙 (http, https, ftp 등등)
  • http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능
  • https는 HTTP Secure

호스트명(www.google.com)

  • 도메인명이나 IP주소를 직접 입력 가능

포트 번호(443)

패스(/search)

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

쿼리 파라미터(q=hello&hl=ko)

  • key=value 형태
  • ?로 시작, &로 추가 가능
  • query parameter, query string 등으로 불림

userinfo@

  • URL에 사용자정보를 포함해서 인증해야할때 사용하지만 거의 사용 안함

fragment

  • html 내부 북마크 등에 사용
  • 서버에 전송하는 정보 아님
  • 잘안씀

웹 브라우저 요청 흐름

처음에 DNS 서버를 조회한다. 그러면 IP정보(200.200.200.2)를 찾아낸다. 포트는 HTTPS이므로 443이 된다.

HTTP 요청 메시지는 위처럼 생겼다. GET으로 데이터를 요청하고, path, query, http 버전 등등이 들어가게 된다.

  1. 웹 브라우저가 HTTP 메시지를 생성한다.
  2. SOCKET 라이브러리를 통해 전달한다. 이때 SYN, SYN+ACK을 통해 구글과 연결한다.
  3. TCP/IP에서 데이터에 패킷을 씌운다.


이전 파트에서 있는 전송데이터가

이렇게 된다.

보낸다.

도착을 하게 되면 TCP 패킷을 까서 버리고 메시지를 살펴본다.
그러면 구글 서버에서 조건에 맞는 데이터를 찾는다.

그 후에 응답 메시지를 작성한다.
http 버전, 200 OK(정상응답), Content-Type(어떤 형식인가), Content-Length(길이) 등등

다시 보내

그렇게 패킷을 다시 까게 되면 이런 결과가 나오게 된다.

0개의 댓글