Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

hyo_jung

[Work Book] UMC 서버 2주차 본문

개발/Backend

[Work Book] UMC 서버 2주차

hyo_jung 2021. 10. 15. 23:33

핵심 개념 키워드

클라이언트-서버 통신

 

프로토콜

  • 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다.
  • 기기 간 통신은 교환 되는 데이터의 형식의 대해 상호 합의를 요구하는데, 이런 형식을 정의하는 규칙의 집합을 프로토콜이라 한다.

HTTP

  • 클라이언트와 서버 사이에 이루어지는 요청/응답 (request/response) 프로토콜이다.
  • 웹 브라우저가 HTTP를 통하여 서버로부터 HTML 문서를 요청하면, 서버는 요청에 응답하여 필요한 정보를 사용자에게 전달한다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나게 된다.
  • Stateless (무상태) : 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다. 따라서 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다.
  • Connectionless (비연결성) : 클라이언트가 서버에 요청을 하고 응답을 받으면 바로 TCP/IP 연결을 끊어 연결을 유지하지 않는다.
  • [네트워크] HTTP와 HTTPS
  • HTTP, Stateless, Connectionless, HTTP 메시지 개념
  • [네트워크] HTTP와 HTTPS 동작 과정

 

HTTPS

  • HTTPS = HTTP + 암호화 + 증명서 + 완전성 으로 HTTP의 보안적 약점을 보완한 프로토콜이다.
  • 웹 상에서 정보를 암호화하는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다.
  • HTTPS 통신에서는 실제 전송되는 데이터의 암호화에는 대칭키 암호화 방식을 사용하고 키 교환에는 공개키 암호화 방식을 사용한다.
  • SSL
    • 웹사이트와 브라우저 사이에 전송된 데이터를 암호화하여 인터넷 연결 보안을 유지하는 표준 기술이다.
  • TLS
    • SSL 프로토콜에서 발전된 후속 버전이다. SSL 3.0 버전부터 IETF에서 표준으로 정해서 TLS 1.0이 되었다.
  • [네트워크] HTTPS 그리고 보안 (암호화/인증서/전자서명)

 

FTP

  • TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다.
  • FTP의 연결 설정을 위해서는 2개의 기본 채널이 필요하다.
    1. 명령을 내리고 어떤 파일에 액세스할 수 있는지 등의 기본 정보를 전달하는 명령 채널
    2. 2개의 장치 간에 파일 데이터를 전송하는 데이터 채널
  • FTP의 연결 모드에는 2가지가 있다.
    1. 서버가 데이터 요청을 승인하는 능동 모드(액티브 모드)
    2. 사용자가 데이터 채널과 명령 채널 모두를 설정하는 수동 모드(패시브 모드)
  • FTP는 보안이 약하다는 단점이 있다.

SFTP

  • FTP에 보안 기능을 강화한 보안 파일 전송 프로토콜이다.
  • 파일 전송 시 로그인 정보나 파일 정보를 암호화한 후 SSH 프로토콜을 이용하여 전송한다.

MYSQL

  • 클라이언트가 SQL 명령을 서버에 보내고 서버는 SQL 명령에 응답한다.
  • 사용자 인증이 필요하다. 사용자 별로 데이터베이스 접근을 제한할 수 있다.
  • 클라이언트가 SSL을 설정하면 SSL 통신 채널을 제공한다.

SSH

  • 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜이다.
  • 네트워크 환경에만 있으면 물리적으로 기기에 접근하지 않고 원격 접속을 통해 컨트롤 할 수 있도록 도와준다.
  • 암호화 기법을 사용하여 통신한다.
  • SSH 키(Key)는 공개키(public key)와 비공개키(private key)로 이루어진다. 비공개키는 로컬 머신에 위치해야 하고, 공개키는 원격 머신에 위치해야 한다.
  • 공개키와 비공개키를 비교하여 서로 한 쌍의 Key인지 검사하고 한 쌍을 이루는 것이 증명이 되면 두 컴퓨터 사이에 암호화된 채널이 형성되고 비대칭키를 통해 서로 대칭키를 교환한다.
  • 이후 통신 되는 모든 데이터는 대칭키(세션 키)를 통해서 암호화가 이루어진다. 원격 접속이 해제되면 사용되던 세션 키는 다음 접속에서 사용할 수 없게 된다.
  • SSH란 ?

 

 

네트워크 계층

 

OSI 7 계층

응용 계층(Application Layer) 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
표현 계층(Presentation Layer) 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다.
세션 계층(Session Layer) 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다.
전송 계층(Transport Layer) 양 끝단(End to end)의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다.
네트워크 계층(Network Layer) 여러 개의 노드를 거칠 때마다 라우팅 해주는 역할을 하는 계층이다.
데이터 링크 계층(Data Link Layer) 포인트 투 포인트(Point to Point) 간 신뢰성 있는 전송을 보장하기 위한 계층이다.
물리 계층(Physical Layer) 전기적인, 기계적인 신호를 주고받는 역할을 하는 계층이다.

 

