# 16. TIL

이지훈·2021년 5월 27일
1

TIL

목록 보기
16/33
post-thumbnail

유투브 생활코딩님의 영상을 보고 정리해보았습니다.

1. Home Server란?

홈 서버란 개인이 소규모의 인원을 대상으로 서비스를 제공하는 가정용 서버를 말합니다.

홈 서버는 넓은 의미에서 NAS, HTPC, Home Lab을 포함합니다.

  • 파일저장과 공유의 측면을 부각하기 위해 Network Attached Storage(NAS)라고 부르기도 합니다.
  • 소비의 측면으로 보자면 엔터테인먼트 용 오디오 및 비디오를 제공하는 것을 주 목적으로하는 컴퓨터를 Home Theater PC(HTPC)로 부릅니다.
  • 홈 서버에 여러가지 가상화 기술을 적용하기 시작했는데 이를 Home Lab이라고 부릅니다.

비머맥 블로그, ZAPTECH.NET 블로그


2. Network Address Translation란?

Network Address Translation(NAT)은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술입니다.

2-1. NAT가 필요한 이유

패킷의 포트 숫자에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 합니다. 그 이유는 보통 공유기를 이용한 Wi-Fi 사용을 하기 때문인데, 사설 네트워크에 속한 여러개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함입니다.

기본적으로 IPv4를 사용하여 네트워크 주소를 할당하는데 NAT는 IPv4의 주소 부족 문제를 해결하기 위한 방법으로 탄생하였으며, local(사설, 가정용) 네트워크 주소를 Public(공공망, 인터넷)과의 통신을 위해 네트워크 주소로 변환합니다.

개발자를 꿈꾸는 프로그래머 블로그, 생활코딩


3. Public(공인) & Private(사설) IP

3-1. IP와 Host

3-1-1. IP address(Internet Protocol address)

두 대의 컴퓨터인 서버-클라이언트가 통신할 때, 클라이언트는 웹브라우저에 request를 한다. 이 때 클라이언트는 자신의 주소를 담아서 보내는데 이를 IP address라고 합니다.

3-1-2. Host

Host는 IP 주소를 갖는 시스템입니다. 즉, 네트워크를 이용하기 위해 네트워크에 연결된 모든 장치가 Host입니다.

3-2. Public IP

공인 IP (Public IP Address)는 공인이 된 IP를 뜻(전세계에서 유일)하며. 전세계적으로 ICANN이라는 기관이 국가별로 사용할 IP 대역을 관리하고 우리 나라는 인터넷 진흥원(KISA, 한국의 인터넷 서비스 공급자)에서 우리나라 내에서 사용할 주소를 관리합니다.

  • 인터넷 상에서 유일한 주소입니다.
  • 내/외부에서 접근이 가능합니다.(공개성)

3-2-1. Public IP Address

  • Class A : 1 ~ 126 (각각 16M개의 호스트)
  • Class B : 128 ~ 191 (각각 65,536개의 호스트)
  • Class C : 192 ~ 223 (각각 356개의 호스트)
  • Class D : 224 ~ 239 (멀티캐스트 모드)
  • Class E : 240 ~ 255 (미 지정 예약 상태)

3-3. Private IP

사설 IP는 네트워크(Network) 안에서 사용되는 주소.( 내부적으로 사용되는 고유한 주소 )로 사설 IP는 하나의 네트워크 안에서 유일하며. 사설 IP(private IP)는 이 이름에서 보듯이 인터넷상에서 확인할 수 없고, 내부 네트워크에서만 사용 가능한 IP를 말합니다.

가정이나, 소규모 사무공간에서 공유기 / 라우터 등의 장비가 하나의 공인 IP를 할당 받고 NAT방식을 통해 여러 컴퓨터가 나누어 쓰는 방식으로 사용될 때 주로 사용합니다.

  • 하나의 네트워크 안에서 유일합니다.
  • 외부에서 접근이 불가능합니다.(폐쇄성)

3-3-1. Private IP Class(사설 IP 대역)

  • A Class 1개 : 10.0.0.0 - 10.255.255.255 (8 bit prefix)
  • B Class 16개 : 172.16.0.0 - 172.31.255.255 (12 bit prefix)
  • C Class 256개 : 192.168.0.0 - 192.168.255.255 (16 bit prefix)

CODNS, groom님 벨로그, leejiwonn님 벨로그


4. Port

Port란 서버가 사용자의 웹페이지 요청이나 파일요청을 구분하기 위해 사용합니다.

4-1. Port Number

포트는 번호로 나누어서 관리를 하며 일반적으로 IP address 뒤에 콜론(:)을 이용하여 표기합니다.
ex) 182.143.421.211:443

  • 0 ~ 1023 : Well Known Port (IANA에서 할당한 TCP, UDP 포트) : 유명한 서버, 특정 서버
  • 1024 ~ 49151 : Registered Port (기관이나 사업자들을 위해 IANA에서 관리하는 포트)
  • 49152 ~ 65535 번 : Dynamic Port (일반 사용자들이 자유롭게 사용할 수있는 포트)

