주요 기능

  • 사용자가 선택한 자원을 서버에 요청하고 브라우저에 표시하는 것
  • 자원의 주소는 URI에 의해 정해진다.
  • 자원은 HTML, PDF, 이미지 혹은 다른 형태이다.

기본구조

  1. 사용자 인터페이스 : 요청한 페이지를 보여주는 창 제외한 나머지 모든 부분 (예 : 주소 표시줄, 북마크 메뉴)
  2. 브라우저 엔진 : 사용자 인터페이스와 렌더링 엔진 사이의 동작 제어
  3. 렌더링 엔진 : 요청한 컨텐츠 표시 - HTML을 요청하면 HTML과 CSS를 파싱하여 표시
  4. 통신
    • HTTP 요청과 같은 네트워크 호출에 사용.
    • 플랫폼 독립적
    • 각 플랫폼 하부에서 실행
  5. UI 백엔드 : 콤보 박스와 창 같은 기본적인 장치를 그림. 플랫폼에서 명시하지 않은 일반적인 인터페이스로서, OS 사용자 인터페이스 체계를 사용.
  6. 자료저장소 : 모든 종류의 자원을 하드 디스크에 저장.
  7. 자바스크립트 해석기

크롬은 각 탭마다 별도의 렌더링 엔진 인스턴스를 유지한다. 각 탭은 독립된 프로세스로 처리된다.

 

 

렌더링 엔진 동작과정

  1. HTML 마크업을 처리하여 DOM 트리를 생성한다.
  2. CSS 마크업을 처리하여 CSSOM 트리를 생성한다.
  3. DOM 트리와 CSSOM 트리를 결합하여 렌더링 트리 생성한다.
  4. 렌더링 트리 배치 : 각 노드에 대해 화면에서의 정확한 위치와 크기를 계산한다.
  5. 렌더 트리 그리기 : UI 백엔드에서 렌더링 트리의 각 노드를 가로지르며 렌더링한다.

이 과정들은 점진적으로 진행된다. 렌더링 엔진은 모든 HTML을 파싱할 때까지 기다리지 않고 배치와 그리기 과정을 시작한다. 네트워크로부터 나머지 내용이 전송되기를 기다리는 동시에 받은 내용의 일부를 먼저 화면에 표시한다.
이는 좀 더 나은 사용자 경험을 위한 것이다.

 

상세과정 

 

1. HTML 파싱 후 DOM 트리 만들기

렌더링 엔진은 우선 네트워크 레이어를 통해 전달받은 HTML 문서(Source code)를 파싱(Parsing) 하여 각 요소들을 DOM Tree(Contents Tree)의 각 DOM 노드 들로 전환합니다. DOM이란 Document object model 의 준말로 마크업 형태의 HTML 문서를 오브젝트 모델의 형태로 바꿔놓은 것입니다. 당연히 HTML 문서의 각 마크업과 DOM의 각 요소는 1:1 매칭됩니다.

<html>
  <body>
    <p>
      Hello World
    </p>
    <div> <img src="example.png"/></div>
  </body>
</html>

ㄴ HTML, Body 부모 태그 안에 단락을 나타내는 p 태그, 한 요소를 나타내는 div 태그가 자식 태그로 존재함. 이 코드를 DOM Tree로 전환할 때 아래와 같이 구성됨.

출처=https://www.html5rocks.com

 

2. 렌더 트리(Render Tree) 만들기

HTML 문서들을 파싱하여 DOM Tree를 구성한 후, 렌더링 엔진은 CSS/Style 데이터를 파싱하고 그 스타일 데이터들로 렌더 트리(Render Tree)를 만듭니다. DOM 트리가 웹 상에 나타날 내용(Contents)를 구성한다면 렌더 트리는 시각적 요소, 어떻게 나타날지 그 스타일을 지정합니다. 렌더 트리는 색상, 차원 등 시각적 지침들을 담은 정사각형들로 구성됩니다. 그 정사각형들은 스크린에 맞는 순서대로 정렬되어야 하죠.