TCP/IP

  • TCP
    • 두 컴퓨터 간의 연결 지향 통신을 위한 전송 계층(Transport layer) 프로토콜이다.
    • 연결 지향적(Connection-oriented)이므로 연결 설정과 연결 해제 과정이 필요하다.
    • Three-way handshake로 연결 설정을 한다.
      1. 상대에게 통신을 하고 싶다는 메시지를 보낸다. (SYN)
      2. 상대는 그 메시지에 대한 응답 + 나도 통신 준비가 되었다는 메시지를 보낸다. (SYN-ACK)
      3. 2번에서 받은 메시지에 응답을 보낸다. (ACK)
    • 흐름 제어, 혼잡 제어를 통해 신뢰성을 보장한다.
      • 흐름 제어(Flow control) : 송신 측과 수신 측 사이의 데이터 처리 속도 차이를 해결하기 위한 기법
      • 혼잡 제어(Congestion control) : 네트워크의 혼잡을 피하기 위해 송신 측의 데이터 전송 속도를 제어하기 위한 기법
    • [네트워크] - TCP (흐름제어/혼잡제어)
  • IP
    • 송신 호스트와 수신 호스트가 정보를 주고받는 데 사용하는 프로토콜이다.
    • 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당한다.
    • 비 신뢰성 : 보낸 정보가 목적지까지 제대로 갔는지 보장하지 않는다.
    • 비 연결성 : 송신자와 수신자 사이에 연결을 확립하지 않고 데이터를 전송한다.

 

 

IP

 

Packet

  • 네트워크 전송의 용량 단위를 말한다.
  • 큰 데이터를 작은 패킷들로 분할하여 전송한다.
  • Header

  • IPv4 헤더
Version IP 버전 정보
IHL (Header Length) 헤더의 길이
TOS (Type of Service) 서비스의 우선 순위
Total Length Payload까지 포함한 패킷의 길이
Identification 분열이 발생한 경우, 다시 패킷을 조합할 때의 조합번호
IP Flag(D, M) 패킷의 단편화 여부
Fragment Offset 분열되기 전의 총 길이
TTL (Time to Live) 패킷이 소멸되기 전 이동할 수 있는 단계의 수
Procotol 상위 프로토콜
Check Sum 헤더 오류체크

 

IPv4

  • 패킷 교환 네트워크 상에서 데이터를 교환하기 위한 프로토콜이다.
  • 비 신뢰성 : 데이터가 정확하게 전달될 것을 보장하지 않고, 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다. (비 신뢰성)
  • 신뢰성은 그보다 상위 프로토콜인 TCP에서(그리고 UDP에서도 일부) 보장한다.
  • IPv4 주소는 32비트로 구성되어 있다. 네 부분으로 나뉘며 각 부분은 0~255사이의 수로 표현된다.
  • IP주소는 인터넷주소자원 관리기관에서 부여한 네트워크 주소와 네트워크 상의 개별 호스트를 식별하기 위하여 네트워크 관리자가 부여한 호스트 주소로 구성된다.
  • IPv4 주소체계
  • 한국인터넷정보센터(KRNIC)

IPv6

  • 인터넷 프로토콜 스택 중 네트워크 계층의 프로토콜로서 버전 6 인터넷 프로토콜(version 6 Internet Protocol)로 제정된 차세대 인터넷 프로토콜을 말한다.
  • Pv4 프로토콜의 주소가 32비트라는 제한된 주소 공간 및 국가 별로 할당된 주소가 거의 소진되고 있다는 한계로 인해 지속적인 인터넷 발전에 문제가 예상되어, 이에 대한 대안으로서 IPv6 프로토콜이 제안 되었다.
  • IPv6 주소의 길이는 128비트로 늘어났다.
  • IPv6 주소는 16비트 단위로 구분하며, 각 단위는 16진수로 변환되어 콜론(:)으로 구분하여 표기한다.
  • 한국인터넷정보센터(KRNIC)

Domain

  • 넓은 의미로는 네트워크 상에서 컴퓨터를 식별하는 호스트 명을 가리키며, 좁은 의미에서는 도메인 레지스트리에게서 등록된 이름을 의미한다.
  • ip는 사람이 이해하고 기억하기 어렵기 때문에 각 ip에 이름을 부여할 수 있도록 한 것이다.
  • 도메인은 컴퓨터의 이름과 최상위 도메인으로 구성되어 있다.
  • 도메인이란? - 생활코딩

 

 

