본문 바로가기
개발일지/기타

웹서버만들기(1)

by Peter.JH 2023. 11. 17.
728x90
반응형

클라이언트-서버 모델 이해

 

클라이언트와 서버

 

 

클라이언트-서버 모델은 네트워크 환경에서 가장 기본적이고 널리 사용되는 컴퓨터 네트워크 아키텍처 중 하나입니다. 이 모델에서는 두 가지 주요 구성 요소인 '클라이언트'와 '서버'가 있습니다.

서버: 서버는 서비스를 제공하는 컴퓨터 시스템입니다. 서버는 네트워크 상에서 항상 실행되며 클라이언트의 요청에 응답합니다. 서버는 웹 페이지, 파일, 데이터베이스, 메일 서비스 등 다양한 종류의 서비스를 제공할 수 있습니다.


클라이언트: 클라이언트는 서비스를 요청하는 컴퓨터 시스템입니다. 클라이언트는 필요한 정보나 서비스를 위해 서버에 요청을 보내고, 서버로부터 응답을 받습니다.

 

클라이언트-서버 모델의 주요 작동 원리



1. 클라이언트는 서버에 서비스를 요청합니다. 이 요청은 네트워크를 통해 서버에 전달됩니다.
2. 서버는 클라이언트의 요청을 받아 처리하고, 결과를 클라이언트에게 보냅니다.
3. 클라이언트는 서버로부터 받은 응답을 처리합니다.

이러한 클라이언트-서버 모델은 인터넷의 대부분의 서비스에서 사용되며, 웹 브라우징, 이메일, 파일 공유 등 다양한 애플리케이션에 사용됩니다. 이 모델의 주요 장점 중 하나는 서버가 다수의 클라이언트를 동시에 처리할 수 있다는 것입니다. 따라서 이 모델을 통해 대규모 사용자 그룹에 대한 서비스 제공이 가능합니다.

 

네트워크

네트워크

 

네트워크란 컴퓨터, 스마트폰, 서버, 프린터 등 다양한 디바이스들이 데이터를 공유하고 통신할 수 있도록 연결된 시스템을 의미합니다. 이러한 네트워크는 기본적으로 데이터를 전송하는 통신 경로와 이 경로를 통해 연결되는 노드로 구성됩니다.

네트워크의 종류는 크게 세 가지로 분류할 수 있습니다:

LAN (Local Area Network): 

LAN은 한정된 지역, 예를 들어 사무실, 학교, 집 등에서 컴퓨터와 기타 디바이스들이 연결되어 있는 네트워크를 지칭합니다. LAN은 대체로 빠른 데이터 전송 속도를 가지며, 보통 이더넷이나 Wi-Fi 기술을 사용합니다.


WAN (Wide Area Network): 

WAN은 광대한 지역을 연결하는 네트워크로, 도시, 국가, 대륙 등을 연결할 수 있습니다. 인터넷은 가장 대표적인 WAN의 예시입니다. WAN은 보통 라우터를 사용하여 네트워크를 연결합니다.


PAN (Personal Area Network):

PAN은 개인이 사용하는 디바이스들을 연결하는 네트워크로, 일반적으로 한 사용자에 의해 사용되는 컴퓨터, 스마트폰, 태블릿 등이 해당됩니다. Bluetooth 기술은 PAN의 대표적인 예시입니다.


네트워크는 데이터를 빠르고 효율적으로 전달하는 데 필수적입니다. 이를 통해 우리는 웹사이트를 방문하거나, 이메일을 보내거나, 온라인 게임을 하거나, 파일을 공유하고, 스트리밍 서비스를 이용하는 등 다양한 활동을 수행할 수 있습니다. 이처럼 네트워크는 디지털 세계에서 필수적인 역할을 수행합니다.

 

네트워크 기능

  • 어플리케이션 목적에 맞는 통신 방법 제공
  • 신뢰할 수 있는 데이터 전송 방법 제공
  • 네트워크 간의 최적의 통신 경로 결정
  • 목적지로 데이터 전송
  • 노드 사이의 데이터 전송

 

통신 기능이 제대로 동작하기 위해서는 참여자들 사이에 약속된 통신 방법이 있어야 한다.

네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약이 바로 

네트워크 프로토콜(network protocol)이다.

 

프로토콜

 

프로토콜은 컴퓨터 네트워크에서 통신을 규정하는 규칙과 규약의 집합입니다. 이 규칙은 데이터의 형식, 전송 방식, 오류 처리 등을 포함하며, 네트워크 상에서 시스템 간의 상호작용을 원활하게 하기 위해 사용됩니다.

위에서 말한 다섯 가지 기능을 수행하기 위해서는 여러 개의 프로토콜이 필요합니다.(모듈화)

만약 하나의 프로토콜로 구현하게 된다면 유지보수와 새로운 기능 추가등이 어렵게 됩니다.

 

그렇다면 어떻게 모듈화를 할까요