렌더 트리 각각의 정사각형에 해당하는 Renderer 렌더러 들은 DOM 트리 요소(element)들에 적용되지만 1:1 관계가 성립되는 것은 아닙니다.  시각적이지 않은 DOM 요소들은 렌더 트리에 삽입될 수 없습니다. <head> 태그 안의 요소들은 화면에 나타나는 값들을 포함하지 않습니다. 따라서 그 어떤 Renderer도 적용될 수 없죠. 어떤 렌더러들은 DOM 노드에 적용될 수 있으나 꼭 트리의 같은 위계에 속할 필요는 없습니다.

The render tree and the corresponding DOM tree, 출처=https://www.html5rocks.com

 

3. 렌더 트리(Render Tree) 레이아웃 만들기

레이아웃을 만든다는 것은 각 노드들에게 스크린의 어느 공간에 위치해야 할지 각각의 값(Positionm, Size)을 부여하는 것을 의미합니다.

 

4. 렌더 트리 페인팅 (Renter Tree Painting)

렌더 트리가 만들어져 레이아웃이 구성되었다면, UI 벡엔드가 동작하여 각 노드들을 정해진 스타일 및 위치값대로 화면에 배치합니다.

더 나은 UX(User experience)를 위해, 렌더링 엔진은 각 콘텐츠를 가능한한 빨리 스크린에 띄워야 합니다. 따라서 모든 HTML 요소들을 렌더링 엔진으로 넣어서 한번에 출력하는 것이 아니라, 일부 콘텐츠는 먼저 트리 과정을 거쳐 스크린에 나타나고, 그 와중에 웹의 다른 요소들은 네트워크를 통해 렌더링 엔진으로 읽어들어 오는 순차적인 방식으로 입출력이 진행됩니다.

 


참조 : 

https://poiemaweb.com/js-browser

 

https://velog.io/@yejineee/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80-%EB%8F%99%EC%9E%91-%EA%B3%BC%EC%A0%95

 

https://development-crow.tistory.com/5

 

https://it-ist.tistory.com/110

 

https://d2.naver.com/helloworld/59361

1. 정의

DNS : Domain Name System은 사람이 읽을 수 있는 도메인 이름 (www.amazon.com)을 머신이 읽을 수 있는 IP 주소 (192.0.2.44)로 변환합니다.

 

2. 동작

인터넷상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신합니다. 

이때 서로를 식별하는 숫자를 IP 주소라고 합니다.

 IP 주소는 인터넷의 각 기기에 제공되며, 거리 주소가 특정한 집을 찾는 데 사용되는 것처럼, 적절한 인터넷 기기를 찾기 위해서는 IP 주소가 필요합니다.

 

인터넷의 DNS시스템은 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 합니다.

 

DNS 서버는 이름에 대한 요청을 IP주소로 변환하여 최종 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지를 제어합니다. 이 요청을 쿼리라고 부릅니다.

 

1. 사용자가 웹 브라우저를 열어 주소 표시줄에 www.example.com을 입력하고 Enter 키를 누릅니다.

 

2. www.example.com에 대한 요청은 일반적으로 케이블 인터넷 공급업체, DSL 광대역 공급업체 또는 기업 네트워크 같은 인터넷 서비스 제공업체(ISP)가 관리하는 DNS 해석기로 라우팅됩니다.

 

3. ISP의 DNS 해석기는 www.example.com에 대한 요청을 DNS 루트 이름 서버에 전달합니다. 

 

4. ISP의 DNS 해석기는 www.example.com에 대한 요청을 이번에는 .com 도메인의 TLD 이름 서버 중 하나에 다시 전달합니다. .com 도메인의 이름 서버는 example.com 도메인과 연관된 4개의 Amazon Route 53 이름 서버의 이름을 사용하여 요청에 응답합니다. 

 

5. ISP의 DNS 해석기는 Amazon Route 53 이름 서버 하나를 선택해 www.example.com에 대한 요청을 해당 이름 서버에 전달합니다.

 

6. Amazon Route 53 이름 서버는 example.com 호스팅 영역에서 www.example.com 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS 해석기로 반환합니다.

 

