현재 포스팅은 영한님의 HTTP 강의를 바탕으로 작성한 포스팅입니다 :)
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
URI및 URL 구성 요소
URI(Uniform Resource Identifier)는 인터넷 자원을 나타내는 고유식별자로, URL(Resource Locator: 위치)와 URN(Resource Name : 이름)으로 나뉩니다.
URI에서 Uniform은 리소스를 식별하는 통일된 방식, Resource는 URI로 식별할 수 있는 자원(ex: html 파일, 실시간 교통 정보 등 제한이 없음), Identifier는 다른 항목과 구분하는데 필요한 정보를 의미합니다.
만약 웹 브라우저에 https://www.google.com/search?q=hello&hl=ko 이러한 url을 치면, 이에 대한 리소스를 내려주게 됩니다.
위 그림과 함께 URL의 구성 요소에 대해 차근차근 알아보겠습니다 :)
scheme : 프로토콜을 나타냅니다. 여기서 프로토콜이란 어떤 방식으로 자원에 접근할 것인가 하는 약속 및 규칙이라고 이해하시면 좋을 것 같습니다. (ex: http, https, ftp 등등)
userInfo : URL에 사용자 정보를 포함해서 인증해야 할때 사용하는 정보로, 거의 사용하지 않습니다.
host : 호스트명으로 도메인 명 또는 IP주소를 나타냅니다.(ex:www.gooogle.com)
port : 접속 포트 번호를 적게 됩니다. 일반적으로 http는 80, https는 443 포트를 사용합니다.
/path : 리소스 경로를 나타내며, 보통 계층적 구조로 구성되어있습니다.(ex: /home/fil1.jpg, /members/100, /items/iphone14 등등)
query : key-value 형태의 데이터로 보통 쿼리 파라미터나, 쿼리 스트링 등으로 불립니다.(웹 서버에서 제공하는 파라미터, 문자 형태)
fragment : html 내부 북마크 등에 사용하는 정보로 서버에서 사용하지 않는 정보입니다.
웹 브라우저 요청 흐름
사용자가 웹 브라우저에 URL을 입력하면 웹 브라우저는 해당 URL을 기반으로 HTTP 요청 메세지를 생성합니다. 이 메세지는 요청 헤더, 메서드 타입(GET, POST 등), 경로(IP, PORT) 정보를 포함합니다.
이후 웹 브라우저는 SOCKET 라이브러리를 사용하여 OS 계층에 데이터 전송 요청을 합니다. 여기서 SOCKET은 응용 프로그램과 TCP/IP 간의 중간 인터페이스 역할을 한다고 이해하시면 됩니다!
웹 브라우저는 TCP 3-way-handshake를 통해 서버와의 연결을 확립합니다. 이후 연결이 확립되면 웹 브라우저는 HTTP 요청 메세지를 서버에 전달하게 됩니다.
서버 전달 시, HTTP 요청 메세지는 TCP/IP 패킷으로 감싸져서 전송됩니다. 이 패킷에는 출발지와 목적지의 IP,PORT 뿐 아니라 패킷의 순서 등의 정보를 포함합니다.
이렇게 생성된 TCP/IP 패킷은 인터넷을 통해 해당 서버의 IP 주소로 전송됩니다.
이후 Request는 인터넷에 수많은 노드를 거쳐 구글 서버에 도착을 할것입니다. 이때 구글 서버는 TCP/IP 패킷을 제거하고, HTTP 메세지를 확인합니다. 이때 서버는 파라미터들을 바탕으로 데이터를 찾은뒤 다음과 같은 형식으로,HTTP 응답 메세지를 내려주게 됩니다.
이후 구글 서버도 똑같이 응답 메세지에 패킷을 씌운 다음 응답을 내려주게 됩니다!
'네트워크 > 영한님 강의 - HTTP 웹 기본 지식' 카테고리의 다른 글
HTTP 상태 코드들에 대해 알아보자! (0) | 2023.08.19 |
---|---|
HTTP 메서드 개념 및 활용(GET, POST, PUT, PATCH, DELETE) (0) | 2023.08.19 |
HTTP란 무엇일까?(클라이언트-서버, stateless, connectionless, 메세지) (0) | 2023.08.19 |
인터넷 네트워크(인터넷 통신, IP, TCP&UDP, PORT, DNS) (0) | 2023.08.15 |