HTTP

[HTTP] 웹 기본 지식 정리 - URI와 웹 브라우저 요청 흐름

aaaahy 2023. 1. 8. 10:54

- 이 게시글은 인프런 "모든 개발자를 위한 HTTP 웹 기본지식"의 김영한님 강의를 보고 요약한 내용입니다.

 


1. URI(Uniform Resource Identifier)

 

자원 식별자로 여기서 자원은 URI로 식별할 수 있는 모든 것을 의미한다.

 

그렇다면 URL, URN을 구분할 수 있나?

 

URL(Uniform Resource Locator) - 자원의 위치를 지정

URN(Uniform Resource Name) - 자원의 이름을 부여

                                                  → 부여한 이름을 결과 매핑문제로 찾기 힘듦

                                                  → 거의 URL만 사용 

* 자원의 위치는 변할 수 있지만 이름은 변하지 않는다.

 

URL 분석을 위해 

https://www.google.com/search?q=hello&hl=ko

 

위 URL을 웹 브라우저에 입력해 본다.

결과는 아래와 같이 구글에서 "hello"를 검색한 화면이다.

 

URL 전체 문법

scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko

 

1) URL scheme

  • 주로 프로토콜 사용

* 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속 또는 규칙으로 http, https, ftp 등이 있다.

* https는 http에 강력한 보안을 추가한 것(HTTP Secure)

 

2) URL userinfo

  • URL에 사용자 정보를 포함해서 인증
  • 거의 사용하지 않는다

 

3) URL host

  • 호스트명으로 도메인명이나 IP주소를 직접 사용 가능

 

4) URL port

  • 접속포트로 일반적으로 생략(http - 80, https - 443)

 

5) URL path

  • 리소스 경로로 계층적 구조를 이룸 ex) /home/file1.jpg

 

6) URL query

  • key = value 형태로 존재
  • ?로 시작하며 &로 추가 가능 ex) ?keyA=valueA&keyB=valueB
  • query parameter, query string 등으로 불림

 

7) URL fragment

https://docs.spring.io/spring-boot/docs/current/reference/html/gettingstarted.html#getting-started-introducing-spring-boot
  • html 내부 북마크 등에 사용되며 서버에 전송하는 정보는 아님

 

2. 웹 브라우저 요청 흐름

URI를 요청하면 웹 브라우저가 DNS를 조회하여 IP와 PORT정보를 찾는다.

HTTP 요청 메시지를 생성한다.

* HTTP 요청 메시지 형태

GET / search?q=hello&hl=ko HTTP/1.1 Host: www.google.com

 

→ 소켓 라이브러리를 통해 TCP/IP에 연결하여 데이터를 전달한다.

TCP/IP 패킷을 생성한다.(HTTP 메시지 포함)

* TCP/IP 패킷의 전송 데이터 정보가 HTTP 메시지

→ 요청 패킷을 전달한다.

→ 서버에 요청 패킷 도착한다.

→ 서버에서 응답 패킷 생성하여 전달한다.

* HTTP 응답 메시지 형태

HTTP/1.1 200 OK
Content-Type : text/html;charset=UTF-8
Content-Length: 3423
<html>
  <body> ... </body>
</html>

 

→ 웹 브라우저에 응답 패킷 도착한다.

→ 응답 패킷의 html 데이터를 통해 html를 렌더링하여 보여준다.