-
2. URI와 웹 브라우저 요청 흐름HTTP 2022. 7. 26. 21:06
URI (Uniform Resource Identifier)
정의에 따르면, "URI는 Locator와 Name 혹은 둘 다 추가로 분류될 수 있다."고 되어있다.
즉, URI = URL + URN라고 할 수 있는 것이다.그렇다면, URI는 무엇일까 ? 우선, 단어의 뜻 부터 알아보자.
Uniform : Resource를 식별하는 통일된 방식Resource : URI로 식별할 수 있는 모든 자원Identifer : 다른 항목과 구분하는데 필요한 정보
즉, URI는 특정 자원을 식별해주는 식별자라는 것이다.
자연스럽게, URL은 위치(Locator), URN은 이름(Name)을 통해 자원을 식별한다는 뜻이 된다.
Resource의 위치는 변할 수 있지만, 이름은 변하지 않는다.
하지만, 이름만으로 실제 Resource를 Mapping하는 방법이 보편화되어있지 않기 때문에 대부분 URL을 사용한다.
URL 문법
URL은 프로토콜, 호스트명, 포트번호, 경로, 쿼리문, 프래그먼트로 구성되어있다.
ex) scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hi&hl=ko
● Scheme
주로, 프로토콜을 사용하며 http, https, ftp 등이 있다.
http는 80, https는 443 PORT를 주로 사용하며, scheme에 http나 https를 쓸 경우 PORT는 생략할 수 있다.
※ https는 http에 강력한 보안이 적용된 것으로 이해하면 된다.
ex) scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hi&hl=ko
● Userinfo
URL에 사용자정보를 포함하는 경우인데, 이는 잘 사용하지 않는다.
● Host
도메인 명을 말하며, IP 주소를 직접 입력해도 된다.
ex) scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hi&hl=ko
● Port
특정 IP의 접속 PORT를 말하며, 일반적으로 생략하여 사용한다. (http - 40, https - 443)
ex) scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hi&hl=ko
● Path
Resource가 존재하는 경로를 말한다. 이는 일반적인 컴퓨터 Directory와 같이 계층적 구조이다.
ex) scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hi&hl=ko
● Query
웹 서버에 파라미터를 제공하기 위해 사용한다.
key=value 형태로 사용하며, ?로 시작하여 추가적인 query는 &를 사용하여 추가한다.
ex) scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hi&hl=ko
● Fragment
html 내부 북마크 등에 사용되는 것으로써, 서버에 전송되는 정보는 아니다.
웹 브라우저 요청 흐름
웹 브라우저 주소창에 "https://www.google.com:443/search?q=hi&hl=ko" 를 입력하면,
DNS를 통해, 도메인 이름에 해당하는 IP 주소를 얻어온다.
이를 통해, HTTP 요청 메세지를 생성하는데, 그 내용은 아래와 같다.
HTTP 요청 메세지 GET /search?q=hi&hl=ko HTTP/1.1
Host: www.google.com즉, 웹 브라우저가 HTTP 요청 메세지를 생성하여 인터넷 프로토콜 스택의 4계층에 따라 동작하게 된다.
해당 HTTP 요청 메세지를 google 서버에 전달하면, 아래와 같은 응답 메세지가 도착한다.
HTTP 응답 메세지 HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>웹 브라우저에서 해당 응답 메세지를 열면, html 데이터를 통해 렌더링을 해주는 것이다.
'HTTP' 카테고리의 다른 글
6. HTTP 메서드 활용 (2) (0) 2022.07.28 5. HTTP 메서드 활용 (1) (0) 2022.07.28 4. HTTP 메서드 (0) 2022.07.28 3. HTTP의 기본 (0) 2022.07.26 1. 인터넷 네트워크 (0) 2022.07.26