[네트워크] HTTP 기초 - URI와 웹브라우저 요청 흐름

시작하기

1. URI


1.1 URI 단어 뜻

URI는 Uniform Resource Identifier의 약자이다. 직역하면 자원을 식별하는 형식일 것이다.
URI와 유사하게 URL와 URN를 들어봤을 것이다. URI는 로케이터(locator), 이름(name) 또는 둘다 추가로 분류될 수 있다. 그래서 URI는 URL과 URN를 다 포함하고 있다. URL은 리소스의 위치이고, URN은 리소스의 이름 자체이다. URN을 부여하면 그 위치를 찾을 방법이 보편화 되어 있지 않아 찾기 힘들어서 URL만 거의 쓰인다.
URI 단어 뜻은

  • Uniform: 리소스 식별하는 통일된 방식
  • Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)
  • Identifier: 다른 항목과 구분하는데 필요한 정보 앞에서 설명했는 URN는 거의 쓰이지 않기 때문에 URI와 URL 동일한 용도로 단어를 쓰고 있다.

1.2 URI 문법

schema://[userinfo@]host:[:port][/path][?query][#fragment] https://www.google.com:443/search?q=hello&hl=ko

  • 프로토콜(https): 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
  • 호스트명(www.google.com)
  • 포트 번호(443)
  • 패스(/search) : 리소스 경로, 계층적 구조
  • 쿼리 파라미터(q=hello&hl=ko) :
    key=value 형태, ?로 시작하고 &로 추가기능, query parameter나 query string으로 불리고 웹서버에 제공하는 파라미터 문자형태

userinfo는 거의 안쓰고 port는 주로 생략한다.

2. 웹브라우저의 흐름


우리가 주소창 https://www.google.com:443/search?q=hello&hl=ko를 요청하면 맨 처음 DNS를 조회해서 IP 주소를 찾고 포트 주소를 찾아 HTTP 요청 메시지를 생성한다. 이 메시지는 다음과 같이 생겼다.
GET/search?1=hello&hl=ko HTTP/1.1
Host:www.google.com
이렇게 생성된 메시지는 전에 설명한 SOCKET 라이브러리에서 TCP/IP의 3 way handsheak 방식으로 데이터를 전달한다. 그렇게 TCP/IP 패킷이 메시지 겉에 생성된다. 이 패킷이 인터넷 망에 던져지고 IP 주소를 통해 찾아간다. 그렇게 호스트 구글 서버에 도착하면 이 패킷 껍데기는 다 까서 버리고 요청 메시지를 해석한다. 그리고 그에 맞는 HTTP 응답 메시지를 만든다.

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

</html>” </br> 이 메시지도 마찬가지로 패킷으로 보내지고 그 패킷을 받으면 껍데기를 다 까서 응답 메시지에 맞게 html 렌더링을해서 화면에 표시하게 된다.






© 2021.11. by 21thkafka

Powered by 21thkafka