네트워크 기능을 보면 계층별로 동작하는 것을 볼 수 있습니다.

  • 어플리케이션 목적에 맞는 통신 방법 제공 ( 어플리케이션 사이에서 필요 )
  • 신뢰할 수 있는 데이터 전송 방법 제공 (어플리케이션 사이에서 어떻게 안정적으로 데이터를 전송할지 )
  • 네트워크 간의 최적의 통신 경로 결정
  • 목적지로 데이터 전송 ( host사이에서 )
  • 노드 사이의 데이터 전송 ( 노드 사이에서 )

이렇게 해서 계층구조로 모델링하게 됩니다. 

 

 

네트워크 계층 (OSI7 Layer, TCP/IP Layer)

 

 

OSI7 Layer, TCP/IP Layer

 

네트워크 계층은 데이터 통신의 복잡성을 관리하고 이해하기 위해 개발된 모델로, 가장 잘 알려진 두 가지 모델은 OSI 7 계층 모델과 TCP/IP 모델입니다.

OSI 7 layer : 범용적인 네트워크 구조

 

각 레이어에 맞게 프로토콜이 세분화돼서 구현

각 레이어의 프로토콜은 하위 레이어의 프로토콜이 제공하는 기능을 사용하여 동작

 

application layer (Layer 7):

사용자와 가장 가까운 계층으로, 어플리케이션 목적에 맞는 통신 방법 제공

HTTP, DNS, STMP, FTP 등의 프로토콜이 이 계층에서 작동합니다.

 

presentation layer (Layer 6):

어플리케이션 간의 통신에서 메시지 포맷 관리

데이터의 인코딩(디코딩), 암호화(복호화), 압축(압축 풀기) 등을 처리합니다.

 

session layer (Layer 5):

어플리케이션 간의 통신에서 통신 세션을 설정, 관리, 종료하는 역할

RPC(remote procedure call)

 

transport layer (Layer 4):

어플리케이션 간의 통신 담당, 목적지 어플리케이션으로 데이터의 전송을 관리

TCP(안정적이고 신뢰할 수 있는 데이터 전송 보장)와 UDP(필수 기능만 제공) 프로토콜이 이 계층에서 작동합니다.

 

network layer (Layer 3):

호스트 간의 통신 담당(IP), 목적지 호스트로 데이터 전송

네트워크 간의 최적의 경로 결정

 

data link layer (Layer 2):

직접 연결된 노드 간의 통신 담당

MAC 주소 기반 통신(ARP, IP -MAC주소 변환) 데이터의 오류 검출 및 재전송 등을 담당합니다.

 

physical layer (Layer 1):

bits 단위의 data 전송

실제 데이터 비트가 전기적, 광학적 신호로 전송되는 과정을 처리합니다.

 

예시를 통해 알아보자

상황: 구글에서 댓글을 작성한다. 작성된 댓글이 구글 서버까지 어떻게 전송될까?

예시 그림입니다

HOST
application layer (Layer 7):
메세지를 보내기 위해 처리한 부가적인 정보들을 application layer 헤더에 담고  이전 정보와 합쳐서 다음 층으로 이동

presentation layer (Layer 6):
추가적인 정보들을 처리해 부가적인 정보들을 presentation layer 헤더 담고 이전 정보와 합쳐서 다음 층으로 이동

session layer (Layer 5):
위에서 준 정보에 추가적인 정보들을 처리해 부가적인 정보들을 session layer 헤더 담고  이전 정보와 합쳐서 다음 층으로 이동

transport layer (Layer 4):
실제로 어플리케이션 사이의 데이터 통신을 담당.
목적지 어플리케이션까지 가기위한 정보들을 transport layer 헤더 담아 다음 층으로 이동

network layer (Layer 3):
어플리케이션 들을 실행하고 있는 호스트들 사이의 통신을 담당.
복잡한 네트워크에서 어떻게 목적지 호스트로 데이터를 보낼것인지 목적이 IP 주소 확인 후 
현재 내 기준에서 어디로 데이터를 보내야 하는지 결정
이와 관련된 정보들을 network layer 헤더에 담아 이전 정보와 합쳐서 다음 층으로 이동

data link layer (Layer 2):
다음으로 넘겨줄 준비를 하고 관련된 정보들을 
data link layer 헤더와 트레일러에 담는다/ 트레일러 같은 경우 전송 후 에러없었는지 확인하는 용도
이전 정보와 합쳐서 다음 층으로 이동

physical layer (Layer 1):
비트 단위로 다음단계로 전송
라우터 1
physical layer (Layer 1):
비트 단위로 전송받은 데이터를 다시 layer 형태로 만들어 준 뒤 다음 층으로 이동

data link layer (Layer 2):
헤더와 트레일러 확인후 문제 없으면 헤더를 떼어낸 후 다음 층으로 이동

network layer (Layer 3):
전송받은 데이터가 목적지로 가기위해서 어디로 가야하는지 확인
network layer 헤더에 담겨있는 정보를 바탕으로로 어디로 가야하는지 확인
network layer 헤더에서 수정할 내용 수정 후 다음 층으로 이동