4-1-1. 중요한 Port 번호

20 - FTP(data)
21 - FTP(제어)
22 - SSH
23 - Telnet
25 - SMTP
53 - DNS
80 - HTTP
110 - POP3
443 - HTTPS

4-2. Port Forwarding

Port ForwardingPort Mapping이라고도 불리며 공유기에게 이정표 🚳를 달아줘서 지정된 주소를 잘 찾을 수 있게끔 도와주는 것을 포트포워딩이라고 합니다.

개발자 지망생 블로그, 박과장 소프트웨어 이야기


5. Dynamic & Static IP Address

5-1. dynamic IP address 탄생 배경

처음 인터넷을 착상해 낼 당시에는, 지금처럼 엄청나게 많은 개수의 IP 주소가 필요할 것이라는 것을 미처 예상하지 못했던 것 같습니다.

그 결과 우리가 현재 사용하고 있는 체계의 IP 주소는 이 세상의 모든 사람들에게 부여할 만큼 충분한 량이 아니라는 것이 드러나게 되었습니다.

이러한 주소 부족 문제를 타결하기 위해 많은 ISP들은 고정 IP 주소를 부여하는 것을 제한하고, DHCP 서버를 이용 필요할 때마다 임시적으로 IP 주소를 부여하였다가, 사용 후에는 회수하는 정책으로 선회하게 되었습니다.

이때 임시로 부여되는 IP 주소가 바로 유동 IP 주소(Dynamic IP address)입니다.

5-2. Static IP Address가 Home Server에 필요한 이유

인터넷 상에서 컴퓨터를 찾거나 서로간에 데이터를 주고받기 위해서는 IP 주소를 사용한다.

만약 누군가가 velog.io/wlgns410(내주소)를 방문하려면, 타인의 컴퓨터가 DNS 서버에서 velog.io/wlgns410에 할당된 정확한 IP 주소를 물어 알아낸 다음, 이를 velog.io/wlgns410 서버에 접속하기 위한 주소로 사용한다.

하지만 이 IP 주소가 계속 바뀐다면, 사이트를 방문하기 어렵기때문에 할당값을 고정시켜놓는 것이다.

Whatis.com


6. Domain Name System(DNS)

대다수의 인터넷 사용자는 IP주소를 외우기 어렵습니다. 저는 핸드폰 번호도 잘 못 외우는...

하지만 도메인 이름은 잘 기억하고 있습니다.(ex. google.com)

그래서 이 IP주소와 도메인을 서로 변환하는 역할이 필요했는데 이것을 DNS가 담당합니다.

즉, DNS 서버는 이런 도메인이름과 그에 맞는 IP주소 정를 가지고 있는 서버를 말합니다.

6-1. Dynamic Domain Name System(DDNS)

동적 DNS라는 것은 Dynamic IP address와 비슷한 개념으로 유동적으로 바뀌는 DNS 주소를 이용하여 실시간으로 DNS를 갱신하는 방법입니다.

일반적으로 이용하는 포털사이트, 기업, 기관의 홈페이지들은 기관 또는 기업에서 소유하고있는 고정IP를 통해서 DNS주소를 할당 받습니다.

하지만 가정 또는 개인 단위에서 고정IP를 할당받기위해서는 많은 비용이 들고 기관, 기업에서 사용하는것과 같은 보안 시스템등이 없기 때문에 IP추적 또는 사생활 침해에 노출될 수 있습니다.

만약 유동IP에 DNS주소를 할당하면 IP가 변경되기 전까지는 정상적으로 작동하지만 IP가 바뀌고 기존 IP주소를 다른 사용자가 할당받는다면 엉뚱한 사람에게 트래픽이 가게됩니다.

이를 해결하기 위해 나온 기술이 DDNS이며 IP주소가 변경되게되면 DNS에 IP를 바뀐 IP주소로 갱신해 주기때문에 IP주소가 변경되더라도 편리하게 사용이 가능합니다.

취미로하자 블로그

6-2. 도메인 이름 등록 시스템 구조

등록자(Registrant) : 개인 도메인 주소를 쓰고 싶다.
등록대행자(Registrar) : 개인의 도메인 등록 작업을 대행한다.
등록소(Registry) : 도메인 네임 서버를 관리하는 기관
ICANN : DNS system 최상단에 위치하여 IP 주소를 관리하고 루트 네임 서버들에 대한 관리자 역할을 한다.

Cloudflare 참고, ssun 블로그 참고


7. HTTP의 동작원리

7-1. HyperText Transfer Protocol(HTTP)

7-1-1. HTTP의 탄생배경

Hypertext는 사용자가 한 웹페이지 문서에서 다른 웹페이지 문서로 넘어가면서 즉시 접근할 수 있는 텍스트를 말합니다.

