728x90
URI(Uniform Resource Identifier)
직역 : 자원을 식별하는 통합된 방법
URI는 URL인 로케이터(locator)와 URN인 이름(name) 또는 둘다 같이 분류될 수 있다.
- URL : 자원의 위치를 알려주는 주소 (http://naver.com/book/novel?name="1984")
- URN : 자원의 이름 (urn:naver://book:1984)
- 위치는 변할 수 있지만 이름은 변하지 않는다.
- URN은 리소스에 이름을 부여한다.
- URN만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음
- URN은 다소 URL과 비슷하게 생겼지만 현재는 쓰이고 있지 않다.
- 그렇기에 보편적으로 URI와 URL을 동일한 의미로 이야기한다.
URL 문법
- scheme://[userinfo@]host[:port][/path][?query][#fragment]
- https://www.google.com:443/search?q=hello&hl=ko
- scheme : 주로 프로토콜이 들어감(https) (어떤 방식으로 자원에 접근할 것인가 하는 약속) http, https, ftp 등이 있으며 이러한 프로토콜은 포트를 생략할 수 있다.
- userinfo@ : 사용자 정보를 포함하여 인증, 거의 사용하지 않음
- host(www.google.com)
- port: 일반적으로 생략시 http는 80, https는 443
- path ****(/search) : 리소스 경로, 계층적 구조
- query(q=hello&hl=ko) : key=value 형태이며 ?로 시작하고 &로 추가함
- [#fragment] : html 내부 북마크 등에 사용, 서버에 전송하는 정보 아님 (스크롤 이동)
웹 브라우저 요청 흐름
이 URL로 어떻게 웹 브라우저가 요청하여 사이트를 볼 수 있는지 알아보자.
1. 사용자가 [https://www.google.com:443/search?q=hello&hl=ko](https://www.google.com:443/search?q=hello&hl=ko)
해당 url를 입력
2.웹 브라우저는 www.google.com:443를 가지고 DNS서버에서 google.com에서 200.200.200.2를 조회함 (https 프로토콜 요청시 port는 저절로 443이 요청됨)
3.조회한 정보로 HTTP 요청 메시지를 생성한다.
// HTTP 요청 메시지 예시
GET /search?q=hello&hl=ko HTTP/1.1
HOST: www.google.com
4. SOCKET 라이브러리를 통해 전달, IP와 PORT정보로 TCP/IP에 연결한다 (3 handshake)
5.TCP/IP 패킷 생성 (HTTP 메시지를 감싼다.)
6.인터넷 망을 통해 요청패킷을 목적지로 전송
7.구글 서버가 요청패킷을 받아서 tcp/ip를 벗기고 요청 메시지를 해석함 (search?q=hello&hl=ko)
8.해석된 데이터의 결과를 DB에 조회하고 응답 메시지를 만들어서 위 과정과 똑같이 송신
// HTTP 응답 메시지 예시
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>..<body>
</html>
9. 웹브라우저에서 HTTP 메시지 수신하여 내부 데이터로 html 데이터 렌더링을 하여 결과를 보게 된다.
'IT개념 > 네트워크' 카테고리의 다른 글
[Network] 1-1. 데이터 통신과 통신망 (0) | 2022.03.05 |
---|---|
[Network] HTTP 상태코드 (0) | 2021.07.27 |
[Network] HTTP에 대해 (0) | 2021.07.20 |
[Network] 인터넷 통신규칙(프로토콜) (0) | 2021.07.20 |
[Network] Proxy Server (0) | 2021.07.19 |