URI
Uniform: 리소스를 식별하는 통일된 방식
Resource: 자원 = URI로 식별할 수 있는 모든 것을 의미 (제한 없음)
Identifier: 다른 항목과 구분하는데 필요한 정보
URI는 URL과 URN을 포함한다. URL은 리소스가 있는 위치가 지정되어 있고, URN은 리소스에 이름을 부여하는 것이다. URN 이름으로만 실제 리소스를 찾을 수 있는 방법이 보편화 되어있지 않아서 거의 사용하지 않는다. 따라서 URI를 URL과 같은 의미로 봐도 무방하다.

URL 분석


- scheme: - 주로 프로토콜이 사용된다.
- 프로토콜: 어떤 방식으로 자원에 접근할 것인가에 대한 약속, 규칙 ex) http, https, ftp ...
- [userinfo@] - URL에 사용자정보를 포함해서 인증한다. 거의 사용되지 않는다.
- host - 호스트명으로 도메인명 또는 IP 주소를 직접 입력해 사용한다.
- [:port] - 접속 포트 번호를 입력한다. 일반적으로는 생략한다.
- [/path] - 리소스 경로를 입력한다.
- [?query] - key=value 형태로 쿼리 파라미터 혹은 쿼리 스트링을 전달한다. ?로 시작하고, &로 추가 가능하다.
- [#fragment] - html 내부 북마크 등에 사용되며, 서버에 전송하는 정보는 아니다.
웹 브라우저 요청 흐름
웹 브라우저에 앞서 말한 URL을 보내면 도메인과 포트를 보고
DNS
를 조회하여 IP
주소를 알아낸다. 그리고나서 HTTP
요청 메세지를 생성한다.
- 웹 브라우저가
HTTP
메세지를 생성한다.
- 이 메세지를
SOCKET
라이브러리를 통해 전달한다. TCP/IP
연결 :3 way handshake
방식을 통해- 데이터 전달
TCP/IP 패킷
생성하고,HTTP
메세지를 포함하여 서버에 전달한다.


요청 패킷이 도착하면 구글 서버는 패킷을 까서 그 안에 있는
HTTP
메세지를 읽는다. 읽고 요청을 수행한 후에 응답 메세지를 작성한다. 
여기서
content-type
이 html
이면 html
형식으로 쿼리 결과를 전달해준다는 의미이다. 그래서 응답 메세지를 다시 웹 브라우저에 보내면 웹 브라우저는 html
를 렌더링하여 사용자에게 보여주게 되는 것이다.