[Web] - Http 정리 - 02
in Web on Web, Http, Tcp/ip, Ip, Dns
http 인프런 강의 - 챕터 2
목차
- URI (URL, URN)
- 웹 브라우저의 요청 흐름
URI (Uniform Resource Identifier)
나도 개발하면서 URI ? URL ? 햇갈리곤 했었다.
이번에 확실히 정리해보자.
먼저 URI가 가장 큰 범위의 개념이고 URL, URN이 URI에 속한다고 보면 된다.
지금은 URN이 거의 안쓰여서 URL과 URI가 거의 같은 개념으로 쓰인다고 한다.
- URL : Locator로 주소값으로 특정 자원을 찾아가는 방식이다.
- URN : Name으로 이름으로 특정 자원을 찾아가는 방식이다.
- 무슨 차이인가? 싶겠지만 위치는 변할수 있지만 이름은 변할수 없다
- urn:isbn:292929292929 이런류의 이름은 변경이 불가능하다. (그런데 보편화되지 않았다)
우리가 자주쓰는 URL을 더 알아보자
URL (Uniform Resource Locator)
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
위와 같은 구조로 되어있다.
- scheme : 주로 프로토콜을 사용한다 (ex, http, https)
- http:80, https:443 포트 생략 가능
- userinfo : URL에 사용자정보를 포함해서 인증, 거의 사용하지 않음
- host : 도메인명, 혹은 IP 주소값
- port : 접속 포트 , (80, 443은 생략가능)
- path : 리소스 경로 , 계층적 구조 (restAPI 등)
- query : ? 로 시작해서 &로 추가, key=value 형태
- query parameter, query string으로 불림 (모두 문자열로 인식함)
- fragment : html내부 북마크 등에 사용 , 서버 전송 안함
웹 브라우저 요청 흐름
- 먼저 해당 도메인명을 DNS에 조회해서 IP주소를 받아온다.
- 그리고 나서 해당 ip와 port 에 내가 보내고자 하는 정보를 패킷으로 만들어서 전송한다.
정상적으로 도착하면 구글에서 응답 메시지를 보내준다.
그리고 해당 응답 메시지를 분석해 브라우저가 화면을 랜더링 해준다.
www.google.com 을 주소창에 치면 일어나는 일 (What happens when type www.google.com)
위 블로그가 더 구체적으로 자세히 일어나는 일들을 설명해주었다.
DNS로 바로 가는게 아니라 cache를 통해서 네트워크 비용을 절약한다.
또한 TCP 통신을 위한 3-way-handshake 이후에 내가 보내고 싶은 데이터를 보내게 된다.