Web/Backend

[백엔드 기초] 1. HTTP, DNS, Domain, Hosting

HTTP(HyperText Transfer Protocol)

HTTP/클라이언트/서버

HTTP: 웹브라우저(클라이언트)와 웹서버가 컨텐츠(html, 이미지, 오디오, css, javascript 파일등)을 주고 받기 위해서 사용하는 통신규칙.

 

클라이언트(Client)는 HTTP를 통해 데이터를 서버로 요청(Request)하는 요청자이며, 흔히 크롬, IE, FireFox 같은 웹 브라우저가 그 역할을 함. 응용 프로그램에서는 Http 요청을 위해 사용하는 라이브러리가 그 역할을 함.

 

서버(Server)는 클라이언트가 요청한 데이터를 제공하는 제공자이며 이미지, HTML 파일처럼 파일을 제공하는 서버, 요청 주소에따라 다른 내용을 제공하는 API서버 등 다양함. HTTP 통신에서는 서버가 제공하는 결과를 응답(Response)이라고 함.

 

 

HTTP 연결 과정

4계층(Application Layer): HTTP 전송에 필요한 메시지 작성.

3계층(Transport Layer): 서버와 클라이언트 연결.

2계층(Internet Layer): 데이터를 패킷으로 나눔.

1계층(Network Interface Layer) : 물리(전기)적 신호로 변환.

 

HTTPS

(HyperText Transfer Protocol over Secure Socket Layer)

HTTP 자체에는 보안 장치가 따로 없기 때문에 제3자가 중간에 메시지를 가로채는 가능성이 존재함. 이러한 보안적인 단점을 커버하기 위한 것이 HTTPS.

 

HTTP 메시지가 대칭 키/공개 키를 이용한 암호화, 복호화 과정을 거쳐 통신을 하게 되는 것

  • 대칭 키: 암호화/복호화 시 같은 값을 이용
  • 공개 키: 암호화-공개 키, 복호화-비밀 키 사용. 보안성은 뛰어나지만 컴퓨터 자원이 더 많이 소요됨.

→ 섞어 씀.

 

  • 애플리케이션 계층과 전송 계층 사이에 보안 계층 존재> 네트워크로 보내지기 전 암호화
  • SSL(보안 소켓 계층)을 사용함
  • SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주어 도난을 막음
  • 검색엔진 최적화(SEO)에 있어서도 큰 혜택
  • http 스킴을 가지고 있다면 80번포트로 연결 후 평범한 명령 전송
  • https 스킴을 가지고 있다면 443포트로 연결 후 SSL 매개변수를 교환하며 핸드셰이크를하고 암호화된 명령 전송

 

SSL(Secure Sockets Layer): 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약

SSL 핸드셰이킹 과정

(Handshaking: 정상적인 통신이 시작되기 전에 두 개의 실체 간에 확립된 통신 채널의 변수를 동적으로 설정하는 자동화된 협상 과정)

 

Method

GET

  • 서버에게 리소스를 보내도록 요청하는데 사용

HEAD

  • GET과 비슷하지만 서버에서 Body를 return하지 않음
  • Resource를 받지 않고 오직 찾기만 원할때 주로 씀

PUT

  • 서버에 문서를 쓸 때 사용(GET과 반대)
  • 서버가 Client 요청의 Body를 확인

POST

  • Clinet에서 서버에게 Data를 보낼 때 사용

 

Domain

IP: 인터넷에 연결된 장치마다 각각 가지고 있는 식별 가능한 주소.

도메인: IP는 외우거나 이해하기 어렵기때문에 기억하기 쉽도록 각 IP에 이름을 부여한 네트워크 호스트 이름.

DNS

Domain Name System

호스트(인터넷에 연결된 개별적 장치)의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행하는 시스템.

 

DNS Server

수많은 IP주소와 도메인이 함께 저장되어 있음.

 

DNS의 계층 구조

DNS는 계층적인 구조(트리)를 가지고 있음.

(모든 인터넷 트래픽을 한 곳에서 담당할 수 없기 때문에 계층화해서 단계적으로 처리터넷 트래픽을 한 곳에서 담당할 수 없기 때문에 계층화해서 단계적으로 처리)

상위 계층이 직속 하위 계층의 목록에 대한 정보를 알고 있음.

 

DNS 동작 원리

1. 브라우저에서 Nesite.com을 검색하고, 사용하고 있는 통신사인 KT DNS 서버에게 도메인 주소에 해당하는 IP 주소를 요청(브라우저 기본 DNS 설정이 통신사 DNS 서버이기 때문)

2. ISP 서버에선 캐시 데이터가 없다는 걸 확인하고 루트 DNS 서버에게 어디로 가야 하는지 요청함(캐시가 있다면 8.로 건너 뜀.)

3. 루트 서버는 TLD DNS 서버 주소만 관리하기 때문에, ***.com 도메인을 보고는 COM 최상위 도메인을 관리하는 TLD DNS 서버 주소를 안내함.

4. ISP 서버는 COM 서버에게 어디로 가야 하는지 다시 요청함.

5. COM 서버는 가비아 DNS 서버에서 해당 도메인이 관리되고 있는 걸 확인하고 안내함.

6. ISP 서버는 가비아 서버에게 또 다시 요청함.

7. 가비아 서버는 “Nesite.com = 12.123.123.123”이라는 정보를 확인하고 이 IP를 알려줌. 동시에 ISP 서버는 해당 정보를 캐시로 기록해 둠.

8. ISP 서버는 브라우저에게 힘들게 알아 낸 12.123.123.123 주소를 안내함.

9. 브라우저는 12.123.123.123 IP 주소를 갖고 있는 호스팅 서버에게 웹사이트를 출력하라고 요청함.

10. 완료.

Hosting

서버 컴퓨터의 전체 또는 일정 공간을 이용할 수 있도록 임대해 주는 서비스

 

PC 서버로 웹 사이트를 운영하려면 1년 365일 켜야 하나 현실적으로 불가능하므로 호스팅 업체가 미리 여러 대의 서버로 이용자들에게 임대해 주고 그 대가를 받는 서비스.

 

CPU / 메모리 / 네트워크 전송량 등의 하드웨어적인 리소스뿐만 아니라 php 버전이나 아파치 버전, My-SQL의 버전과 같은 소프트웨어 적인 환경과 리소스를 모두 공유해서 이용.

 

 

728x90