TIL/모든 개발자를 위한 HTTP 웹 기본 지식

2. URI와 웹 브라우저 요청 흐름

Dev_Dank 2021. 6. 20. 19:01

인프런의 모든개발자를 위한 HTTP 웹 기본 지식 강의를 들은 내용을 정리하는 포스트입니다. 

아래의 MDN 문서도 같이 참고하면 더 좋습니다. 

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

 

HTTP 개요 - HTTP | MDN

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버

developer.mozilla.org


URI, URL, URN

URI

URI 는 Uniform Resource Identifier의 줄임말이다. 단어뜻은 간단하게 말하자면 자원을 파악하는데 통일된방식이라 할수 있겠다. 

그렇다면 URL과 URN은 무엇일까?
어느정도 차이가 있지만 URI가 URN과 URL을 포함하는 상위호환 개념으로 생각하면 된다.
(그리고 실상 URN은 거의 쓰지 않기 때문에 본강의 에서는 URI를 URL과 동일하게 부른다.)

URL문법

scheme
- 주로 프로토콜 사용
- 프로토콜: 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙 예) http, https, ftp 등등 
- http는 80 포트, https는 443 포트를 주로 사용, 포트는 표기 생략 가능하다
- https는 http에 보안 추가 (HTTP Secure)한 파일전송 방식임.

userinfo
- URL에 사용자정보를 포함해서 인증할때 이용
- 실제로는 거의 사용하지 않음

host
- 호스트명
- 도메인명 또는 IP 주소를 직접 사용가능

PORT
- 일반적으로 생략하며, 생략시 http는 80, https는 443

path
- 리소스 경로(path)이며, 계층적 구조이다. (컴퓨터 디렉토리와 비슷)
- 예)  /home/file1.jpg
        /members
        /members/100
        /items/iphone12

query
- key=value 형태로 되어있으며 
- ?로 시작, &로 추가 가능 ?keyA=valueA&keyB=valueB
- query parameter, query string 등으로 불리고, 웹서버에 제공하는 파라미터, 문자 형

fragment
- html 내부 북마크 등에 사용하며 서버에 전송하는 정보는 아니다. 

웹 브라우저 요청 흐름

웹 브라우저의 주소창에 내용을 입력
=> DNS를 조회하여 IP 주소를 받아옴
=> 웹브라우저가 HTTP 요청 메세지를 생성함. 

생성된 HTTP 메시지의 모습이다. GET이라는 무언가가 보이고 이전 강의에서 보았던 쿼리스트링, 파일전송방식, 그리고 호스트가 보인다. 

웹 브라우저에서 생성한 HTTP 메시지를 여러단계를 거쳐 추가정보를 붙이고 패킷으로 만들어서 인터넷망에 쏜다. 

그렇게 인터넷에 쏜 패킷이 서버에 도착하면 서버는 HTTP 응답메시지를 준비하여 응답 패킷을 만들고 클라이언트에게 다시 쏴준다. 

마지막으로 응답패킷이 클라이언트에게 도착하면 웹브라우저에서 해당내용을 기반으로 화면을 렌더링 하여 표현해준다.