웹 공부하기/HTTP
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (URI와 웹 브라우저 요청 흐름)
inthess
2021. 9. 16. 09:56
URI의 개념과 웹 브라우저 요청 흐름에 대해 알아보자.
URI
Uniform: 리소스를 식별하는 통일된 방식
Resource: 자원 = URI로 식별할 수 있는 모든 것을 의미 (제한 없음)
Identifier: 다른 항목과 구분하는데 필요한 정보
URI는 URL과 URN을 포함한다. URL은 리소스가 있는 위치가 지정되어 있고, URN은 리소스에 이름을 부여하는 것이다. URN 이름으로만 실제 리소스를 찾을 수 있는 방법이 보편화 되어있지 않아서 거의 사용하지 않는다. 따라서 URI를 URL과 같은 의미로 봐도 무방하다.
URL 분석
https://www.google.com/search?q=hello&hl=ko
scheme://[userinfo@]host[:port][/path][?query][#fragment]
- 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를 렌더링하여 사용자에게 보여주게 되는 것이다.
출처: [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식