7. ISP의 DNS 해석기가 마침내 사용자에게 필요한 IP 주소를 확보하게 됩니다. 해석기는 이 값을 웹 브라우저로 반환합니다. 또한, DNS 해석기는 다음에 누군가가 example.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 동안 example.com의 IP 주소를 캐싱(저장)합니다. 자세한 내용은 TTL(Time to Live)을 참조하십시오.

 

8. 웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 www.example.com에 대한 요청을 전송합니다. 여기가 콘텐츠가 있는 곳으로, 예를 들어 웹 사이트 엔드포인트로 구성된 Amazon S3 버킷 또는 Amazon EC2 인스턴스에서 실행되는 웹 서버입니다.

 

9. 192.0.2.44에 있는 웹 서버 또는 그 밖의 리소스는 www.example.com의 웹 페이지를 웹 브라우저로 반환하고, 웹 브라우저는 이 페이지를 표시합니다.

 

 

3. 웹페이지 로드에 관련된 DNS 서버 4개

  • DNS 리커서 - 리커서는 도서관의 어딘가에서 특정한 책을 찾아달라고 요청받는 사서로 생각할 수 있습니다. DNS 리커서는 웹 브라우저 등의 애플리케이션을 통해 클라이언트 컴퓨터로부터 쿼리를 받도록 고안된 서버입니다. 일반적으로, 리커서는 클라이언트의 DNS 쿼리를 충족시키기 위해 추가 요청을 수행합니다.
  • 루트 이름 서버 - 루트 서버는 사람이 읽을 수 있는 호스트 이름을 IP 주소로 변환(확인)하는 첫 번째 단계입니다. 도서관에서 책장 위치를 가리키는 색인으로 생각할 수 있으며, 일반적으로 다른 더욱 특정한 위치에 대한 참조로 사용됩니다.
  • TLD 이름 서버 - TLD(최상위 도메인) 서버는 도서관의 특정 책장으로 생각할 수 있습니다. 이 이름 서버는 특정 IP 주소 검색의 다음 단계이며, 호스트 이름의 마지막 부분을 호스팅합니다(example.com에서 TLD 서버는 “com”입니다).
  • 권한 있는 이름 서버 - 최종 이름 서버로서, 책장에 있는 사전처럼 특정 이름을 해당 정의로 변환합니다. 권한 있는 이름 서버는 이름 서버 쿼리의 종착점입니다. 권한있는 이름 서버가 요청한 레코드에 대한 액세스 권한이 있다면, 요청한 호스트 이름의 IP 주소를, 초기 요청을 한 DNS 리커서(사서)에게 돌려 보냅니다.

 

4. DNS 조회의 8단계 (쉬운 버전)

  1. 사용자가 웹 브라우저에 'example.com'을 입력하면, 쿼리가 인터넷으로 이동하고 DNS 재귀 확인자가 이를 수신합니다.
  2. 이어서 확인자가 DNS 루트 이름 서버(.)를 쿼리합니다.
  3. 다음으로, 루트 서버가, 도메인에 대한 정보를 저장하는 최상위 도메인(TLD) DNS 서버(예: .com 또는 .net)의 주소로 확인자에 응답합니다. example.com을 검색할 경우의 요청은 .com TLD를 가리킵니다.
  4. 이제, 확인자가 .com TLD에 요청합니다.
  5. 이어서, TLD 서버가 도메인 이름 서버(example.com)의 IP 주소로 응답합니다.
  6. 마지막으로, 재귀 확인자가 도메인의 이름 서버로 쿼리를 보냅니다.
  7. 이제, example.com의 IP 주소가 이름 서버에서 확인자에게 반환됩니다.
  8. 이어서, DNS 확인자가, 처음 요청한 도메인의 IP 주소로 웹 브라우저에 응답합니다.
  9. 브라우저가 IP 주소로 HTTP 요청을 보냅니다.
  10. 해당 IP의 서버가 브라우저에서 렌더링할 웹 페이지를 반환합니다(10단계).

 

