웹은 인터넷의 하위 개념인 World Wide Web(www)을 말하며, 특수한 형식의 문서 HTML이나 이미지 ,동영상 등이 웹 리소스를 인터넷과 하이퍼 텍스트를 통해 서로 연결한 시스템
흔히 사람들은 웹사이트를 탐색하는 행위를 일컬어 "인터넷을 한다"는 웹과 인터넷을 동일한 개념으로 혼용하곤 하지만, 사실 인터넷과 웹은 서로 다른 개념.
인터넷이란 TCP/IP 프로토콜을 통해 연결되어 있는 대규모 글로벌 네트워크. 인터넷과 하이퍼 텍스트는 웹이 생기기 이전부터 이미 존재했었으나 그 누구도 이 기술을 이용해 문서와 문서를 연결하는 방법을 생각하지 못했고, 1989년경 팀 버너스 리(Tim Berners Lee)는 과학자들이 데이터를 보다 쉬운 방법으로 공유할 수 있도록 웹을 발명.
웹의 탄생과 발전으로 인해 세상의 모든사람이 서로 연결되고, 정보를 공유, 소통할 수 있게 되었습니다.
웹을 통해 요청되는 대상을 웹 리소스(Web Resource)라고 하며 웹에서 사용되는 모든 컨텐츠.
웹 리소스에는 HTML, CSS , JAVASCRIPT, 텍스트, 이미지 등이 있다.
웹 리소스는 URI를 통해 식별
URI(Uniform Resource Identifier)는 통합 리소스 식별자이며, 앞서 말했듯 URI란 인터넷상에 있는 웹 리소스를 고유하게 식별할 수 있는 식별자.
- URI, URL은 보통 의미의 구분 없이 사용되곤 하지만 두용어에는 약간의 차이가 있다.
URL(Unifrom Resource Locator)은 인터넷상의 리소스의 위치를 나타냄, URL에서의 리소스는 하나의 파일을 의미하며, 바꿔 말하면 웹 상에서 접근할 수 있는 문서, 이미지, 동영상 등의 파일의 위치를 말함.사용자 프로필사진 을 볼수 있는 아래와 같은 형식은 URL이며 동시에 URI도 될수 있다.
https://www.bugbountyclub/profile/myphoto.jpgPHP로 구성된 블로그 특정
https://www.bugbountyclub.com/blog.php?category_no=1&article_no=1위 형식은 URL과 URI가 다른 의미로 사용.
여기서 URL은 https://www.bugbountyclub.com/blog.php라는 PHP 파일까지, 그리고 blog.php 파일을 통해 백엔드 데이터 저장소에 저장된 특정한 게시글을 식별하기 위해 사용된 category_no=1&article_no=1 이 부분을 쿼리스트링이라고함. 까지를 통틀어 URI라고 한다.
즉 URL은 URI에 속하는 형태 중 하나로 URI가 더 큰 개념이라고 할 수 있다.
이와 같이 URL과 URI의 의미는 약간의 차이가 있다. 반드시 구분해서 사용할 자리가 아니라면 그냥 URL 을 사용해도 무방
웹을 통해 리소스를 식별하고 요청하기 위해서는 URI가 사용된다는 것을 알았습니다.
따라서 URI의 구조가 어떻게 생겼는지 이해하고 있어야한다.
URI는 일반적으로 아래의 형태에 따라 선택적으로 사용
Scheme://Username:Password@Host:Port/Path?Query#Fragment
각 구성요소에 대한 의미는 다음과 같다.
- Scheme: 어떤 프로토콜을 사용하여 리소스를 요청할지를 의미. 웹인 경우 http, https를 사용하며, ftp, file 등을 프로토콜을 사용하기도 한다.
- Username: 요청하는 리소스가 인증이 요구되는 경우 리소스에 접근하기 위한 사용자 이름을 의미
- Password: 요청하는 리소스가 인증이 요구되는 리소스인 경우 리소스에 접근하기 위한 사용자 패스워드를 의미.
- Host: 클라이언트가 리소스를 요청할 대상 컴퓨터(서버).
- Port: 웹 서버의 특정 서비스에 접근하기 위한 포트번호를 의미, 웹은 80, 443 포트 사용
- Path: 호스트상의 리소스의 경로를 의미.
- Query: GET요청에서 데이터를 웹 서버로 전달할 때 사용.
- Fragment: 하나의 HTML페이지 내에서 특정 요소로 스크롤을 이동하기 위해 사용.
위의 형식에 다라 URI를 구분한 예시 , 연보라색 음영처리 부분을 구분자로 하여 각각의 파트가 구분되고 해석.

