study/HTTP
HTTP 웹 기본 지식(2) - URI와 웹 브라우저 요청 흐름
올스왑
2022. 2. 13. 21:13
이 글은 인프런 김영한 님의 강의 모든 개발자를 위한 HTTP 웹 기본 지식을 듣고 정리하는 글입니다.
URI
URI - Uniform Resouce Identifier. 통합 자원 식별자.
URI 안에는 URL(loacater)과 URN(name)이 있다. 각각 리소스의 위치, 리소스의 이름으로 식별하는 방법이다.
일반적인 url - Exmple.com:2013/over/there
Urn은 거의 안쓴다. - example:animal:ferret
- URI
- Uniform: 리소스를 식별하는 통일된 방식
- Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)
- Identifier: 다른 항목과 구분하는데 필요한 정보
- URL: Uniform Resource Locator. 리소스가 있는 위치를 지정.
- URN: Uniform Resource Name. 리소스에 이름을 부여. 보통 책의 ISBN 같은 곳에 쓰인다.
- 위치는 변할 수 있지만, 이름은 변하지 않는다.
- URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않았다.
Url 분석하기 - https://www.google.com:443/search?q=hello&hi=ko
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- scheme
- 주로 프로토콜 정보가 들어간다.
- 프로토콜 : 어떤 방식으로 지원에 접근할 것인가 하는 약속, 규칙
- Http는 80포트, https는 443포트를 주로 사용. Http나 https를 사용하면 포트는 생략 가능.
- Https는 http에 보안 추가
- userinfo@
- URI에 사용자 정보를 포함해서 인증할 때 사용한다.
- 거의 사용하지 않는다.
- host
- 호스트명
- 도메인 이름이나 ip 주소를 직접 입력할 수 있다.
- port
- 접속 포트
- 일반적으로 생략, 생략시 http는 80, https는 443
- path
- 리소스 경로, 대개 계층적 구조로 되어 있다.
- query
- Key=value 형태로 값이 들어간다.
- ?로 시작, &로 추가 가능 ?keyA=ValueA&keyB=valueB
- Query parameter, query string 등으로 불린다.(웹서버에 제공하는 파라미터, 문자 형태여서)
- Fragment
- Html 내부 북마크 등에 사용
- 서버에 전송하는 정보는 아님.
웹 브라우저 요청 흐름
https://www.google.com/search?q=hello&hl=ko 웹브라우저에서 이 주소를 호출하면 생기는 일을 알아보자.
- 먼저 웹 브라우저가 www.google.com에 대한 dns를 조회해, ip와 port를 조회한다.
- Http 요청 메시지를 생성한다.
- GET /search?q=hello&hl=ko HTTP/1.1 HOST: google.com
- 그리고 생성된 메시지를 socket 라이브러리를 통해 전달한다.
- 먼저 tcp/ip로 구글 서버와 연결하고 데이터를 전달한다.
- Tcp/ip 패킷 생성, http 메시지를 포함한.
- 구글 서버에서는 HTTP 요청 메시지를 받으면 데이터를 처리하고 http 응답 메시지를 만든다.
- 다시 웹 브라우저로 보낸다. 웹 브라우저는 받은 메시지를 html 렌더링하여 보여준다.