DNS 쿼리 & DNS 캐싱 정보가 있지만, 이해가 잘 안되서 실패...


참조 :

 

https://gentlysallim.com/dns%EB%9E%80-%EB%AD%90%EA%B3%A0-%EB%84%A4%EC%9E%84%EC%84%9C%EB%B2%84%EB%9E%80-%EB%AD%94%EC%A7%80-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC/ (진짜 잘 정리되어 있음!!)

 

https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

https://aws.amazon.com/ko/route53/what-is-dns/

 

 

 

1. 인터넷이란

각 컴퓨터들간의 TCP/IP 통신 프로토콜을 이용해서 서로 데이터를 주고 받도록 한 네트워크를 말합니다.

또는 네트워크의 네트워크를 구현하여 모든 컴퓨터를 하나의 통신망 안에 연결하고자 하는 의미도 있습니다.

 

2.네트워크

이렇게 두개의 컴퓨터를 연결하려면 물리적선 or 무선으로 연결이 되어야 합니다.

 

하지만 여러대의 컴퓨터가 있을 수록 너무 연결선이 복잡해집니다.

 

그래서 중간에 Router(라우터)라는 연결점 한개를 두고 라우터에 모든 컴퓨터를 연결하니 선이 확실이 줄었습니다.

 

그렇게 해서 우리는 라우터와 라우터를 연결하면서 네트워크를 만들었습니다.

 

그런데 라우터와 라우터 사이가 먼경우에는 물리적인 선이나, 무선으로 통신하기가 힘들어서 모뎀(MODEM)이라는 중간 매체가 나왔습니다.

 

그리고 각 네트워크나 모뎀을 연결하는 선을 ISP라고 합니다. 

ISP는 예를들어 LG U+, SKT, KT등이 있죠

 

 

이렇게 우리는 인터넷을 연결하여, 컴퓨터간의 데이터를 주고 받을 수 있습니다.


참조 : 

https://development-crow.tistory.com/3

https://m.blog.naver.com/ghdalswl77/221815248382

https://developer.mozilla.org/ko/docs/Learn/Common_questions/How_does_the_Internet_work

 

 

'개발합시다. > BackEnd 공부' 카테고리의 다른 글

브라우저는 어떻게 동작할까???  (0) 2021.08.10
DNS란?  (0) 2021.08.10
백엔드 개발 공부/용어 정리 로드맵  (0) 2021.07.14
IP 주소 (IPv4, IPv6)  (0) 2021.07.09
TCP vs UDP  (0) 2021.07.09

 

1. 인터넷

- 인터넷은 어떻게 작동 될까요?

 - HTTP는 무엇일까요?

- 브라우저와 종작원리

 - DNS와 작동원리

 - 도메인 네임은 무엇일까요?

- 호스팅은 무엇일까요?

 

2. OS 및 일반적인 지식

- 터미널 사용방법

- OS의 일반적인 작동 방식

- 프로세스 관리

- 스레드와 동시성

- 기본적인 터미널 명령어

- 메모리 관리

- 프로세스간 통신 (IPC)

- 입출력(I/O) 관리

- POSIX 기초 - stdin, stout 등등

- 기본적인 네트워크 개념

 

3. 언어배우기

- JAVA

- JavaScript

- Ruby

 

4. 버전 관리

- Git 기본 사용법

 

5. 관계형 데이터베이스

- PostgreSQL

- MySQL

 

6. NoSQL 데이터 베이스

- MongoDB

 

7. 데이터베이스 상세 정보

- ORM

- ACID

- 트랜잭션

- N+1문제

- 데이터 레플리케이션

- 샤딩전략

- CAP 이론

- 데이터베이스 정규화

- 인덱스와 작동방식

 

8. API에 대해서 배우기

- REST

- JSON APIs

- SOAP

- HATEOAS

- 오픈 API 스펙과 swagger

- 인증

- Cookie 기반

- OAuth

- 기본적인 인증

- 토큰 인증

- JWT

- OpenID

- SAML

 

9. 캐싱

- CDN

- 서버사이드