클라이언트가 원하는 IP주소에 여러가지의 Object가 있었으면 TCP connection(전송 제어 프로토콜) + HTTP 전송 작업을 계속해야한다.

만약 Server 측에 일정시간동안 TCP connection을 delay시키면 Overhead가 발생할 필요가 없다.

그래서 일정한 timeout을 두는 Persistent HTTP가 탄생하였다. 😃

  • Overhead : 특정 기능을 수행하기 위해 추가적으로 필요한 특정 자원을 말하며, 데이터베이스 시스템 측면에서 이러한 자원이 필요하다는 것이 부담이 된다는 뜻이다.

  • Object의 종류 : Domian Object, Data Access Object, Domain Transfer Object 등이 있다.

My Story 블로그, Slight Edge 블로그 - Object 참고

7-1-2. Cookie의 생성 배경

HTTP에서 Server의 client request의 정보는 Cookie가 가지고 있다. 그렇다면 왜 생긴걸까? 🤔

클라이언트가 HTTP request를 보낼 때, 서버는 response로 HTTP response Header에 set-cookie를 보냅니다.

이와 동시에 Server Back-End Database에 정보를 저장하게 됩니다.

7-1-3. Cookie와 Session의 차이점

둘 다 정보를 갖고 있다는 것이 공통점이지만 큰 차이점이 있다.

  • Cookie : 정보를 클라이언트측에서 HTTP Request msg에 달고 다녀서 보안에 취약하지만, 속도가 빠르다.
  • Session : 정보를 Server에서 보관하기 때문에 비교적 안전하지만, 클라이언트마다 발급된 Session ID를 HTTP Request의 Header에 있는 Cookie를 보고 판단하기 때문에(Server에서 Mapping된 정보를 참고한 뒤 판단한다는 뜻) 속도가 느리다.

Kimbregas 블로그

다음과 같은 과정을 거쳐 HTTP는 동작하게 됩니다.
TCP School.com를 참고해 주시길 바랍니다.


8. Transmission Control Protocol(TCP)의 동작원리

서버와 클라이언트의 데이터 전송을 신뢰성있게 전달하기 위해 만들어진 프로토콜이다.

  • 신뢰성 : 손상된 데이터가 있다면 복구해야한다. 신뢰성을 실현하기 위해 적극적 수신, 통지, 재전송 체계등을 사용한다.

  • 흐름 제어 : 컴퓨터는 CPU와 네트워크의 대역폭 차이 때문에 서로 다른 데이터 속도로 작동하는데, 송신자가 더 빠른 속도로 수신자에게 데이터를 보내기 때문에 오류가 발생한다. 여기서 TCP는 송신자가 보내는 데이터의 양을 제어하는 흐름 제어 메커니즘을 구현한다.

  • 다중화 : TCP는 응용프로그램에 Port 번호 값을 연계시킨다. 각 포트의 연계는 다른 포트의 쌍을 사용하므로 응용프로그램 프로세스들 사이에 여러 연결이 존재하게 된다. 이것을 다중화라고 한다.

곰돌이의 데이터 기록부

  • 클라이언트가 서버에 연결 요청(SYN)
  • 서버는 연결 요청에 대한 응답과 통신 준비 완료에대한 메세지를 보낸다
  • 클라이언트는 서버의 메세지에 응답 메시지를 보낸다.

Tech Interview


9. HTTPS와 SSL

9-1. HTTPS란?

HyperText Transfer Protocol Secure라는 뜻으로 보안이 강화된 통신규약이다.

암호화를 한 방법으로 클라이언트가 서버에 데이터를 전송하기 때문에 타인이 메시지를 알아내기 어렵다.

HTTPS는 SSL 프로토콜 기반으로 돌아가는 프로토콜이다.

9-2. SSL이란?

SSL 3.0(=TSL 1.0) 인증서란 클라이언트와 서버간의 통신을 제 3자가 보증해주는 문서이다.

9-2-1. SSL의 장점

  • 전달 메시지가 타인에게 암호화를 이용하여 노출되는 것을 막는다.(대칭키, 공개키)
  • 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지 알 수 있다.
  • 전달되는 내용이 악의적으로 변경되는 것을 막을 수 있다.

9-2-2. SSL 통신 과정

  1. Client Hello : 클라이언트가 브라우저나 TCP 통신을 통해 서버에 접속하며 랜덤한 데이터를 생성해 서버에 전송한다.
  2. Server Hello : 클라이언트에 대한 응답으로 서버에서 랜덤한 데이터를 클라이언트에 전송한다.
  3. CA list 확인 : 클라이언트 서버가 보내준 인증서가 어떤 CA에 의해 발급된건지 확인하기위해 클라이언트 내장 CA list를 확인한다.
  4. Pre Master Secret 값 복호화 : 3단계 과정에서 서버는 클라이언트가 전송한 Pre Master Secret 값을 서버의 비공개키로 복호화를 한다.

Ailyn의 기술 블로그, 초보몽키의 개발블로그

profile
꾸준하게 🐌

0개의 댓글