웹이란?
-
인터넷
1960 년 미국에서 처음 등장. 여러 대의 컴퓨터가 연결되어 서로 정보를 주고받을수 있게 된 것.
-
웹
1990 년 스위스의 유럽 입자물리 연구소의 개발자 팀 버너스 리가 최초의 웹브라우저(world wide web), 최초의 웹 서버(http://info.cern.ch)를 만듬. 이 두개의 프로그램(컴퓨터)가 연결된 것이 최초의 웹.
-
서버/브라우저(클라이언트)
클라이언트가 서버에 요청을 하면, 서버가 응답하는 것이 기본! 대표적인 웹 클라이언트 프로그램으로 IE,chrome,safari,FireFox 등이 있고, 대표적인 웹 서버 프로그램으로 Apache, NginX 등이 있다.
그렇다면 URI 를 웹 브라우져 주소창에 쳤을 때, 무슨 과정을 거쳐 웹 페이지가 등장할까?
- URI(Uniform Resource Identifier)
-> 문법 : scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
웹 페이지를 포함한 인터넷 상에 있는 모든 자원의 위치를 나타내는 유일한 주소.
1. 웹 브라우저 에서 해당 페이지 파일이 저장되어 있는 서버주소/파일경로 를 주소창에 입력하면, 해당 서버 컴퓨터의 해당경로에 있는 파일을 요청하는 것!
-
예시 : http://173.194.126.240[:포트번호]/index.html
-> 173.194.126.240 라는 IP 주소를 가진 서버 컴퓨터의 해당 포트번호 서버에 있는 index.html 파일을 요청합니다.
-
http??(hyper text transfer protocol)
인터넷 상에서 정보를 주고받기위한 통신 규약. html 로 대표되는 문서 뿐 아니라 이미지, 동영상, 오디오 등 모든 종류의 데이터를 전송할 수 있다. http 의 특징으로 하나의 요청이 끝나면 서버와의 연결을 끊어버린다는 점이 있다. 그래서 상태의 유지가 필요한 경우(로그인 상태 유지 등) cookie 를 활용해 브라우져에 상태를 저장하는 식으로 문제를 해결한다.
http 통신은 header 와 body 로 이루어져 있으며 header 에는 요청의 method 종류(get,post 등), 요청 uri, http 버젼 등 메타정보가, body 에는 실제 데이터가 들어가 있다.
https 는 보안이 강화된 형태의 http 라고 보면 된다.
- ip(internet protocol) 주소란?
인터넷 상의 컴퓨터가 서로 통신을 하기위해 만든 주소. IPv4 는 0.0.0.0 ~ 255.255.255.255 까지 총 42 억 가지의 서로다른 주소가 가능하다. 허나 웹, 스마트폰, iot 등 정보통신 기술의 발달로 컴퓨터의 숫자가 기하 급수적으로 증가하며 주소가 부족하게 되었다.
이 문제를 해결하기 위해 나온 것이 IPv6 이다. 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A 와 같이 8 개의 4 자리 16 진수로 이루어져 있다. 총 34 * 10^38 가지의 서로다른 주소가 가능하므로 당분간은 주소부족 문제를 걱정하지 않아도 된다.
이 문제를 해결하기 위해 나온 또 다른 대책이 router, 공유기이다. 공유기는 하나의 ip 주소(ex. 59.6.66.238)를 받아서 그걸 공유기 자신의 주소로 하고, 지역 네트워크(LAN)에 연결된 기기들이 그 주소를 통해 광역 네트워크(WAN)에 연결되도록 중계자 역할을 한다. 이때, 지역 네트워크에 연결된 기기들은 각각의 지역 네트워크 주소를 가지게 된다(ex. 192.168.0.3).
즉, 일반적인 공유기 환경의 컴퓨터에서 WAN 에 존재하는 특정 IP 에 페이지를 요청하면 우선 공유기가 해당 요청이 LAN 상에서 어떤 기기인지 주소를 기억 한 뒤(ex. 192.168.0.3 에서 173.194.126.240 로 요청했구나!), Network Address Transition(NAT)라는 기능을 통해 공유기 자신의 WAN 상의 주소가 요청한것으로 바꾸어 (ex. 59.6.66.238 이 173.194.126.240 로 요청합니다!) WAN 에서 해당 주소를 찾아간다. 그리고 공유기 자신의 주소로 응답을 받아온 뒤, 아까 기억했던 LAN 상의 해당 기기의 주소를 찾아 응답을 돌려준다(ex. 192.168.0.3 야 응답 여기있어!).
- 포트(port)란?
하나의 컴퓨터에 여러 종류의 서버를 설치해 운영 할 수 있는데, 이때 같은 IP 주소라도 다른 서버에 접근하는 경우가 생긴다. 이것을 구분하기위한 논리적 단위를 port 라고 한다. 일반적인 웹(http) 서버는 80 번 포트를 사용함으로 http://…형식의 주소는 뒤에 :80 을 생략해도 80 번 포트에 요청하게 된다.
- domain name server(DNS)
실제 웹 서비스는 IP 주소를 직접 사용하지 않고 domain name(google.com 등)을 사용하는데, 이때 특정 domain name 이 어떤 ip 와 연결되는지를 기억하고 있는 서버가 DNS 이다.
2. 요청을 받은 서버컴퓨터에서는 어떤 일이 일어날까??
- 특정 파일을 요청받으면 서버 컴퓨터는 해당 파일을 보내기 전에 서버에서 먼저 처리하는 경우가 있는데, 대표적으로 php, JSP 같은 서버사이드 스크립트 파일들이다.
예를 들어 php 파일을 요청받으면 먼저 서버 컴퓨터에서 php 인터프리터가 해당 파일을 처리한다. 그렇게 처리된 html 파일을 클라이언트로 응답하는 것이다.
3. 응답을 받은 클라이언트 컴퓨터에서는 어떤 일이 일어날까?
-
클라이언트 컴퓨터에서도 응답받은 파일을 처리하는 과정이 있다. html,css,javascript 같은 클라이언트 사이드 스크립트 파일들이 그 예이다. 이렇게 서버와 클라이언트가 처리를 나누어 함으로써 서버의 부하를 줄일수 있게 된다.
-
최종적으로 처리된 파일이 브라우져 창을 통해 보이게 된다.
내용은 계속 추가하겠습니다.