HTTP란?
Hyper Text Transfer Protocol = 인터넷에서 데이터를 주고받을 수 있는 프로토콜 (프로토콜 = 규칙/ 컴퓨터끼리 정보를 주고 받기 위한 암호-대효적인 프로토콜: TCP, IP, HTTP, FTP 등)
브라우저란?
웹페이지, 이미지, 비디오 등의 콘텐츠를 수신, 전송 및 표현하는 소프트웨어다. 크롬, 사파리, 엣지, 파이어폭스 등이 바로 브라우저다.
인터넷이란?
'컴퓨터들이 연결된 통신망'이다. 하나 이상의 컴퓨터가 통신하기 위해서는 상호간의 '연결'이 필요하다. 이렇게 전 세계 컴퓨터들을 하나로 연결하는 거대한 네트워크가 곧 인터넷이다.
여러 컴퓨터가 각각 클라이언트와 서버로 서로 연결되어 구성된 망을 Computer Network라고 한다. 인터넷은 이러한 컴퓨터 네트워크가 전 세계적인 규모로 수없이 많이 모여서 이루어진 일종의 컴퓨터 네트워크 시스템인 것이다. 즉, 인터넷은 수많은 클라이언트 컴퓨터와 서버 컴퓨터로 구성된 네트워크의 집합체다.
패킷
패킷은 컴퓨터 네트워크에서 데이터를 주고 받을 때 전송되는 작은 단위다. 데이터를 패킷 단위로 쪼개어 통신하여 효율을 높인다. 우체국에서 화물을 적당한 덩어리로 나눠 행선지를 표시하는 꼬리표를 붙이는데, 이 방식을 데이터 통신에 접목한 것이라고 할 수 있이다.
라우터(공유기)
Route = 경로. router는 네트워크 상에서 클라이언트와 서버 간의 여러 '경로'들 가운데 가장 빠른 길을 찾아내는 역할을 하는 장비다.
패킷의 목적지 주소를 확인하고 목적지까지 효율적으로 도달할 수 있는 경로를 결정하고 그 경로에 따라 전송을 하는 것을 '라우팅'이라고 한다. 또한 하나의 공인 IP를 사용하여 여러개의 기기가 인터넷을 사용하기 위해 중간다리 역할을 해주는 네트워크 기기이기도 하다.
IP주소란
거대한 인터넷을 구성하는 각 컴퓨터의 특정한 이름 또는 주소다. IP주소는 173.194.121.32처럼 세 개의 점으로 구분되는 숫자로 구성되는데, 매번 기억하기 힘들기 때문에 'google.com'과 같은 도메인 주소를 사용한다 . 그러나 패킷이나 데이터 라우팅은 IP주소를 이용하지 도메인네임을 이용하지 않는다. (우편이 우리집 주소를 보고 배송되지, 우리 이름을 보고 배송되는게 아닌 것과 유사하다.)
Web Server & WAS
웹서버들은 서버에서 작동하며 http 요청이 오기를 기다리고 있다가, http 요청이 오면 그에 따른 적절한 응답을 한다.
1) Web server : 정적 Static 페이지 -html, css로 작성된 파일들을 제공, WAS를 거치지 않고 자원을 제공, 동적인 콘텐츠 제공을 위한 요청 전달(클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 다시 전달한다.) ex. Apache Server, Nginx,등
2) WAS(Wev Application Server) : 정적 + 동적 Dynamic 페이지를 제공하기 위해 만들어진 어플리케이션 서버,
Web server + '웹 컨테이터(Web Container)
WAS가 정적, 동적 콘텐츠 모두 다룰 수 있으나 보통 웹서버와 WAS를 둘다 사용해 기능을 분리하는 경우가 많다. 서버 부하를 방지하는 것이다. 또한 보안을 강화하는 역할을 하기도 한다. 또 기능을 분리했기 때문에 무중단 운영을 방해하는 장애들에도 쉽게 대응할 수 있게 된다.
브라우저 주소창에 URL 값을 입력시켰을 때 요청과 응답의 과정
브라우저를 열고 URL을 입력하는 순간부터 HTTP 요청이 시작된다. 브라우저는 사용자가 입력한 URL주소에 해당하는 목적지(웹서버)에 도착해서 데이터를 요청하고, 그 목적지(웹서버)에서 응답한 데이터를 받아서 화면에 보여주게 된다.
좀더 자세히 말해, 브라우저에 URL을 입력하면 URL에 적힌 값을 파싱하고 HTTP 요청 메시지를 만든다. 만들어진 요청 메시지를 웹 서버로 전송한다. 브라우저는 메시지를 네트워크에 직접 송출할 수 없다. 따라서, OS에 의뢰해서 메시지를 전달한다. OS에 송신을 의뢰하기 위해서는, IP 주소로 메시지를 받을 상대를 지정해야한다. 따라서 DNS(Domain Name Server)를 조회해야 한다.
이후, 브라우저가 요청한 메시지가 웹서버 측 LAN에 도착하면 방화벽이 검사를 하는데, 캐시서버를 통해 웹서버까지 가야하는 지 아닌지 조사한다. 액세스한 페이지의 데이터가 캐시서버에 있으면 웹서버에 의뢰하지 않고 바로 값을 읽을 수 있다. 페이지의 데이터 중 다시 이용할 수 있는 것은 캐시 서버에 저장된다.
웹서버에 도착하면 패킷에 담긴 메시지를 복원해서 WAS에 넘긴다. WAS은 요청 메시지에 따른 데이터를 응답 메시지에 넣어 클라이언트로 다시 보낸다. 웹 브라우저는 역으로 웹 서버로부터 HTTP를 따라 데이터를 전송받고, 렌더링 엔진을 사용해 이를 텍스트 및 이미지 등으로 변환한다. 브라우저는 최종 화면을 사용자에게 표시하는 역할을 한다.
참고자료
인터넷의 작동 원리는 무엇일까?
인터넷은 웹의 핵심 기술로, 각 컴퓨터가 통신 프로토콜을 사용해 정보를 주고 받는 컴퓨터 네트워크다. 이러한 인터넷은 구체적으로 어떠한 원리를 바탕으로 작동하는 것일까? 인터넷의 이해
oneroomtable.tistory.com
HTTP 요청 흐름의 이해 (번역)
Understand the Flow of a HTTP Request 를 번역한 글 입니다. 브라우저에서 엔터 키를 눌렀을 때, 무슨 일이 일어나는 지 궁금한 적이 있는가? 이 아티클은 개발자의 관점에서, 개발자가 알아야 할 'HTTP 요
feco.tistory.com
opentutorials.org/course/3781/25116
Web Application Server - 실전코딩
개요 Web Application Server(이하 WAS)는 웹 서버로부터 동적 페이지 요청을 받아 처리한 후 그 결과를 웹 서버로 반환한다. 주로 동적 페이지 생성을 하는 프로그램을 실행하고 데이터베이스 연동 작
opentutorials.org
gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
'💻 Deep Wide Programming > Server' 카테고리의 다른 글
[생활코딩 & 그랩의 기술블로그] 서버와 클라이언트 간단 기초 학습 메모(#웹서버, #Api 서버) (0) | 2020.12.08 |
---|---|
Backend 백엔드의 기본 원리(feat. 노마드코더 Nomad coders) (0) | 2020.08.17 |