- 클라이언트 사이드

- Redis

- Memcached

 

10. 웹보안 지식

- 해시 알고리즘

- MD5와 사용하지 않는 이유

- SHA Family

- scrypth

- bcrypth

- HTTPS

- 컨텐츠 보안 정책

- CORS

- SSL/TLS

- OWASP 보안 정책

 

11. 테스팅

- 통합테스트

- 단위 테스트

- 기능 테스트

 

12. CI/ CD

 

13. 개발과 설계 원칙

- GOF 디자인 패턴

- 도메인 주도 설계

- 테스트 주도 개발

- SOLID

- KISS

- YAGNI

- DRY

 

14. 아키텍쳐 패턴

- 모노로틱 앱

- 마이크로서비스

- SOA

- CQRS와 이벤트 소싱

- Serverless

 

15. 검색엔진

- Elasticsearch

- Solr

 

16.메세지 브로커

- RabbitMQ

- Kafka

 

17. 컨테이너화 vs 가상화

- Docker

 

18. GraphQL

- Apollo

- Relay Modern

 

19. 그래프 데이터베이스

- Neo4j

 

20. 웹소켓

 

21. 웹 서버

- Nginx

- Apache

- Caddy

- MS IIS

 

22. 확장성

- 마이그레이션 전략

- 수평적 확장 vs 수직적 확장

- 관찰가능성을 고려한 확장

- 마이그레이션 전략

- 측정 / 모니터링 /원격측정의 차이

 

 

**네이버 백엔드 개발자가 추천하는 공부내용들**

  • 웹 생태계의 스펙
    • HTML, HTTP(1.1 , HTTP/2)
  • 기본 SDK, 라이브러리/프레임워크 이해와 활용
  • 클라이언트를 위한 API 설계
  • 서버/컴퍼넌트/객체 간의 역할 분담/의존성/통신 방법 설계
  • 저장소 활용
    • DBMS 설계
    • Cache 적용
      • Global/Local cache 적용범위, 라이프 싸이클, 솔루션 선택
    • 파일 저장 정책/솔루션 선택 활용
  • 검색엔진 연동 방식 결정
  • 빌드 도구
    • Maven/Gradle
  • 배포 전략
  • 성능 테스트/프로파일링/튜닝
    • JVM 레벨의 튜닝 (GC 옵션 등)
      • 웹 서버(Nginx,Tomcat)등의 설정/튜닝
    • OS 설정의 주요 값 확인
  • 인접 기술에 대한 이해
    • DBMS, Front End 등
  • 서버 개발자에만 해당하지는 않는 항목
    • 테스트 코드 작성/리팩토링 기법
    • 버전 관리 전략
      • branch 정책 등

 

 

이걸 다 정리해보자 파이팅!!

1. IP (internet protocol) 계층

- 서로 다른 네트워크간 통신이 가능하도록 지원

- IP 게층에서 데이터에 IP주소를 붙임

- IP 주소를 바탕으로 패킷이 목적지에 정확히 도달할 수 있도록 함

 

2. IP주소(주민번호) vs 도메인 네임(Domian Name Server) (이름)

Domain Name Service가 꼭필요함 -> IP주소와 도메인 네임을 변형하기 위해

- 사람이 사용하는 도메인 이름을 IP주소로 바꿔주는 인터넷 서비스

- 사람이 이해하는 인터넷 주소를 서버나 라우터가 아는 IP주소로 변환해 줌

- 인터넷을 사용하기 위한 필수적인 요소

 

3. IPv4 주소

- 주소의 범위는 32비트

- 이론적으로 42억... 개의 IP가 존재

- 0 ~ 255 사이의 십진수 네개로 표현 (8비트를 십진수로 표현)

ex) 203.255.176.75 (0.0.0.0 ~ 255.255.255.255)

- 전세계적으로 유일하게 구별

- 주소 부족 문제 발생

※ CMD에서 ipconifg -all로 확인 가능

 

IP주소는 네트워크 주소(집주소) 와 호스트 주소(집에 사는 사람) 로 구성

 

정적 IP vs 동적 IP

