웹 애플리케이션

  • 큰 틀은 클라 -> 웹서버 -> WSGI -> 웹 애플리케이션 -> 데이터베이스 로 구성된다.
  • 클라이언트 : 웹 상에서 서버에 데이터를 요청하는 사용자
  • 서버 : 클라이언트가 요청하는 데이터를 제공해주는 프로그램
  • 프로토콜 : 컴퓨터간 데이터를 주고받는데 정해진 규칙
    • http 는 프로토콜중 하나로 여기에 보안기능이 포함된것이 https
    • 이 보안기능이 SSL

 

웹 서버

클라이언트에게 HTTP요청을 받아 웹 페이지를 반환하는 프로그램(컴퓨터)

  • 정적 페이지를 처리하는 서버
  • 정적 페이지는 데이터베이스와 연결할 필요 없음

아파치 HTTP서버

  • 프로세스/스레드 기반 구조
  • 사용자의 HTTP 요청이 올때마다 프로세스 생성
  • 요청이 많아지면 메모리부족, CPU과부하
  • 커넥션이 1만개 넘어가면 하드웨어 성능과 무관하게 더이상 커넥션하지못하는 C10K문제

NGINX 서버

  • 비동기 이벤트 기반 구조
  • 먼저 등록된 요청부터 순서대로 처리하는 방식으로 아파치의 단점을 보완한 서버방식

WSGI

  • 웹 서버가 웹 어플리케이션에 요청을 전달할때 웹서버는 파이썬, 장고같은 환경을 이해하지 못함
  • 이때 웹 서버와 웹 어플리케이션 사이에서 번역역활을 하는것이 WSGI
  • gunicorn, uwsgi 가 있음

웹 애플리케이션 서버

  • 동적 페이지를 처리하는 서버
  • DB와 연결되어 데이터 주고받음
  • 장고, 플라스트, 스프링 등이 웹 애플리케이션서버를 만드는데 사용되는 프레임워크
  • 장고가 플라스크보다 상대적으로 견고하고 기능이 많음

OSI 7 layer

서버에서 송신과 수신과정에 데이터는 7개의 계층을 거침
데이터를 송신할때 각 계층마다 데이터에 헤더를붙이고 그 헤더안에 필요한 정보를 집어넣고
수신할때 각 계층에서 헤더의 정보를 확인하고 떼어냄
즉 각각의 7계층을 지날때 각각의 정보가 담긴 여러개의 헤더가 데이터에 붙었다 떨어짐을 반복

 

  1. 물리계층
  • 랜카드, 허브(hub) 처럼 실제 물리적으로 연결된 계층
  • 데이터를 0과1로 이뤄진 전기신호로 바꾸어 전송(랜카드의 역할)
  • 하지만 허브같은경우 한 데이터가 들어오면 연결된 모든 기계에 자동으로 전송
    • 데이터를 선택적으로 보낼 수 없음

 

  1. 데이터 링크 계층
  • 네트워크 장비 사이의 신호를 주고받는 규칙을 정하는 층
  • 랜카드에는 맥 주소가 할당되어 있음(48비트)
  • 데이터를 주고받을때 데이터에 이더넷헤더를 붙이는데 헤어에는 세가지 정보가 들어감
    • 이더넷헤더 : 목적지 맥 주소 + 출발지 맥 주소 + 데이터유형
    • 헤더와 데이터를 포함한 전제 덩어리를 프레임 이라고 함
  • 허브의 기능을 보완한 스위치라는 장비를 사용
    • 허브와 다르게 보내고싶은 컴퓨터에만 선택적으로 데이터를 보낼 수 있음
  • 한마디로 스위치라는 장비를 이용해 이더넷이라는 규칙하에 컴퓨터끼리 프레임을 주고받음
    • 하지만 스위치 밖에 물리적으로 연결되지 않은 컴퓨터와는 데이터를 주고받기 힘듦

 

  1. 네트워크 계층
  • 하나의 스위치에 연결되있는 컴퓨터들의 모음
  • 라우터를 사용하여 IP주소를 사용해 32비트로 데이터를 주고 받음
  • 데이터에 IP헤더를 붙인 IP 패킷 단위로 정보를 주고받음
  • IP 주소 = 네트워크ID + 호스트ID
    • IPv4 : 10진수로 이뤄진 32비트크기의 주소방식
    • IPv6 : 16진수로 이뤄진 128비트 크기의 주소방식
    • 네트워크 주소 : 호스트 ID가 모두 10진수로 0인 주소
    • 브로드캐스트 주소 : 호스트 ID가 모두 10진수로 255인 주소
    • 네트워크 주소와 브로드캐스트 주소는 IP주소로 할당 불가능
    • 브로드캐스트 : 네트워크에 있는 모든 호스트로 데이터를 전송하는 방식
    • 서브넷마스크 : 네트워크ID와 호스트ID를 식별하기 위한 값

 

  1. 전송계층
  • 네트워크 계층에서 데이터를 전달할 때, 전송계층에서 잘 전송되었는지 확인
  • 통신방법은 크게 연결형통신과 비연결형통신이 있음
  • 연결형 통신
    • 데이터를 신뢰성있고 정확하게 전달
    • 상대방과 계속 연락하며 통신
    • 연결형 통신 프로토콜 TCP
    • TCP헤더를 붙인 데이터는 세그먼트라고 부름
    • 이 TCP헤더에 상대방이 정보를 받았는지 여부를 확인할 수 있기 때문에 신뢰성이 생김
    • 3 way hand shake 과정으로 연결하고 종료할때 확인가능
    • 어떤 애플리케이션을 쓰는지에따라 포트번호도 구분되어 어디서오고 어디로가는 데이터인지 정확히 식별할 수 있음
  • 비연결형 통신
    • 데이터를 효율적으로 전달
    • 상대방 반응을 확인하지않고 일방적으로 전달
    • 비연결형 통신 프로토콜 UDP
    • UDP헤어를 붙인 데이터는 UDP데이터그램 이라 부름
    • TCP에비해 헤더에 들어가는 정보가 간단함
    • 그래서 신뢰성은 낮지만 속도는 빠름

 

  1. 응용계층
  • 세션계층(5계층), 표현계층(6계층), 응용계층(7계층)을 통틀어 응용계층이라 부름
  • 클라이언트 요청을 전달하기위해 서버가 이해할 수 있는 데이터로 변환하고 전송하는 계층
  • 클라이언트와 서버가 하려는 업무에따라 응용계층에서 필요한 프로토콜이 달라짐

+ Recent posts