Port

 

서버에서 포트란?

프로토콜별 포트 번호 정리

20 FTP 데이터 포트
21 FTP 제어 포트
22 SSH  
22 SFTP  
23 Telnet 암호화되지 않은 텍스트 통신
25 SMTP 이메일 전송에 사용
53 DNS 도메인 네임 시스템
80 HTTP  
443 HTTPS  
514 Syslog 시스템 로그 작성

TCP/UDP의 포트 목록 - 위키백과, 우리 모두의 백과사전

 

포트리스닝

인바운드 / 아웃바운드

  • 인바운드 : 서버 내부로 들어오는 것을 말한다.
  • 인바운드 규칙 : 클라이언트가 서버 데이터에 들어올 수 있는 규칙을 의미한다.
  • 아웃바운드 : 서버 바깥으로 나가는 것을 말한다.
  • 아웃바운드 규칙 : 서버에서 나갈 수 있는 데이터에 대한 규칙을 의미한다.

데몬(Daemon)

  • 특정 서비스를 위해 백그라운드 상태에서 계속 실행되는 서버 프로세스를 말한다.
  • 서비스마다 각 서비스가 사용하는 port를 관리하는 데몬이 존재한다.
  • 데몬은 서버가 부팅될 때 메모리에 로딩이 되고 서버가 죽을 때까지 자원을 계속 할당받는다.

Port forwarding

  • 패킷이 라우터나 방화벽 같은 네트워크 게이트웨이를 통과하는 동안 네트워크 주소를 변환해주는 것을 의미한다.
  • 원격 컴퓨터가 근거리 통신망(LAN) 내에 위치한 특정 컴퓨터나 서비스에 연결할 수 있게 한다.
  • 포트 포워딩이란?
  • 공유기
    • WAN
      • 광역 통신망
      • 지리적으로 흩어져 있는 통신망을 의미한다.
      • 지방과 지방, 대륙과 대륙처럼 지리적으로 완전하게 떨어져 있는 장거리 지역 사이를 연결하고 있는 통신망이다.
    • LAN
    • 외부 IP (공인 IP)
      • 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다.
      • 외부의 공개되어 있는 IP 주소이고 전세계에서 유일한 IP 주소를 갖는다.
    • 내부 IP (사설 IP)
      • 일반 가정이나 회사 등에 할당된 네트워크의 IP 주소이다.
      • 라우터에 의해 로컬 네트워크상의 PC나 장치에 할당된다.
    • 외부 포트
      • 외부에서 내부의 서버로 접속할 때 사용하는 포트이다.
    • 내부 포트
      • 외부에서 외부 포트로 접속한 기기를 연결해줄 내부의 포트 번호
    • 게이트웨이
      • 한 네트워크에서 다른 네트워크로 이동하기 위하여 거쳐야 하는 지점이다.
      • 서로 다른 네트워크를 연결해주고 서로 다른 네트워크 상의 통신 프로토콜을 적절히 변환해주는 역할을 한다.
    • 방화벽
      • 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템이다.
      • 네트워크를 통과하는 데이터를 허용하거나 거부하거나 검열, 수정한다.
      • 내부와 외부의 접속 상황을 감시할 수 있어 병목 현상을 파악하는 데에도 활용할 수 있다.
      • [Network] Windows 방화벽 - 인바운드 / 아웃바운드

 

 

추가 개념 키워드

TCP vs UDP

[Network] TCP / UDP의 개념과 특징, 차이점

 

UDP

  • TCP처럼 어플리케이션에 데이터를 전달하기 위한 비 연결 지향적 전송 계층(Transport layer) 프로토콜이다.
  • 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 보낸다.
  • 데이터 전달의 신뢰성이 떨어진다.
  • 패킷들이 서로 다른 통신 선로를 통해 전달될 수 있으므로 패킷들의 순서가 바뀌어 전달될 수 있다.
  • 중간에 패킷이 유실되거나 변조되어도 재전송을 하지 않는다.

TCP 예시

  • TCP는 순서를 보장한다는 점과 신뢰도가 있다는 점에서 대부분의 HTTP 통신, 온라인 채팅처럼 순서대로 도착해야 하는 상황에서 사용된다.

UDP 예시

  • UDP는 순서는 보장해주지 못하지만 실시간으로 반응해야 하는 실시간 동영상 플레이어나 게임, 혹은 DNS에서 사용한다.

 

DNS(Domain Name Server)

  • 컴퓨터의 도메인 이름을 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.
  • DNS는 도메인 네임 계층을 관리하며 해당 네임 계층과 주소 공간 간의 변환 서비스를 제공한다.

 

