URI가 무엇인가, 웹브라우저 요청 흐름은 어떻게 흘러가는가 알아보자
URI
Uniform Resource Identifier
자원식별자 공통형태
URI = URL + URN
- RUL: Resource Locator : 리소스가 있는 위치
- URN: Resource Name : 리소스에 이름을 붙임
단, URN을 사용할 때는 유일한 이름일 때만 쓸 수 있다.
URN은 잘 사용하지 않는다
그래서 URI = URL 거의 동일한 의미로 사용한다
URL 분석
표현방법
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
- 스키마 : 주로 프로토콜 사용 (http, https, ftp ....)
- userinfo : 거의 사용 안 함
- host : 호스트명. 도메인명 or IP주소
- port : 프로토콜에 따라 보편적으로 사용하는 포트는 생략 가능하다.
- http는 80, https는 443을 보편적으로 사용하고, 생략 할 수 있다.
- ex) https://www.google.com:443 -> https://www.google.com
- path : 리소스 경로를 나타내며 일반적으로 계층구조로 설계한다(필수는 아니지만 보편적으로 계층설계 함)
- query : key=value 형태로 작성하고, &로 여러개 추가할 수 있다. 쿼리파라미터, 쿼리스트링 으로 부른다.
- fragment : html 내 북마크에 사용된다. 서버로 전송하는 정보는 아니다.
예시
https://www.google.com:443/search?q=uri%EC%9C%84%ED%82%A4&hl=ko
- https : 프로토콜
- www.google.com : 호스트명
- 443 : 포트번호
- /search : path
- q=uri%EC%9C%84%ED%82%A4&hl=ko : 쿼리 파라미터 (=쿼리 스트링)
웹 브라우저 요청 흐름
- [Client] 사용자가 웹브라우저에서 URI를 입력하고 데이터 요청한다
- [Client] 웹브라우저가 HTTP 요청메시지를 만든다.
HTTP 요청메시지 예) GET /search?q=uri%EC%9C%84%ED%82%A4&hl=ko HTTP/1.1 Host:www.google.com - SOCKET라이브러리를 통해서 TCP/IP 계층에 연결하고 HTTP메시지를 전달한다
- [Client] TCP/IP 계층에서 TCP/IP패킷을 생성해서 거기에 전달받은 HTTP메시지를 포함시킨다.
TCP/IP패킷 = 출발지IP,PORT + 도착지IP,PORT + HTTP메시지 - [Client] 네트워크 인터페이스 계층으로 TCP/IP패킷을 전달한다.
- 서버로 TCP/IP패킷을 전송한다.
- 인터넷을 통해서 서버에 도착한다.
- [Server] 도착한 TCP/IP패킷에서 HTTP요청메시지만 추출하여 요청정보를 처리한다.
- [Server] HTTP응답메시지를 생성한다.
예) - [Server] 응답 TCP/IP패킷을 생성하고 클라이언트로 전달한다
- [Client] 응답 TCP/IP패킷을 열어서 HTTP응답메시지만 추출하고, HTML렌더링하여
이 글은 인프런 김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'를 공부하고 개인적으로 정리한 글입니다.
'강의와 책과 스터디' 카테고리의 다른 글
| 책. TCP/IP 쉽게, 더 쉽게 (0) | 2023.11.06 |
|---|---|
| 스터디 관리툴 고민:개발도서 독서모임을 주관하게 되었는데 (0) | 2023.07.24 |
| HTTP.03.HTTP 메서드02 (0) | 2023.04.07 |
| HTTP.03.HTTP 메서드01 (0) | 2023.04.07 |
| HTTP.01.인터넷 네트워크 (0) | 2023.03.23 |
