mojo's Blog
URI와 웹 브라우저 요청 흐름 본문
URI
※ URI(Uniform Resource Identifier)
로케이터, 이름 또는 둘 다 추가로 분류될 수 있다.
예를 들어서 알아보도록 한다.
URL ex ) foo://example.com:8042/over/there?name=ferret#nose (평소에 보던 URL)
URN ex ) animal, ferret, nose, ... (이름 그 자체)
※ URI
- Uniform : 리소스를 식별하는 통일된 방식
- Resource : 자원, URI로 식별할 수 있는 모든 것(제한 x)
- Identifier : 다른 항목과 구분하는데 필요한 정보
※ URL, URN
- URL - Locator : 리소스가 있는 위치를 지정
- URN - Name : 리소스에 이름을 부여
- 위치는 변할 수 있지만, 이름은 변하지 않는다.
- URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않는다.
예를 들어서 https://www.google.com/search?q=hello&hl=ko 에 대한 URL 을 분석해보도록 하자.
※ URL 문법
- scheme://[userinfo@]host[:post][/path][?query][#fragment]
- https://www.google.com:443/search?q=hello&hl=ko
프로토콜 : https
호스트명 : www.google.com
포트 번호 : 443
경로 : /search
쿼리 파라미터 : q=hello&hl=ko
① URL scheme
주로 프로토콜을 사용한다.
프로토콜이란 어떤 방식으로 리소스에 접근할 것인가 하는 약속 규칙을 의미한다. (예를 들어 http, https, ftp 등)
http는 80 포트, https는 443 포트를 주로 사용하며 포트는 생략 가능하다.
https는 http에 보안을 추가한 것으로 알아두면 된다. (HTTP Secure)
② URL userinfo
URL에 사용자정보를 포함해서 인증하지만 거의 사용하지 않는다.
③ URL host
호스트명으로 도메인명 또는 IP 주소를 직접 사용가능하다.
④ URL port
접속 포트로 일반적으로 생략이 가능하다.
⑤ URL path
리소스 경로이며 계층적 구조를 띈다. (ex : /members/100, /items/iphone12, ...)
⑥ URL query
key=value 형태이다.
?로 시작하고 &로 기능을 추가할 수 있다. (ex : ?keyA=value&keyB=valueB&keyC=valueC)
query parameter, query string 으로 불리며 웹서버에 제공하는 파라미터, 문자 형태이다.
⑦ URL fragment
html 내부 북마크 등에 사용되며 서버에 전송하는 정보가 아니다.
웹 브라우저 요청 흐름
https://www.google.com:443/search?q=hello&hl=ko 에 대한 HTTP 요청 메시지를 알아보도록 한다.
위의 전송 데이터 HTTP 메시지가 결국 TCP/IP 패킷 내부에 다음과 같이 생성되는것을 알 수 있다.
1. 웹 브라우저(IP : 100.100.100.1)에서 구글 서버(IP : 200.200.200.2)으로 위와 같은 패킷을 전달한다.
2. 구글 서버에 패킷이 도착하게 되면, TCP/IP 패킷을 까서 버리고 핵심인 HTTP 메시지를 열어서 분석을 하게 된다.
그리고 다음과 같이 HTTP 응답 메시지를 만들게 된다.
3. 응답 패킷을 동일하게 만든 후, 구글 서버에서 웹 브라우저로 보낸다.
4. 웹 브라우저 측에서는 TCP/IP 패킷을 까서 버리고 핵심인 HTTP 메시지를 열어서 읽는다.
그리고 웹 브라우저가 HTTP 메시지를 HTML 렌더링을 해서 HTML 결과물을 보게 된다.
'HTTP' 카테고리의 다른 글
HTTP 헤더1 - 일반 헤더 (0) | 2022.01.26 |
---|---|
HTTP 상태코드 (0) | 2022.01.24 |
HTTP 메서드 및 활용 (0) | 2022.01.23 |
HTTP 기본 (0) | 2022.01.20 |
인터넷 네트워크 (0) | 2022.01.19 |