[🌱목차🌱]
- 서버란?
- 프로토콜이란?
- HTTP
- 서버구축
- 클라우드 컴퓨팅
- 웹서버란? [vs WAS]
- IP란?
- 도메인이란?
01. 서버란?
먼저 서버의 사전적인 의미는 네트워크에서 다른 컴퓨터나 소프트웨어와 같은 클라이언트에게 서비스를 제공하는 '컴퓨터'입니다. 즉
서버 -> 클라이언트에게 네트워크를 통해 서비스를 제공하는 컴퓨터
라고 할 수 있습니다. 예를 들어 우리가 웹 브라우저를 통해 웹사이트에 엑세스 하고 있다면, 이 때 웹브라우저가 클라이언트 / 웹사이트의 콘텐츠가 있는 컴퓨터가 바로 서버입니다. 또 하나 예를 들자면 우리가 google 이라는 웹사이트에 들어간다 가정해보겠습니다.
[웹 브라우저 : 웹 서비스 사용자가 웹 브라우저라는 전용 클라이언트 어플리케이션으로 웹 서버가 제공하는 서비스를 이용 ,웹 서버로 부터 웹 페이지를 받아 사용자에게 보여주는 역할 ]
- 웹 브라우저가 웹 서버에게 'www.google.co.kr'사이트의 데이터를 달라고 요청 -> 클라이언트가 서버에세 서비스 요청
- 웹 서버는 해당 사이트의 데이터를 찾음 -> 서버는 요청에 응답해 처리를 수행 (쿼리를 통해 데이터데이스에 접근)
- 웹 서버는 찾은 데이터를 웹 브라우저에게 반환 -> 서버는 처리결과를 클라이언트에게 반환
- 웹 브라우저는 데이터를 받아 구글사이트를 화면에 표시 -> 클라이언트는 처리 결과를 받음
서버 -> 데이터를 저장하고 관리
또한 서버는 프론트엔드에서 넘어온 데이터를 저장하고 관리하는 역할을 합니다. 이 데이터는 웹사이트의 내용이나, 애플리케이션의 정보, 사용자 파일 등이 포함 될 수 있습니다. 이 데이터들을 저장하는 장소를 '데이터베이스'라고 부릅니다. 웹 서버는 query를 통해 데이터베이스에 접근하게 됩니다.
정리해보자면 프론트엔드에서는 클라이언트에게 보여질 웹브라우저 화면에서 웹서버로 요청을 보내고 백엔드에서는 웹서버가 query를 통해 데이터베이스에서 데이터를 찾고 찾은 데이터를 웹브라우저에 반환하면서 클라이언트에게 보여지게 되는 것입니당
백엔드는 클라이언트의 요청을 컴퓨터가 수행할 수 있도록 작업해야 합니다. 서버는 클라이언트의 요청을 늘 수행할 수 있어야 하기 때문에 365일 24시간 1분 1초도 다운되지 않고 전원이 켜져 있어야합니다. 새벽에 회원가입하려고 들어갔는데 서버가 다운되서 가입이안되면 클라이언트가 화 많이나겠죠?^^ 앗 여기서 서버가 다운되었다라 함은 장애, 에러 등의 특수한 상황으로 인해 서버가 클라이언트의 요청을 처리할 수 없는 상황을 말합니다.
서버의 운영체제는 보통 리눅스(Linux)나 서버용 윈도우 OS를 사용합니다. 또 CLI(Command Line Interface)환경에서 운영하는 것이 대부분입니다. 왜냐면 클라이언트 요청에 대해서만 응답하면 되기 때문에 GUI환경이 딱히 필요없을 뿐더러 컴퓨터가 GUI를 운영하는데 리소스가 소모되기 때문입니다. 서버 OS에는 CentOS(센토스)/ Linux(리눅스)/Ubuntu(우분투)/Unix(유닉스)/Window(윈도우)등이 있다.
02.프로토콜(Protocol)이란?
프로토콜의 사전적 의미는 " 여러 컴퓨터나 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신규약 " 입니다. 이 프로토콜은 컴퓨터나 장치 간의 상호 작용을 가능하게 하며, 데이터 전송의 형식, 데이터의 의미 해석, 에러 처리, 보안 등의 다양한 측면을 다루는 규칙들을 제공합니다. 사람과 사람이 대화할 때 서로 이해할 수 있는 공용언어를 사용하듯이 컴퓨터도 컴퓨터끼리 서로 이해할 수 있는 언어를 사용해야 합니다. 즉,
프로토콜 -> 컴퓨터 네트워크에서 컴퓨터가 서로 정보를 주고 받을 수 있도록 약속한 규칙
흔히 알려진 프로토콜은 HTTP나 인터넷 통신에서 사용되는 TCP/IP 프로토콜이 있습니다.
그 외에 HTTPS, FTP,SSH,SMTP등이 있습니다.
02-2 HTTP
HTTP는 Hypertext transfer protocol의 약자로 인터넷 상에서 데이터를 주고 받기 위한 프로토콜 즉, 약속입니다. 클라이언트는 서버에게 리소스를 request 하고 서버는 클라이언트에게 request을 처리해서 응답합니다.
HTTP는 주로 웹 브라우저와 웹 서버 사이의 통신에 사용되며, 웹 브라우저가 사용자의 요청에 따라 웹 페이지를 가져와서 표시할 수 있도록 합니다. HTTP는 ASCII 텍스트를 기반으로 하며, 요청과 응답 메시지는 다양한 정보를 포함할 수 있습니다.
HTTP 요청은 URL(Uniform Resource Locator)을 사용하여 요청할 리소스를 지정합니다. URL은 프로토콜, 도메인, 포트 번호, 경로 등의 정보를 포함합니다.
03. 서버구축
서버 구축 방법에는 크게 두가지가 있습니다.
- 본인의 컴퓨터를 직접 서버로 구축 -> 컴퓨터 24시간 켜야됨 ;; 🤦🏻♀️🤦🏻♀️🤦
- 일정 요금을 내고 외부 서버를 임대해 사용
- 서버 호스팅 -> 서버 한 대 (물리적으로 존재하는 컴퓨터 한 대)를 통째로 임대
- 웹 호스팅 -> 서버 한대의 일정 저장공간만을 임대하여 다른 사용자들과 해당 서버를 공유
서버 호스팅 | 웹 호스팅 | 클라우드 |
자체적인 관리 필요 | 싸다 싸 | 가상 서버를 단독으로 사용 -> 빠른시간 내에 서버 생성 바로 사용가능 |
컴퓨터의 작동 환경을 마음껏 유동적으로 설정 가능 | 서버 자체를 웹 호스팅 사에서 운영, 쉽게 이용가능 -> 서버의 권리권한이 없다. | 이용한 만큼 비용청구 |
비싸다 비싸 | 트래픽, 용량 등 사용상 제약 발생 | 하나의 프로그램에 문제가 발생하면, 연결된 프로그램에 영향을 받음 |
비유하자면은 서버호스팅을 단독주택, 웹 호스팅을 아파트안의 한 가구라고 생각 할 수 있습니다.
03-1. 클라우드 컴퓨팅 (Cloud Computing)
먼저 클라우드란, 언제 어디서든 인터넷을 통해 접속 가능한 환경을 말합니다. Microsoft Office 365, Dropbox, Google Apps 등이 있습니다.
클라우드 컴퓨팅이란 서버, 네트워크 등의 인프라 전체를 임대해주는 서비스를 말합니다. 클라우드에 구축된 인프라를 활용합니다. '가상화 기술'을 사용해 마음대로 서버를 구축하여 운영할 수 있으며 AWS, Microsoft Azure, GCP, NCP등이 있습니다.
여기서 가상화란 클라우드에서 가장 중요한 기술로서 실체가 없는것을 의미하는것은 아닙니다. 가상화는 컴퓨터가 어떤 작업을 하기 위해 필요한 물리적인 장치를 소프트웨어로 대체 합니다. 메모리나 하드디스크 같은 하드웨어나 운영체제 등을 소프트웨어로 대체하는것이죠
클라우드 서버란 실제 물리적 컴퓨터 한대를 서버로 운영하는 것이 아닌 VM(Virtual Machine) 즉, 가상머신으로 서버를 운영합니다. 소프트웨어 즉, 프로그램으로 컴퓨터 (서버)를 하나 생성해 이용하는 방법입니다. 웹 호스팅에 비해 클라우드는 내가 서버를 관리할 수 있는 root 권한을 가지게 됩니다. (root 권한 : 모든 권한을 가진 계정) 클라우드 서버는 짧은 시간 안에 서버를 빨리 뚝딱 생성이 가능하고 물리적인 컴퓨터가 아니기 때문에 무한대의 저장공간을 이용할 수 있습니다.(용량이 크면 이용요금이 많이 나오겠지만요,.,, ) 이론상으로는 아무리 접속량이 많아도 다운되지 않는 서버를 만들 수 있다는 것이 장점입니다.
클라우드 유형에는 1) 퍼블릭 클라우드 ,2)프라이빗 클라우드 ,3) 하이브리드 클라우드 가 있습니다.
- 퍼블릭 클라우드
- 클라우스 서버 || 호스팅 공급자가 소유하고 관리
- 사용한 만큼만 서비스 요금 지불
- ex)aws, ncp
- 프라이빗 클라우드
- 기업 내부에서 센터만듬
- 조직이 서비스 운영, 조직 외부 사용자 접근 불가능
- 하이브리드 클라우드
- 퍼블릭/ 프라이빗 클라우드를 결합, 애플리케이션이 가장 적절한 위치에서 실행되도록 함
04. 웹 서버란 ? (Web Server) [vs WAS]
웹 서버는 클라이언트의 HTTP 요청을 받아 다양한 처리를 합니다. 정적파일 (static file)을 전달하는 서버를 웹 서버라고 합니다. WAS를 거치지 않고 바로 리소스를 제공합니다.
(정적 파일이란 이미지, css, javascript 파일과 같이 변경되지 않는 파일을 말합니다. 클라이언트가 요청할 때 변하는 내용없이 응답하는 파일 )
여기에서 WAS (Web Application Server)란 , DB조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버입니다. 정적 파일이 아닌 동적 파일을 전달하기 위해 사용되는 것으로 클라이언트의 request를 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(response)합니다.
웹 서버에는 Apache(아파치)/ Nginx(엔진 엑스) / IIS(윈도우 서버) 등이 있습니다.
Apache 웹 서버는 http 표준을 준수하도록 구축된 오픈 소스 형식의 웹 서버 입니다. 오래 사용되어 온 만큼 거의 모든 OS 에서 실행이 가능하고 다양한 모듈을 가지고 있습니다.
05. IP란?
IP란 Inernet Protocol의 약자로서 인터넷상에서 데이터를 주고받기 위한 통신 규약 (약속) 입니다. 스마트폰, 컴퓨터마다 운영체제, 프로그램마다 구현된 언어가 다르기에 네트워크에서 통신할 수 있도록 프로토콜이 필요합니다.
IP주소는 IP통신에 필요한 고유주소 입니다. 데이터를 주고 받기 위해 사용되는 주소로서 CMD창에서 내 IP를 확인할 수 있습니다.크게 IPv4,와 IPv6로 나뉩니다.
IPv4는 32bit(4byte) 를 8 bit(1byte)씩 끊어서 0~255 사이의 10진수 숫자로 나타냅니다. 각 숫자는 점(.)기호로 구분합니다.
IPv6는 IPv4의 고갈로 채택된 방안으로서 128bit를 16bit씩 끊어서 4자리의 16진수 숫자 8개로 표기 합니다. 각 숫자는 콜론(:)기호로 구분합니다.
공인 IP (Public IP) | 사설 IP (Private IP) |
외부에 공개되어 있는 IP | 로컬 IP, 가상 IP라고 불림. 특정 네트워크 안에서만 사용되는 외부에서 접근할 수 없는 IP |
서버 구축을 사용하고 우리가 서버에서 사용하는 것도 공용 IP | 큰 단위로 공인 IP를 할당, 그 안에 있는 PC나 가정 / 회사 내에서만 통신하는 IP할당 |
공개되어 있기 때문에 누구나 검색 , 접근 가능 | IPv4주소 부족 문제해결위해 등장한 방안 중 하나 |
전세계에서 어떤 주소도 중복되지 않음 | 사내 LAN이나 가정 LAN에서 사용되는 IP |
유동 IP | 고정 IP |
변하는 IP -> IP주소 임시발급 | 변하지 않고 고정적으로 보여된 IP |
기기에 고정적 IP 부여 X IP 갱신주기가 되었을 때/ 껐다 켰을 때 남아있는 IP 골라 기기에 할당 |
사용자가 직접 IP주소를 입력해 주소 설정하는 방식 |
IP를 한번 부여받으면 반납 전까지 해당 IP를 할당 |
06. 도메인이란? (Domain)
도메인은 웹 브라우저를 통해 특정 사이트를 진입할 때 , IP 주소를 대신해 사용하는 주소이다. 숫자로 이루어진 IP주소는 거의 외우는 사람이 없을거다.. 때문에 IP주소에 이름을 부여하는데 이를 도메인이라 한다.
예를 들어 네이버라는 사이트는
- Domain : www.naver.com
- IP : 223.130.195.200
으로 도메인이 지정되어 있다. 접속은 도메인주소로도 가능하지만 IP 주소로도 접속이 가능하다.
URL은 웹주소로서 인터넷에서 리소스의 위치를 나타내는 주소입니다. 웹 브라우저나 다른 웹 클라이언트가 특정 리소스 (웹 페이지, 이미지, 동영상 등)를 찾을 때 사용되며, 해당 리소스의 위치나 접근 방법을 지정합니다. 프로토콜, 도메인, 포트번호, 경로등의 요소로 구성되어 있습니다. URL은 웹 브라우저의 주소 창에 입력하여 웹 페이지에 접근하는데 사용되며, 또한 웹 사이트 간의 하이퍼링크도 URL을 사용하여 설정됩니다. 예를들어 , "https://www.example.com/about"는 https 프로토콜을 사용하여 "www.example.com"도메인의 "about"경로에 위치한 리소스에 접근하는 URL을 나타냅니다.
DNS는 Domain Name System의 약자로 숫자로 이루어진 IP 주소를 외우기는 어렵기에 사람이 외우기 편한 언어로 주소를 사용하는 것을 말한다. IP주소와 도메인 주소가 같다고 지정해서 사용자들이 도메인 주소를 검색하면, 해당되는 IP주소로 바꿔서 연결되도록한다.
단계를 나누어서 말하자면
브라우저에 URL 입력 -> DNS서버가 도메인 명에 연결된 IP 주소를 브라우저에게 전달 -> 브라우저는 해당 IP주소로 서버에게 요청
-> 서버는 클라이언트에게 응답
으로 나뉠 수 있습니다.
+회고
안녕하세요
벌써 4주차,,, 구먼 백엔드시작을 알리는 서버 공부를 시작했더랬죠. 러닝메이트에서 한 메모리나..비트개념이 나와서 반가웠습니다. TCP통신도 기능 구현에만 급급했었는데 프로토콜이 뭔지 차근차근 공부하니까 뭔가 뼈대가 잡히는 느낌 푸하학 ,,
근데 이제 이 뼈가 버텨줘야할텐데요 ^^
다른 블로깅한 글들도 비공개로만 돌려놓고 아직 공개를 못했다,, 너무 배운걸 다 쓰려해서 그런가 공개를 못하겠네..(다 안써서)
끙차,,
일단 리더님 말씀대로 배운것부터 작성 완!!왕!
'CS > 네트워크' 카테고리의 다른 글
보안 프로토콜 : VPN, IPSec, SSL/TLS (0) | 2024.06.21 |
---|---|
HTTP vs HTTPS 외 프로토콜 종류 (0) | 2024.01.19 |
[모든 개발자를 위한 HTTP 웹 기본지식] 04- Http 메서드 (0) | 2023.10.07 |
[모든 개발자를 위한 HTTP 웹 기본지식] 03- Http 기본 (0) | 2023.10.07 |
[모든 개발자를 위한 HTTP 웹 기본지식] 01- 인터넷 네트워크 (0) | 2023.10.03 |