이 글은 김영한님 ‘모든 개발자를 위한 HTTP 웹 기본 지식’ 강의를 듣고 작성합니다.
[2. URI와 웹 브라우저 요청 흐름] 강의에 해당된 내용을 정리하며 회고록을 작성합니다.
https://www.inflearn.com/course/http-웹-네트워크
URI? URL? URN? 이 세개를 한 번쯤 들어봤을 것이다.
3개의 개념을 확실히 잡고 가자!
URI는 로케이터(locator), 이름(name) 또는 이 둘을 다 추가로 분류할 수 있다
URI 는 Uniform Resource Identifier 약자로,
의 뜻을 가지고 있다.
다른 항목과 구분하는데 필요한 정보! locator나 name 같이 URI는 URL과 URN을 통틀여서 표현한다.
URL은 Locator로 리소스가 있는 위치를 지정한다는 뜻이다. URN은 Name, 리소스에 이름을 부여한다.
위치는 변할 수 있지만, 이름은 변하지 않는다.
URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않는다.
https://www.google.com/search?q=hello&hl=ko
해당 링크를 통해 URL을 분석해보자.
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- https://www.google.com:443/search?q=hello&hl=ko
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- https://www.google.com:443/search?q=hello&hl=ko
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- https://**www.google.com**:443/search?q=hello&hl=ko
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- https://www.google.com**:443**/search?q=hello&hl=ko
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- https://www.google.com/**search**?q=hello&hl=ko
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- https://www.google.com/search?**q=hello&hl=ko**
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- scheme://[userinfo@]host[:port][/path][?query][#fragment] https://docs.spring.io/spring-boot/docs/current/reference/html/getting-
started.html#getting-started-introducing-spring-boot
그러면 웹 브라우저에서 url를 요청할 때 어떻게 할까?
웹 브라우저에서 해당 주소를 요청하는 상황을 가정해보자.
먼저, 해당 url에서 DNS를 조회하여 IP 주소 200.200.200.2인 것을 알아내고, port 번호를 알아낸다.
이와 같이 HTTP 요청 메시지를 만들고
TCP/IP 패킷을 생성하여 서버에 전송한다.
서버에서 요청 패킷을 전달받으면, 서버에서는 잘 받았다는 응답 메시지를 생성한다.
그러면 웹브라우저에서는 요청한 url에 대한 view를 받아 렌더링하여 화면에 나타낸다.