본 포스팅은 [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 바탕으로 공부하고 정리한 글입니다.
URI
- Uniform Resource Identifier
- URI는 리소스를 식별하는 통합된 방법이다.
- 로케이터(locator), 이름(name) 또는 둘다 추가로 분류될 수 있다.
- URI
- U(Uniforn) : 리소스 식별하는 통일된 방식
- R(Resource) : 자원, URI로 식별할 수 있는 모든 것
- I(Identifier) : 다른 항목과 구분하는데 필요한 정보
- URL, URN
- URL : 리소스가 있는 위치(locator)를 지정
- URN : 리소스에 이름(name)을 부여
- 위치는 변할 수 있지만, 이름은 변하지 않는다.
- URN 이름만으로 실제 리소스를 찾을 수 있는 방법은 보편화되어 있지 않다.
- 따라서 통상적으로 URI = URL를 같은 의미로 이야기 한다.
URL 문법
scheme://[userinfo@]host[:port][/path][?query][#fragment]
예) https://www.google.com/search?q=hello&hl=ko
- 프로토콜 (https)
- 호스트명 (www.google.com)
- 포트 번호 (443)
- 패스 (/search)
- 쿼리 파라미터 (q=hello&hl=ko)
scheme | • cheme는 주로 프로토콜을 사용한다. • 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 클라이언트와 서버와의 약속 규칙 예) http, https, ftp 등 • http는 80포트, https는 443포트를 주로 사용한다. 이때 포트는 생략가능하다. |
userinfo | • URL에 사용자정보를 포함해서 인증해야할 경우 사용한다. • 거의 사용하지 않는다. |
host | • 도메인명이나 IP 주소를 직접 사용한다. |
port | • 접속 포트를 입력한다. • 일반적으로 생략 가능 (생략시 http는 80, https는 443) |
path | • 리소스가 있는 경로이다. • 계층적 구조로 되어있다. • 예) /home/file1.jpg, /members |
query | • key=value 형태로 데이터가 들어간다. • ?로 시작, &로 추가한다. • query parameter(웹 서버에서 제공하는 파라미터), query string(문자형태) 등으로 불린다. |
fragment | • 잘 사용하지 않음 • html 내부 북마크 등에 사용한다. • 서버에 전송하는 정보는 아니다. |
https는 http에 보안이 추가된 것이다 (HTTP Secure)
웹 브라우저의 요청 흐름
DNS 조회
먼저 www.google.com 도메인 DNS 조회를 통해 IP주소를 받는다. (IP:200.200.200.2)
HTTP 요청 메세지 생성
IP와 PORT 정보를 찾으면, HTTP 요청 메세지를 생성한다.
HTTP 요청 메세지 전송
HTTP 메세지를 생성하면 SOCKET 라이브러리를 통해 os에 전달하고,
os에서 TCP/IP 패킷을 생성해 네트워크 인터페이스를 통해 인터넷 망으로 전달한다.
요청 패킷 도착 및 HTTP 응답 메세지 전송
서버가 요청 패킷을 받으면, TCP/IP 패킷을 벗기고 HTTP 메세지를 확인한 뒤
HTTP 응답 메세지를 담아 응답 패킷을 생성해 클라이언트에게 전송한다.
응답 패킷 도착 및 HTML 렌더링
클라이언트가 응답 패킷을 받으면 HTTP 메세지로 전송된 HTML을 화면에 띄운다.
'💻 Computer Science > HTTP' 카테고리의 다른 글
[HTTP] 헤더1 - 일반 헤더 (0) | 2022.03.10 |
---|---|
[HTTP] HTTP 상태코드 (0) | 2022.03.08 |
[HTTP] HTTP 메소드 (1) | 2022.03.07 |
[HTTP] HTTP 기본 (0) | 2022.03.07 |
[HTTP] 인터넷 네트워크 (0) | 2022.03.04 |