data link layer (Layer 2):
이제 두 노드사이의 통신을 담당
필요한 정보들을 헤더와 트레일러에 담아 합친 후 다음 층으로 이동


physical layer (Layer 1):
비트 단위로 다음단계로 전송

라우터 2
반복
HOST
physical layer (Layer 1):
비트 단위로 전송받은 데이터를 다시 layer 형태로 만들어 준 뒤 다음 층으로 이동

data link layer (Layer 2):
헤더와 트레일러 확인후 문제 없으면 헤더를 떼어낸 후 다음 층으로 이동

network layer (Layer 3):
IP 확인 후 자기 자신(목적지)에게 도착을 확인
network layer 헤더 떼어낸 후 다음 층으로 이동

transport layer (Layer 4):
어플리케이션 사이의 데이터를 전달
transport layer 헤더를 참고해서 어떤 어플리케이션의 데이터를 전달하면 되는지 판단
google 서버 어플리케이션으로 전달하는지 확인
transport layer 헤더 떼어낸 후 다음 층으로 이동

session layer (Layer 5):
헤더 정보 바탕으로 처리 후 session layer 헤더 떼어낸 후 다음 층으로 이동

presentation layer (Layer 6):
헤더 정보 바탕으로 처리 후 presentation layer 헤더 떼어낸 후 다음 층으로 이동

application layer (Layer 7):
헤더 정보 바탕으로 처리 후
최종적으로 데이터, 처음에 보냈던 데이터를 받게 된다.


TCP/IP 모델(4 layer): 인터넷에 특화된 네트워크 구조


network interface layer : OSI 모델의 physical layer와  data link layer에 해당합니다.


network layer : OSI 모델의 network layer에 해당하며, IP 프로토콜이 이 계층에서 작동합니다.


transport layer : OSI 모델의 transport layer에 해당하며, TCP와 UDP 프로토콜이 이 계층에서 작동합니다.


application layer : OSI 모델의 session layer , presentation layer , application layer을 모두 포함하며, HTTP, FTP 등의 프로토콜이 이 계층에서 작동합니다.


네트워크 계층 모델은 네트워크 통신을 이해하고 디버깅하는 데 도움이 됩니다. 또한, 각 계층은 독립적으로 작동하므로 한 계층에서의 변경이 다른 계층에 영향을 미치지 않습니다. 이는 네트워크 기술의 발전과 확장성을 가능하게 합니다.


TCP/IP는 인터넷을 기반으로 한 네트워크 통신에 사용되는 가장 일반적인 프로토콜 스택입니다. TCP/IP는 Transmission Control Protocol (TCP)와 Internet Protocol (IP)라는 두 가지 주요 프로토콜로 구성됩니다.

TCP (Transmission Control Protocol):
TCP는 신뢰성 있는 연결 지향형 프로토콜로, 데이터를 안정적으로 전송하기 위해 사용됩니다. TCP는 데이터를 작은 패킷으로 분할하고, 이를 수신 측에서 순서대로 재조립합니다. 또한, 패킷의 손실이나 손상을 검출하고, 필요한 경우 재전송을 요청하여 데이터의 신뢰성을 보장합니다. TCP는 웹 브라우징, 이메일, 파일 전송 등과 같은 신뢰성이 중요한 응용 프로그램에 주로 사용됩니다.


IP (Internet Protocol):
IP는 패킷 스위칭 네트워크에서 데이터의 라우팅과 전달을 담당하는 프로토콜입니다. IP는 각 패킷에 출발지와 목적지 IP 주소를 부여하여 네트워크 상에서 패킷의 전송을 지원합니다. 이를 통해 패킷은 여러 중간 라우터를 통과하여 목적지에 도달할 수 있게 됩니다. IP는 전송 계층인 TCP와 함께 사용되어 인터넷에서 데이터의 전송을 관리합니다.


TCP/IP 프로토콜 스택은 이 두 가지 주요 프로토콜 외에도 다양한 프로토콜들로 구성됩니다. 예를 들어, HTTP (HyperText Transfer Protocol)는 웹 페이지 요청과 응답을 처리하는 프로토콜이며, FTP (File Transfer Protocol)는 파일 전송을 위한 프로토콜입니다. SMTP (Simple Mail Transfer Protocol)는 이메일 전송을 위한 프로토콜이며, DNS (Domain Name System)는 도메인 이름을 IP 주소로 변환하는 프로토콜입니다. 이러한 프로토콜들은 TCP/IP 프로토콜 스택을 통해 다양한 네트워크 서비스를 제공하고 인터넷 통신을 가능하게 합니다.

 

 

728x90
반응형

'개발일지 > 기타' 카테고리의 다른 글

node.js - 연습해보기  (0) 2023.12.29
Git - Divergent branches  (0) 2023.12.09
복잡도(BigO,시간,공간)  (0) 2023.10.21
반복문과 재귀함수  (0) 2023.10.21
배열, 문자열에 대해 알아보자  (0) 2023.10.21