동적 IP : 요청이 오면 동적으로 IP 할당 - DHCP: 동적주소 할당 프로토콜

 

공인 IP vs 사설 IP

사설 IP : 공유기가 할당해주는 가짜 IP

 

4. IPv6 주소

- 인터넷의 주소 고갈 문제를 해결하고 인터넷에 확장성과 데이터 보안을 강화하기 위해 IPv6가 제안됨

- 128비트의 IP 주소 사용

- 2의 128승 개 정도 있음

- 여러가지 새로운 기능을 제공하는 동시에 기존 IPv6와의 호환성을 최대로 하는 방향으로 설계됨

- 16진수로 표현됨

1. TCP(Transmission Control Protocol) 프로토콜

- 연결지향형 서비스

- 대부분의 응용에서 사용하는 수송 계층 프로토콜

- 응용간에 신뢰성 있는 연결을 제공

- 전송 여부 체크, 중복제거 등을 보장

- 데이터에 오류가 있는지 체크

 

2. UPD (User Datagram Protocol) 프로토콜 - 중요한 정보 X

- 비연결형 서비스

- 불특정 다수에게 데이터 전송가능

- 전송 여부, 중복제거 등을 보장하지 않음

- 단순, 최소의 메커니즘을 통해 상대방에게 데이터 전송 서비스의 신뢰성이 낮음

- 빠른 전송 지원

- Best Effort 서비스

- 데이터에 오류가 있는지 체크

- ex) 인터넷 전화

1. 회선 교환 방식 (Old)

- 통신 기간 동안 독점적인 사용을 위해 두 통신 노드 사이를 연결 - 회선의 낭비가 심함

- 실제로 정보가 흐르는 시간 외에도 점유가 되어 회선의 이용률이 낮아짐

- 초기 전화 시스템의 방식

 

2.패킷 교환 방식 (New)

- 작은 블록의 패킷으로 데이터를 전송

- 데이터를 전송하는 동안만 네트워크 자원을 사용하기 때문에 이용률이 높음

- 네트워크 연결 상의 모든 노드들 사이에 개별적으로 경로가 제어되고 회선을 공유함

- 가장 많이 사용되는 방식

- 각 패킷의 헤더(머리 부분)에 목적지 주소(전달되는 주소)를, 몸통 부분에 전달되는 내용을 붙여서 네트워크에 주입하는 방식입니다.

- 각 패킷이 자신의 헤더에 붙은 주소를 따라 적절한 경로를 통해 목적지로 도달하도록 하는 방식입니다. 

- 회선이 특정 사용자에 의해 독점되지 않으므로 회선의 이용률이 매우 높습니다. 

'개발합시다. > BackEnd 공부' 카테고리의 다른 글

IP 주소 (IPv4, IPv6)  (0) 2021.07.09
TCP vs UDP  (0) 2021.07.09
Protocol(프로토콜) 이란  (0) 2021.07.08
SSH란  (0) 2021.07.08
로드밸런싱(Load Balancing)  (0) 2021.07.07

1. 정의

통신에서는 어떤 시스템이 다른 시스템과 통신을 원활하게 수용하도록 해주는 통신 규약, 약속

 

2. 기능

  1. 세분화와 재합성
  2. 캡슐화
  3. 연결제어
  4. 오류제어
  5. 흐름제어
  6. 동기화
  7. 순서 결정
  8. 주소 설정
  9. 다중화
  10. 전송 서비스

 

3. 구분

  1. 직접 프로토콜 / 간접 프로토콜
  2. 단일체 프로토콜 / 구조적 프로토콜
  3. 대칭 프로토콜 / 비대칭 프로토콜

 

4. 종류

대표적으로 인터넷을 할때 사용되는 TCP/IP가 있습니다.

TCP(Transmission Control Protocol) : 

  • 전송 계층에서 동작하는 프로토콜
  • IP위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.
  • HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP위에서 동작하기 때문에, 묶어서 TCP/IP로 부른다.

 

