-
[7일차] 클라이언트-서버 아키텍처교육/코드스테이츠 2022. 12. 6. 17:29
출처: https://velog.io/@seul06/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%99%80-%EC%84%9C%EB%B2%84 클라이언트 - 서버 아키텍처
서버(server) : 서비스를 제공하는 컴퓨터
클라이언트(client) : 서비스를 사용하는 컴퓨터
- 2-Tier 아키텍처
- 클라이언트(Apps 등)에서 정보를 보여 주려면 서버로부터 받아온다.
- 서버(Server)는 말 그대로 제공(Serve)하는 주체이다.
- 즉, 서버에 리소스가 존재하고, 클라이언트는 서버로부터 리소스를 받아서 보여준다.
- 3-Tier 아키텍처
- 일반적으로 리소스를 저장하는 공간을 "데이터 베이스"라 하며, 2-Tier 아키텍처에서 데이터 베이스를 추가해 서버는 데이터 베이스에서 가져온 리소스를 클라이언트에 전달한다.
프로토콜
- 컴퓨터 간의 데이터 전송을 위한 통신 규약이다.
- 데이터를 전송하는 방법과 데이터를 받아들이는 방법, 통신 중에 발생할 수 있는 에러 처리 방법 등이 정의되어 있다.
- 대표적인 인터넷 프로토콜로는 HTTP, FTP, TCP/IP 등이 있다.
프로토콜 HTTP
- HTTP는 인터넷에서 데이터를 주고받을 수 있는 프로토콜 중 하나로, 웹 브라우저와 웹 서버 사이에서 데이터를 전송하고 웹 페이지를 표시하기 위해 사용된다.
- 웹브라우저 주소창에 'http://~'라 입력하는 건, HTTP 프로토콜을 통해 HTML로 제작된 웹페이지에 연결하겠다는 의미다. 여기서 'http' 대신 다른 프로토콜(예, ftp)을 입력하면 다른 방식으로 해당 사이트에 접속하게 된다.
- HTTP는 클라이언트와 서버 간에 요청(request)과 응답(response)을 주고 받는 방식으로 동작한다.
API
- 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 뜻한다.
- 간단하게는 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 통신할 수 있게 한다.
- 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있다.
- 휴대폰의 날씨 앱은 API를 통해 이 시스템과 "대화"하고 휴대폰에 매일 최신 날씨 정보를 표시한다.
URL과 URI
- URL
- Uniform Resource Locator의 줄임말로, 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다 URL은 scheme, hosts, url-path로 구분할 수 있습니다. 가장 먼저 작성하는 scheme은 통신 방식(프로토콜)을 결정한다
- 일반적인 웹 브라우저에서는 http(s)를 사용한다.
- hosts는 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타낸다.
- url-path는 웹 서버에서 지정한 루트 디렉토리부터 시작하여 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다
- 서버가 제공되는 환경에 존재하는 파일의 위치를 나타내며 흔히 웹 주소라고도 한다.
- 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약이다. URI의 서브셋이다.
- URI
- 일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, bookmark를 포함한다.
- query는 웹 서버에 보내는 추가적인 질문이다
- 아래 그림의 http://www.google.com:80/search?q=JavaScript 를 입력하면, 구글에서 JavaScript를 검색한 결과가 나타난다
- 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다.
- 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스다.
- 예시)
- “Charles” 는 내 이름이며 식별자(Identifier)다. 이는 URI와 비슷하지만 내 위치나 연락처에 대한 정보가 없으므로 URL은 될 수 없다.
- “경기도 성남시 분당구 정자동 불정로 6”는 주소다. 주소는 특정 위치를 가르킨다. URL 및 URI와 비슷하며 간접적으로 내가 있는 장소로 식별한다.
출처: https://urclass.codestates.com/content/72f50716-c639-4ce7-831b-4ab3daa6438b?playlist=936 부분 명칭 설명 file://, http://, https:// scheme 통신 프로토콜 127.0.0.1,
www.google.comhosts 웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버, 도메인 또는 IP :80, :443, :3000 port 웹 서버에 접속하기 위한 통로 /search,
/Users/username/Desktopurl-path 웹 서버의 루트 디렉토리로부터 웹 페이지, 이미지, 동영상 등의 파일이 위치까지의 경로 q=JavaScript query 웹 서버에 전달하는 추가 질문 IP
- IP는 Internet Protocol의 줄임말로, 인터넷상에서 사용하는 주소체계를 의미한다
- 인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분된다. 네 덩이의 숫자로 구분된 IP 주소체계 - IPv4
- 터미널에서 nslookup을 이용해 IP 주소를 확인할 수 있다
- IPv4는 각 덩어리마다 0부터 255까지 나타낼 수 있습니다.
- 이 시스템을 따르면, 2^(32)인 약 43억 개의 IP 주소를 표현할 수 있다.
- localhost, 127.0.0.1 : 현재 사용 중인 로컬 PC를 지칭한다.
- 0.0.0.0, 255.255.255.255 : broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소이다.
- 서버에서 접근 가능 IP 주소를 broadcast address 로 지정하면, 모든 기기에서 서버에 접근할 수 있다.
- IPv4로 할당할 수 있는 PC가 한계를 넘어서면서 IPv6(IP version 6)가 생겼다.
- IPv6는 표기법을 달리 책정하여 2^(128)개의 IP 주소를 표현한다
포트(Port)
우리가 특정 서버에 접속하려면 URL이나 IP 주소를 입력한다. 인터넷상에서 URL 또는 IP를 토대로 해당 서버가 있는 컴퓨터로 찾아간다. 그런데 대부분의 컴퓨터에서는 여러 개의 프로그램이 동시에 실행되고 있어서, 이 여러개의 프로그램 중 어느 프로그램이 내가 접속하려는 프로그램인지 컴퓨터에게 알려 주어야 한다. 여기서 포트 번호는 어떤 프로그램에 접속 할 것인지 컴퓨터에게 알려준다.
- 컴퓨터 내부나 외부에서 특정 프로세스를 식별하기 위한 번호이다.
- 이 숫자는 IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)을 의미합니다.
- 이미 사용 중인 포트는 중복해서 사용할 수 없다.
- 포트 번호는 0~ 65,535 까지 사용할 수 있습니다. 그 중에서 0 ~ 1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있습니다. 그중에서 반드시 알아야 할 잘 알려진 포트 번호는 다음과 같다.
- 22 : SSH – Secure Shell(ssh, sfp) 같은 프로토콜 및 포트 포워딩
- 80 : HTTP – hypertext transfer protocol – 웹 페이지 전송 프로토콜
- 443: HTTPS - hypertext transfer protocol over secure sockets
Domain name
- 웹 브라우저를 통해 특정 사이트에 진입을 할 때, IP 주소를 대신하여 사용하는 주소이다.
- 만약 IP 주소가 지번 또는 도로명 주소라면, 도메인 이름은 해당 주소에 위치한 상호로 볼 수 있다.
DNS(Domain Name System)
- 웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용하며 DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환한다.
- 네트워크 상에 존재하는 모든 PC는 IP 주소가 있으나 모든 IP 주소가 도메인 이름을 가지는 것은 아니다. 로컬 PC를 나타내는 127.0.0.1 은 localhost 로 사용할 수 있지만, 그 외의 모든 도메인 이름은 일정 기간 동안 대여하여 사용한다.
- 브라우저의 검색창에 도메인 이름을 입력하여 해당 사이트로 이동하기 위해서는, 해당 도메인 이름과 매칭된 IP 주소를 확인하는 작업이 반드시 필요하다.
도메인의 구조
출처: https://urclass.codestates.com/content/bd1b02bd-84ff-40de-9725-c758b0556be9?playlist=936 NAT이란?
NAT(네트워크 주소 변환)는 로컬 네트워크의 장치가 단일 공용 IP 주소를 공유할 수 있도록 하는 기술이다. NAT는 로컬 네트워크에 있는 장치의 사설 IP 주소를 라우터의 공용 IP 주소에 매핑하여 작동다.
public IP와 Private IP의 차이점을 설명하세요.
- public IP
- public IP 주소는 인터넷을 통해 직접 액세스할 수 있는 IP 주소이며 인터넷 서비스 공급자(ISP)가 네트워크 라우터에 할당한다.
- Private IP
- Private IP 주소는 네트워크 라우터가 장치에 할당하는 주소이며 동일한 네트워크 내의 각 장치에는 고유한 사설 IP 주소 (사설 네트워크 주소라고도 함)가 할당된다. 이는 동일한 내부 네트워크의 장치가 서로 통신하는 방식이다.
- public IP 주소와 Private IP 주소의 주요 차이점은 도달 거리와 연결 대상이다.
- public IP 주소는 검색 중인 모든 정보가 사용자를 찾을 수 있도록 더 넓은 인터넷에서 사용자를 식별하며 Private IP 주소는 사설 네트워크 내에서 동일한 네트워크 내의 다른 장치에 안전하게 연결하는 데 사용된다.
차이점 요약
- public IP
- 인터넷을 통해 개인 네트워크 외부에서 통신하는 데 사용
- 다른 장치에서 절대 재사용하지 않는 고유한 숫자 코드
- 인터넷을 이용해 찾을 수 있다
- 인터넷 서비스 제공업체에서 할당 및 제어
- 유료 서비스
- Private IP
- 개인 네트워크 내에서 집이나 사무실의 다른 장치와 통신하는 데 사용된다.
- 다른 개인 네트워크의 다른 장치에서 재사용할 수 있는 고유하지 않은 숫자 코드
- 장치의 내부 설정을 통해 찾음
- 개인 네트워크 내의 특정 장치에 할당됨
- 무료
출처 : https://www.avast.com/c-ip-address-public-vs-private#topic-2 검색창에 http://google.com 을 검색하면, DNS에서 어떤 일이 일어나나요? 이에 대한 설명을 작성하세요.
- 사용자가 웹 브라우저에 웹 사이트 주소를 입력하면 브라우저는 도메인 이름을 IP 주소로 확인하기 위해 DNS 쿼리를 DNS 서버로 보낸다.
- IP 주소를 얻으면 브라우저는 IP 주소에서 서버와 TCP 연결을 설정하고 HTTP 요청을 보낸다.
- 서버는 요청된 웹 페이지가 포함된 HTTP 응답으로 응답하고 브라우저는 웹 페이지를 렌더링한다.
DNS 조회 정보는 쿼리 컴퓨터 내부에서 로컬로 또는 DNS 인프라에서 원격으로 캐시되는 경우가 많다. DNS 조회에는 일반적으로 8단계가 있지만, DNS 정보가 캐시되어 있으면 DNS 조회 프로세스에서 몇 단계를 건너 뛸 수 있으므로, 더 빨라집니다. 아래 예시는 캐시되지 않은 8단계를 모두 보여줍니다.
=====================================================
참고 자료
https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/
'교육 > 코드스테이츠' 카테고리의 다른 글
[8일차_02] 웹서버 만들기 및 HTTP 상태코드 (0) 2022.12.08 [8일차_01] HTTP Messages의 기초 (0) 2022.12.08 [6일차] 리눅스 실습 (0) 2022.12.05 [5일차] 프로세스 관리 (0) 2022.12.02 [4일차] 관리자로서의 리눅스 (0) 2022.12.01 - 2-Tier 아키텍처