🧐 URI? URL? URN?
💡 URI 내부에 URL, URN이 포함되어 있다.
URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다.
📌 URI(Uniform Resource Identifier) 뜻
📌 URL(Uniform Resource Locator) 뜻
📌 URN(Uniform Resource Name) 뜻
위치는 변할 수 있지만 이름은 변하지 않는다. URN 이름만으로 실제 리소스를 찾는 방법이 보편화되지 않았다.
📌 URL 전체 문법
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
🧐 프로토콜이란? 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙이다.
예) http, https, ftp 등등
userinfo
URL에 사용자 정보를 포함해서 인증할 때 사용하는데 userinfo는 거의 사용하지 않는다.
host
호스트명이라고 한다. 보통 도메인명을 사용하거나 IP 주소를 직접 사용한다.
[:port]
접속 포트로 일반적으로 생략하지만, 특정 서버에 따로 접근할 때는 PORT를 입력한다. (EX: localhost:8080)
[/path]
리소스가 있는 경로로 계층적 구조로 되어 있다.
(EX: pages/coupon/couponpager.vue)
[?query]
key=value 형태로 데이터가 들어가 있다. ?로 시작, &로 추가 가능하다.
(EX: ?keyA=valueA&keyB=valueB)
'query parameter'라 하고 웹서버에 제공하는 파라미터가 문자 형태이기 때문에 'query string'으로도 불린다.
🧐 웹 브라우저는 어떻게 동작할까?
- URL을 입력한다.
- DNS를 조회해서 해당 도메인의 IP를 찾아내고 PORT가 생략되어 있다면 scheme(https) 포트번호를 반환한다.
- 웹 브라우저가 HTTP 요청 메시지를 생성한다.
- SOCKET 라이브러리를 통해 메시지를 전달한다.
- TCP/IP로 IP와 PORT 정보를 찾은 다음, 3 way handshake 방식으로 구글 서버와 연결하고 데이터를 전달한다.
- TCP/IP 패킷을 생성해서 패킷 정보가 인터넷으로 흘러 들어가게 된다.
- 웹 브라우저가 보낸 요청 패킷이 서버에 도착하면 패킷을 열어서 HTTP 메시지를 확인하고 서버가 해석한다.
- 서버가 HTTP 응답 메시지를 만들어서 TCP/IP 패킷으로 감싼 후 웹 브라우저에 전송하면, 웹 브라우저에서 패킷을 열어 HTTP 응답 메시지를 확인하고 해석한다.
- 웹 브라우저가 HTML을 렌더링해서 내가 화면에서 HTML 결과를 볼 수 있게 된다.