IP(Internet Protocol) : 

  • 네트워크 계층에서 동작하는 프로토콜
  • 패킷 통신 방식의 인터넷 프로토콜
  • 패킷 전달여부를 보증하지 않고, 피킷을 보낸 순서와 받는 순서가 다를 수 있음

 

5. OSI 7계층

1. 물리 계층

 

2. 데이터 링크 계층

 

3. 네트워크 계층

인터넷에서 목적지에 도착하기 위한 패킷의 경로 제공 및 관리의 역할을 합니다 주요 프로토콜로는 IPv4, IPv6 IPSec등이 잇습니다.

 

4. 전송 계층

호스트 간에 메시지의 교환과 관리가 이루어지며, TCP와 UDP가 전송 프로토콜이다. TCP는 연결형 서비스에 오류 제어와 흐름제어를 하고, UDP는 비연결형 서비스이지만 오류 제어나 흐름 제어는 실시하지 않습니다.

 

5. 세션 계층

 

6. 표현 계층

 

7. 응용 계층 - FTP, Telnet, SMTP, DNS, TFTP, HTTP, POP3, SNMP

FTP (File Transfer Protocol)

대화형으로 클라이언트와 서버가 통신이 가능하다. 

 

Telnet :

사용자가 원격에 있는 서버에 로그인 하도록 RCP 연결을 설정하며, 직접 조작할 수 있게 해준다.

 

SMTP (simple Mail Transfer Protocol) : 

말 그대로 메일 서비스이다. 텍스트나 실행 파일 등을 손쉽게 전송할 수 있다. 메일 시스템에서는 우너격 컴퓨터나 네트워크 연결에 장애가 발생한 경우에도 통신이 가능하다.

 

DNS (Domain Name System) : 

도메인 이름 주소를 통해 IP주소를 확인 할 수 있는 프로토콜이다.

 

HTTP (HyperText Transfer Protocol)

서버와 클라이언트가 인터넷 상에서 데이터를 주고 받기 위한 프로토콜이다.

 


참조 : 

https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-9%ED%8E%B8-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%9D%B4%EB%9E%80-Protocol-%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

 

https://linked2ev.github.io/devlog/2019/06/03/WEB-What-is-protocol/

 

https://information-science.tistory.com/2

 

https://coding-factory.tistory.com/346

'개발합시다. > BackEnd 공부' 카테고리의 다른 글

TCP vs UDP  (0) 2021.07.09
정보통신의 방식 (회선교환 방식, 패킷교환 방식)  (0) 2021.07.09
SSH란  (0) 2021.07.08
로드밸런싱(Load Balancing)  (0) 2021.07.07
HTTP와 HTTPS란?  (0) 2021.07.07

1. 정의 

Secure Shell Protocol,의 약자로, 네트워크 프로토콜 중하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 대 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다.

 

대표적인 사용으로는 "데이터 전송", "원격제어"가 있습니다.

 

2. 사용 예시

데이터 전송 :

원격저장소인 Github가 있습니다. 소스 코드를 원격 저장소인 깃헙에 푸쉬할 때 SSH를 활용해 파일을 전송합니다.

 

원격제어 : 

AWS와 같은 클라우드 서비스를 사용할때, 인스턴스 서버에 접속하여 머신에 명령을 내릴때 SSH를 사용합니다.

 

3. 특징

다른 FPT나 Telnet과 같은 프로토콜도 있는데 왜 SSH를 사용할까? --> 보안

 

4. 왜 보안이 좋을까?

SSH는 Private Key와 Public Key를 이용합니다. 저번에 알아본 Cache와 비슷하죠. 다시 알아보면

 

Public Key : 공개되어도 안전한 Key, 이 키를 통해 메시지를 전송하기전에 암호화를 합니다. but 복호화는 불가능

 

Private Key : 절대로 외부에 노출되어서는 안되는 Key, 본인 컴퓨터 내부에 저장되어 있고, 복호화를 할 수 있습니다.

 

 


 

참조 : 

https://baked-corn.tistory.com/52

 

https://velog.io/@hyeseong-dev/%EB%A6%AC%EB%88%85%EC%8A%A4-ssh%EB%9E%80

 

