URI와 웹 브라우저의 요청 흐름

gparkkii·2020년 12월 26일
0

HTTP 웹 기본지식

목록 보기
6/9
post-thumbnail

✍🏻 URI와 웹 브라우저의 요청 흐름 알아보기


✅ URI, URL, URN

*️⃣ URI? URL? URN?

✔️ **URI (Uniform Resource Identifier)**는 로케이터(Uniform Resource Location), 이름(Uniform Resource Name), 또는 둘다로 분류 될 수 있다.

✔️ URI라는 큰 개념은 리소스를 식별하는 것. 즉, 로케이터와 이름을 식별하는 방법이다.

*️⃣ URL과 URN

✔️ URL은 리소스의 위치를 지정
✔️ URN은 리소스의 이름을 부여

▶️ URN은 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되어있지 않기 때문에 거의 URL만 사용한다.


✅ URI 알아보기

*️⃣ URI 단어 뜻 살펴보기

▶️ UNIFORM : 리소스를 식별하는 통일된 방식
▶️ RESOURCE : URI로 식별할 수 있는 모든 것 (제한 없음)
(ex. HTML파일, 실시간 교통정보 등등 그 외 우리가 구분할 수 있는 모든것)
▶️ IDENTIFIER : 다른 항목과 구분하는데 필요한 정보 (ID)

*️⃣ URI 문법

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

▶️ 프로토콜(Protocol) : https
▶️ 호스트명(Host) : www.google.com
▶️ 포트 번호(PORT) : 443
▶️ 패스(Path) : /search
▶️ 쿼리 파라미터(Query Parameter): q=hello&hl=ko


✅ URL 구조

*️⃣ URL Scheme

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

✔️ 스키마는 주로 프로토콜을 사용한다.
▶️ 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
(ex. http, https, ftp 등등)

✔️ https(HTTP Secure)는 http에 강력한 보안이 추가된 것이다.

*️⃣ URL User Info

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

✔️ URL에 사용자 정보를 포함해서 인증한다. 잘 사용되지 않는다.

*️⃣ URL Host

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

✔️ 호스트 명으로 도메인 이름 또는 IP주소로 직접 사용 가능하다.

*️⃣ URL PORT

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

✔️ 접속해야하는 포트 번호이다.
▶️ HTTP : 443
▶️ HTTPS : 80

✔️ 일반적 웹브라우저에선 생략 가능하지만 특정 서버에 따로 접근해야할 경우 명시해준다.

*️⃣ URL Path

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

✔️ 리소스의 경로로 계층적 구조를 이루고 있다.

ex)
▶️ /home/file1/jpg
▶️ /members
▶️ /members/100,/items/iphone12

*️⃣ URL Query

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

✔️ Key = Value 형태로 이뤄진 것이며 ?로 시작하고 &으로 추가 가능하다.
?key1=value1&key2=value2
✔️ query parameter, query string등으로 불리며 웹 서버에서 제공하는 파라미터와 문자 형태를 띄고 있다.

*️⃣ URL Fragment

  • scheme: [userinfo@]host[:port][/path][?query][#fragment]
  • https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-introducing-spring-boot**

✔️ html 내부 북마크 등에 사용되며 서버에 전송되는 정보는 아니다.


✅ 웹 브라우저 요청 흐름

*️⃣ HTTP 요청 메시지

🔗 HTTP 메시지 더 알아보기
✔️ URL통해 웹브라우저는 DNS서버에서 IP를 조회하고 HTTP PORT 정보를 찾아낸 후 HTTP 요청 메시지를 생성한다.

*️⃣ HTTP 메시지 전송

*️⃣ 패킷 내부의 HTTP 데이터

*️⃣ 패킷 전송 프로세스

  1. 패킷 전송

  2. 응답 메시지 생성

  3. 응답 메시지 전달
    ✔️ 응답메시지를 패킷에 담아 전달한다.

  4. 브라우저 HTML 렌더링


✅ Reference

출처:
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

profile
계속 발전하고 싶은 초보 개발자

관심 있을 만한 포스트

0개의 댓글

관심 있을 만한 포스트