Proxy

  • 보안 상의 이유로 직접 통신할 수 없는 두 점 사이에서 통신을 할 경우 프록시를 통해 중계를 한다.
  • 클라이언트는 프록시 서버를 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있다.
  • 프록시 서버는 컴퓨터 네트워크에서 다른 서버상의 자원을 찾는 클라이언트의 요청을 받아 중계하는 서버이다.
  • 프록시는 크게 Forward proxy와 Reverse proxy 로 나뉜다.
  • 프록시 서버 란? Proxy Server
  • [10분 테코톡] 🐿 제이미의 Forward Proxy, Reverse Proxy, Load Balancer

Forward proxy

  • 프록시 서버를 클라이언트들과 접근하고자 하는 원격 리소스 사이에 위치 시키는 것이다.
  • 프록시 서버는 원격 서버로부터 요청된 리소스를 가져와서 요청한 사용자에게 돌려주는 역할을 수행한다.
  • 캐시를 사용하여 캐시에 데이터가 남아 있다면 다음 요청 시 캐시에서 데이터를 가져오므로 성능 향상이 가능하다.
  • 로컬 디스크에 데이터를 저장하며 클라이언트들은 사용 중인 웹 브라우저를 이용해 프록시 서버 사용 설정을 해야 하므로 프록시 서버를 사용하고 있다는 것을 인식할 수 있다.

Reverse proxy

  • 프록시 서버를 인터넷 리소스 또는 인트라넷 리소스 앞에 위치시키는 방식이다.
  • 실제 서비스 서버는 내부망에 위치시키고 프록시 서버만 내부에 있는 서비스 서버와 통신하여 결과를 클라이언트에게 제공하는 방식으로 서비스한다.
  • 클라이언트들은 프록시 서버에 연결되었다는 것을 알지 못하게 되며 마치 최종 사용자가 요청 리소스에 직접 접근하는 것과 같이 느끼게 된다.
  • 각 요청에 대한 데이터가 캐시되기 때문에 프록시 서버는 실제 서버들을 위한 부하조절 기능을 수행할 수 있다.

Forward Proxy, Reverse Proxy 정의와 차이점

 

 

네트워크 장비

 

라우터

  • LAN을 연결해주는 장치로, 패킷에 담긴 목적지의 주소를 읽고 가장 적절한 통신경로를 이용하여 다른 통신망으로 전송하는 장치이다.
  • 서로 다른 프로토콜로 운영하는 통신망에서 정보를 전달하기 위해 경로를 설정하는 역할을 제공하는 핵심적인 통신 장비이다.
  • 통신 흐름을 제어하며 통신망 내부에 여러 보조 통신망을 구성하는 등의 다양한 통신망 관리 기능을 수행한다.

허브

  • 전기적인 신호를 증폭시켜 LAN의 전송거리를 연장시키고 여러 대의 디바이스를 연결해 네트워크를 만들어주는 장비이다.
  • 허브로 연결된 네트워크에서 하나의 디바이스에서 전송된 데이터 프레임을 허브로 연결된 모든 디바이스에게 전부 전송하는 플러딩이 발생한다.

스위치

  • 허브는 한 디바이스에서 발생하는 Collision이 허브에 연결된 모든 영역의 노드들에게 영향을 미치지만 스위치는 Collision Domain을 나누어준다.
  • 자신에게 연결된 디바이스들의 MAC 주소와 포트가 기록된 MAC 주소 테이블을 가지고 있다. 프레임이 자신에게 오면 목적지가 어디인지 파악하여 그 디바이스에게 프레임을 보낸다.
  • 데이터의 전송 에러를 복구해주는 기능을 가지고 있다.

공유기

  • ISP 업체에서 제공하는 한 개의 인터넷 IP 주소로 여러 대의 컴퓨터, 노트북 등이 인터넷을 공유할 수 있도록 한다.
  • ISP에서 할당받은 하나의 IP 주소를 내부 네트워크에서 여러 개의 IP 주소로 변환한다.

허브 / 스위치 / 라우터 / 공유기 차이 및 비교

 

이더넷(Ethernet)

  • 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격이다.
  • 물리 계층에서 신호와 배선, 데이터 링크 계층에서 MAC 패킷과 프로토콜 형식을 정의한다.

MAC 주소

  • 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자이다.
  • 대체적으로 네트워크 인터페이스 컨트롤러(NIC)의 제조업체가 할당하며 하드웨어에 저장된다.

'개발 > Backend' 카테고리의 다른 글

[Work Book] UMC 서버 5주차  (0) 2021.11.07
[Work Book] UMC 서버 4주차  (0) 2021.11.04
[Work Book] UMC 서버 3주차  (0) 2021.10.18
Quick DBD 사용 후기  (0) 2021.10.10
[Work Book] UMC 서버 1주차  (0) 2021.10.02