Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

프로그래밍 끄적끄적

[HTTP] URI와 웹 브라우저 요청 흐름 본문

HTTP

[HTTP] URI와 웹 브라우저 요청 흐름

soeunkk 2021. 11. 3. 15:17

🌳 URI (Uniform Resource Identifier)

🍃 URI, URL, URN

URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다. URL은 리소스의 위치, URN은 리소스에 이름을 부여한 것이다. 위치는 변할 수 있지만 이름은 변하지 않는다. (예. 어떤 책의 isbn URN) 하지만 URN 만을 가지고 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않았기 때문에 잘 사용하지 않는다.

 

URI 뜻

    ▪ Uniform: 리소스를 식별하는 통일된 방식

    ▪ Resource: 자원, URI로 식별할 수 있는 모든 것

    ▪ Identifier: 다른 항목과 구분하는데 필요한 정보

 

🍃 URL

URL은 아래와 같은 구조를 가진다.

scheme://[userinfo@]host[:port][/path][?query][#fragment]

1. Scheme

    어떤 방식으로 자원에 접근할 것인가에 대한 약속 규칙인 프로토콜을 주로 사용 (ex. http, https, ftp)

    https는 http에 보안이 추가된 것

2. userinfo

    ▪ URL에 사용자 정보를 포함할 때 사용하나, 거의 사용하지 않음

3. host

    ▪ 호스트명 (도메인명 또는 IP 주소를 직접 입력)

4. port

    ▪ 포트 (일반적으로 생략하며, 생략시 http는 80, https는 443)

5. path

    ▪ 리소스가 있는 경로로, 계층적 구조로 되어 있음 (ex. /members/100)

6. query

    ▪ key=value 형태로 되어있음

    ▪ ? 로 시작하고 & 으로 추가가 가능함

    ▪ query parameter, query string이라고도 불림

7. fragment

    ▪ html 내부 북마크 등에서 사용함 (서버로 전송되는 정보 X)

 

🌳 웹 브라우저 요청 흐름

🍃 클라이언트 -> 서버 (HTTP 요청 메시지)

https://www.google.com/serach?q=hello&hl=ko 라는 URL 주소를 요청한다고 가정하자.

웹 브라우저는 먼저 호스트명(www.google.com)과 포트(생략되었지만 https이므로 443) 정보를 통해 DNS에 조회하여 IP 주소를 알아낸다. 이후 아래와 같은 HTTP 요청 메시지를 생성한다.

GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com

웹 브라우저가 HTTP 메시지를 생성하고 나면, 3 hand shake(SYN, SYN+AKC, ACK)를 통해 서버와 연결한 후, SOCKET 라이브러리를 통해 TCP/IP 계층에 전달한다. IP 주소와 PORT 정보가 담긴 헤더를 HTTP 메시지에 붙이고 요청 패킷을 서버에 전송한다.

🍃 서버 -> 클라이언트 (HTTP 응답 메시지)

요청 패킷이 서버에게 도착하면, 패킷들이 순서에 맞게 누락되지 않고 잘 왔는지 확인 후 헤더들을 떼어 버리고 HTTP 메시지를 처리한다. 즉, path, query에 쓰여진 정보를 통해 클라이언트가 요청하는게 무엇인지 파악한 후 필요한 정보를 담아 아래와 같은 HTTP 응답 메시지를 만든다.

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423

<html>
    <body> ... </body>
</html>

1. HTTP/1.1: HTTP 버전을 명시함

2. 응답 타입 (ex. 200 OK)

3. Content-Type: 데이터의 형식 정보를 넘김

4. Content-Length: 데이터의 길이

 

 


참고자료

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

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스

www.inflearn.com

 

'HTTP' 카테고리의 다른 글

[HTTP] HTTP 메서드 활용(2)  (0) 2021.11.09
[HTTP] HTTP 메서드 활용(1)  (0) 2021.11.09
[HTTP] HTTP 메서드  (0) 2021.11.09
[HTTP] HTTP 기본  (0) 2021.11.03
[HTTP] 인터넷 네트워크 (IP, TCP, UDP, POPT, DNS)  (0) 2021.11.03
Comments