CS/HTTP

[HTTP] 모든 개발자를 위한 HTTP 웹 기본 지식 - 2

haenni 2023. 11. 27. 20:13

👩‍💻 URI와 웹 브라우저 요청 흐름


 

 

📌 URI

✏️URI란 무엇인가

: URI(Uniform Resource Identifier

  • Uniform: 리소스 식별하는 통일 된 방식
  • Resource: 자원, URI로 식별할 수 있는 모든 것
    • : URI로 식별할 수 있는 모든 것을 자원(리소스)라고 한다.
  • Identifier: 다른 항목과 구분하는데 필요한 정보

URI = Resource Identifier = 리소스를 식별한다 (사람의 주민번호처럼 식별한다, 자원 자체를 식별하는)

URL = Resource Locator = 리소스 로케이터 (리소스의 위치, 리소스가 이 위치에 있어요라는 뜻)

URN = Resource Name = 리소스의 이름 (URN은 리소스 그 자체이다.)

 

 

✏️URL과 URN의 뜻

:단어 뜻

 

  • URL - Locator : 리소스가 있는 위치
  • URN - Name: 리소스에 이름을 부여
  • 위치는 변할 수 있지만, 이름은 변하지 않는다
  • 앞으로 URI를 URL과 같은 의미로 이야기함 

 

✏️URL의 전체 문법

  • scheme에는 보통 프로토콜의 정보가 들어간다.
    • 프로토콜은 어떤 방식으로 접근할 것인가에 대한 서버와 클라이언트간의 약속과 규칙이라고 할 수 있다.(http, https,  ftp)
    • http는 보통 80포트, https는 443 포트를 주로 사용하며, 포트는 생략 가능하다.
  • userinfo@
    • URL에 사용자정보를 포함해서 인증
    • 거의 사용 안함
  • host
    • 호스트명이라고 함. 도메인명 또는 IP 주소를 직접 사용가능하다.
  • PORT
    • 포트(PORT). 접속포트 라고 함.
  • path
    • 리스소 경로(path), 계층적 구조
    • 예)
      • /home/file1.jpg
      • /members
      • /members/100,   /items/ipthon12
  • query
    • key = value 형태
    • ?로 시작, &로 추가 가능 ?keyA=valueA&keyB=valueB
    • query parameter, query stirng 등으로 불림, 웹서버에 제공하는 파라미터. 문자 형태(String)로 넘어감 
  • fragment
    • html 내부 북마크 등에 사용
    • 서버로 전송되는 내용은 아님 

 

 

 

 

 

 

📌 웹 브라우저 요청 흐름

✏️ 웹 브라우저 요청 흐름

 

  1. 구글서버를 찾기 위해 DNS(도네임)을 조회한다
  2. 포트 정보를 찾아낸다(https는 보통 43이고 http는 80이다.)
  3. HTTP 요청 메세지를 생성한다.

"여기서 HTTP 요청 메세지는 어떻게 구성되어있을까?"

GET/path/HTTP버전정보/HOST: www.google.com

 

"HTTP 메세지 전송"

: 웹 브라우저가 먼저 HTTP 메세지를 생성하고, SOCKET 라이브러리를 통해 전달하여 SYN, SYN+ACK, ACK 하여 서버와 연결하고 데이터를 전달한다. TCP/IP에서 한번 패킷을 씌우고 거기에는 IP PORT 정보가 들어있게 된다. 패킷정보는 인터넷으로 흘러가게 된다.

 

전송 데이터 = HTTP 메세지

 

: HTTP 메세지라고 하는 전송 데이터를 TCP/IP 패킷에 포함시켜 인터넷망으로 던진다.

: 요청 패킷을 200.200.200.2번으로 전달하면 구글 서버 요청 패킷은 TCP/IP 패킷을 까서 다 버린 뒤 HTTP 메세지를 꺼내서 해석한다.

(ex) "query가 hello고 search로 왔으니 뭔가 검색한다는 뜻이겠구나. q가 hello고 hl이 한글이네. 그럼 검색엔진을 통해서 hello와 관련된 결과를 한국어로 내보내면 되겠구나"

 

: HTTP 메세지를 꺼내서 해석을 마친 구글 서버에서, 이 웹서버에서 HTTP 응답 메세지를 만들어 낸다.

구글 서버도 웹 브라우저와 똑같이 응답 HTTP를 TCP/IP 패킷으로 씌워 웹 브라우저에 보낸다. (위의 html 메세지를 보낸다.)

: 응답 패킷을 까서 웹 브라우저가 html 렌더링을 쫙 하고, 우리는 그 html 렌더링 된 화면을 보게 되는 것 이다.