[1] URI (Uniform Resource Identifier)
- Uniform: 리소스를 식별하는 통일된 방식
- Resource: 자원, URI로 식별할 수 있는 모든 것
- Identifier: 다른 항목과 구분하는데 필요한 정보
[2] URL (Uniform Resource Locator) / URN (Uniform Resource Name)
- URL - Locator: 리소스가 있는 위치를 지정
- URN - Name: 리소스에 이름을 부여
- Locator는 변할 수 있지만 Name은 변하지 않는다.
- Name만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않아서 대부분 URL을 사용한다.
[3] URL 문법 해석
(문법) scheme://[userinfo@]host[:port][/path][?query][#fragment]
(예제) https://www.google.com:443/search?q=hello&hl=ko
(해석)
- 프로토콜: https
- scheme 부분은 주로 프로토콜 사용
- 프로토콜이란 어떤 방식으로 자원에 접근할 것인가 하는 규칙을 말함
- 프로토콜 종류 - http, https, ftp 등
- userinfo@
- URL에 사용자 정보를 포함해서 인증, 거의 사용하지 않음
- 호스트명: www.google.com
- 도메인명 또는 IP 주소를 직접 사용 가능함
- 포트 번호: 443
- 접속 포트(PORT)
- http는 80, https는 443 등으로 일반적으로 생략함
- 경로(path): /search
- 계층적 구조를 가지는 리소스 경로
- 쿼리 파라미터: ?q=hello&hl=ko
- ?로 시작하는 key=value 형태를 가지고, &로 추가 가능함
- Query Parameter 또는 Query String 으로 불림
- #fragment
- html 내부 북마크 등에 사용됨
- 서버에 전송하는 정보가 아님
[4] 웹 브라우저 요청 흐름
- https://www.google.com:443/search?q=hello&hl=ko
- 사용자가 위의 URL로 요청을 하면 DNS 서버에서 https://www.google.com 에 맞는 IP 주소와 포트 번호를 조회한다.
- 경로와 쿼리를 해석해서 요청 방식, 쿼리, HTTP 버전, 호스트 정보 등이 담긴 HTTP 요청 메세지를 만든다.
- Socket 라이브러리로 3 way handshake를 통해 서버와 연결하고, TCP/IP 계층으로 데이터를 전달한다.
- TCP/IP 계층에서 HTTP 요청 메세지를 포함한 TCP/IP 패킷을 생성한다.
- 인터넷 망을 통해서 구글 서버로 요청 패킷을 전송한다.
- 서버는 패킷 안에 있는 메세지를 해석해서 버전, 상태, 컨텐츠 정보, html 정보 등이 담긴 HTTP 응답 메세지를 생성한다.
- 생성한 HTTP 응답 메세지를 TCP/IP 패킷으로 감싸고 클라이언트(사용자)에게 전송한다.
- 응답 패킷을 받으면 웹 브라우저가 HTTP 응답 메세지를 확인한 후 html 렌더링하여 사용자 화면에 출력한다.
[출처] "(인프런) 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한" 강의를 듣고 내용을 정리함.
'웹개발을 위한 HTTP 기초 지식' 카테고리의 다른 글
[HTTP] 6. HTTP 상태 코드 (0) | 2021.04.07 |
---|---|
[HTTP] 5. HTTP 메서드 활용 (0) | 2021.04.07 |
[HTTP] 4. HTTP 메서드 (0) | 2021.04.07 |
[HTTP] 3. HTTP 기본 (0) | 2021.04.06 |
[HTTP] 1. 인터넷 네트워크 (0) | 2021.04.06 |