사용자가 웹사이트를 방문 하는 상황을 그림으로 살펴 보자. 
사용자가 웹 브라우저의 주소표시줄에 URL을 입력 후 이동하게 되면 위의 그림에는 표현되지 않았지만 웹브라우저는 제일 먼저 DNS 서버로부터 입력된 웹 주소의 IP주소를 알아냅니다. 그리고 웹브라우저는 HTTP를 통해 웹 서버에 웹 사이트의 사본을 요청하게 되고, 요청을 받은 웹 서버는 구동 중인 웹 애플리케이션에서 요청에 해당되는 웹 페이저를 찾아 웹 브라우저에게 응답으로 보내고, 응답을 받은 웹 브라우저는 웹페이지를 브라우저에 표시하게 된다.
웹을 구성하는 5가지 구성요소
웹 클라이언트(Web Client): 요청을 하는 주체, 즉 사용자
웹 브라우저(Web Browser): 사용자가 웹 서버에 요청을 보내기 위해 사용한 소프트웨어
HTTP(Hyper Text Transper Protocol): 웹을 통한 정보 전송을 위한 통신프로토콜(규약)
웹 서버(Web Sever): 웹 브라우저의 요청에 해당되는 웹 페이지를 제공하는 주체.
웹 애플리케이션(Web Application): 웹 브라우저를 통해 접근할 수 있는 응용 프로그램.
웹 브라우저를 이용하여 요청을 하는 사용자 자체를 의미
웹 브라우저는 웹상의 정보에 접근하기 위한 소프트웨어, 사용자가 특정 웹사이트의 웹 페이지를 요청하면 웹 브라우저는 웹 서버로부터 필요한 컨텐츠를 받아서 사용자의 디바이스에 표시.
즉, 웹사이트를 방문하여 문서를 검색하고, 웹사이트의 다양한 기능을 사용하기 위해서 사용되는 일종의 응용 프로그램.
웹 브라우저 종료로는 구글의 크롬, 애플의 사파리, 마이크로소프트의 엣지, 오페라 등이 있으며, 이 중에서 현재 전 세계적으로 시장 점유율이 높은 웹 브라우저는 크롬.
HTTP는 웹에서 HTML 문서를 주고 받기 위한 OSI 7 Layer상의 7계층(Application Layer)에 속하는 통신 프로토콜로, 웹의 핵심이 되는 통신 프로토콜이다. HTTP는 전통적인 클라이언트/서버 모델을 따르며, 메시지 기반의 요청과 응답을 통해 정보를 교환. 또한, HTTP는 비상태정(Stateless), 비연결성(Conetcionless)이라는 특징을 가지는데 다시 말해서 클라이언트의 요청에 서버가 응답을 보낸 후 연결을 유지하지 않고 종료시키며, 어떤 상태도 저장하지 않는다는 것을 말함.

이러 특징으로 인해 웹 애플리케이션에서는 사용자 추적을 위해 세션과 쿠키라는 것을 사용하게 된다.
HTTTP 2.0이란 ?
HTTP 2.0은 HTTP 1.1의 제약사항을 개선한 새로운 버전. 하나의 커넥션에 요청과 응답을 한번씩 주고 받는 HTTP 1.1 과 달리 하나의 커넥션에 여러 개의 요청과 응답을 병렬 처리할 수 있는 장점이 있다.
그 밖에 헤더 압축을 통해 HTTP 1.1에서 발생되는 연속된 요청에 존재하는 중복 헤더값을 제거함으로써 불필요한 부하를 줄일수 있다.
일반적인 HTTP 요청은 다음과 같이 요청 라인, 쵸헝 헤더, 빈 줄, 메시지 바디, 이렇게 종 네가지로 나뉘어 진다.

감사합니다. 이런 정보를 나눠주셔서 좋아요.