https://cheershennah.tistory.com/96

1. 정의

 

부하분산 또는 로드 밸런싱은 컴퓨터 네트워크 기술의 일종으로 중앙처리 장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을나누는 것을 말한다.

 

서버에 가해지는 부하(=로드)를 분산(=밸런싱) 해주는 기술이다.

 

사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 되는데, 이런 증가한 트래픽에 대처할 수 있는 방법은 크게 두가지 이다.

 

  • Scale Up : 서버 자체의 성능을 높이는 것
  • Scale Out : 여러대의 서버를 두는것

Scale-out방식에서 로드밸런싱이 필요하다. 각각의 서버에 균등하게 트래픽을 분산시켜주는 것이 바로 load balancer입니다.


2. 로드밸런싱 알고리즘

라운드 로빈

서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식 

서버와의 연결이 오래 지속되지 않는 경우 적합하다.

 

가중 라운드로빈 방식

각서버에 가중치를 매기고 가중치가 높은 서버에 요청을 우선적으로 배정하는 방식

서버의 트래픽 처리 능력이 다른 경우 사용한다.

 

최소 연결 방식

요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 트래픽을 배정하는 방식

서버에 분배된 트래픽들이 일정하지 않은 경우에 적합하다.

 

IP 해시 방식

클라이언트의 IP주소를 특정 서버로 매핑하여 요청을 처리하는 방식

사용자가 항상 동일한 서버로 연결된다.


3. 주요 기능

NAT (Network Address Translation)

--> 사설 IP 주소를 공인 IP주소로 바꾸는데 사용하는 통신망의 주소 변조기입니다.

 

Tunneling

--> 인터넷 상에서 눈에 보이지 않는 통로를 만들어 통신할 수 잇게 하느 ㄴ개념

--> 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화도니 패킷을 구별해 캡슐화를 해제할 수 있습니다.

 

DSR(Dynamic Source Routing protocol)

--> 로드 밸런서 사용시 서버에 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아감

 

4. 구조


5. 종류

 

L2 - Mac 주소를바탕으로 Load Balancing 합니다.

 

L3 - IP주소를 바탕으로 Load Balancing 합니다.

 

L4 - Transport Layer(IP와 Port) Level에서 Load Balancing을 합니다. ex) TCP, UDP

L7 - Application Layer(사용자의 Request) Level에서 Load Balancing을 합니다. ex) HTTP, HTTPS


6. 동작방식

 

  1. 클라이언트의 브라우저에서 abc.net이라고 입력
  2. 클라이언트에 설정된 메인 DNS 서버로 abc.net의 IP주소를 문의
  3. 메인 DNS 서버는 abc.net 주소를 관리하는 별도의 DNS 서버에 IP 주소 문의
  4. 별도 관리 DNS 서버는 로드 밸런서의 IP 주소를 메인 DNS 서버에게 알려줌
  5. 메인 DNS 서버는 획득한 VIP 주소를 클라이언트에 전송
  6. 클라이언트에서 로드밸런서의 VIP 주소로 HTTP요청
  7. 로드밸런서는 별도 로드밸런싱 방법을 통해 서버에 요청 전송
  8. 서버의 작업 결과를 받은 로드밸런서는 전달받은 HTTP 결과를 클라이언트에게 전송 

 


참조 : 

https://velog.io/@jisoo1170/Load-Balancing%EC%9D%B4%EB%9E%80

 

https://nesoy.github.io/articles/2018-06/Load-Balancer

 

https://www.stevenjlee.net/2020/06/30/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1-load-balancing-%EA%B7%B8/

 

 

 

'개발합시다. > BackEnd 공부' 카테고리의 다른 글

Protocol(프로토콜) 이란  (0) 2021.07.08
SSH란  (0) 2021.07.08
HTTP와 HTTPS란?  (0) 2021.07.07
Django client ip address 얻기  (0) 2021.07.07
Django - Redis 세션 & 쿠키 & 캐시 정리  (0) 2021.07.07

+ Recent posts