유투브
생활코딩
님의 영상을 보고 정리해보았습니다.
홈 서버란 개인이 소규모의 인원을 대상으로 서비스를 제공하는 가정용 서버를 말합니다.
홈 서버는 넓은 의미에서 NAS
, HTPC
, Home Lab
을 포함합니다.
Network Address Translation(NAT)은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술입니다.
패킷의 포트 숫자에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 합니다. 그 이유는 보통 공유기를 이용한 Wi-Fi 사용을 하기 때문인데, 사설 네트워크에 속한 여러개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함입니다.
기본적으로 IPv4를 사용하여 네트워크 주소를 할당하는데 NAT는 IPv4의 주소 부족 문제를 해결하기 위한 방법으로 탄생하였으며, local(사설, 가정용) 네트워크 주소를 Public(공공망, 인터넷)과의 통신을 위해 네트워크 주소로 변환합니다.
두 대의 컴퓨터인 서버-클라이언트가 통신할 때, 클라이언트는 웹브라우저에 request를 한다. 이 때 클라이언트는 자신의 주소를 담아서 보내는데 이를 IP address라고 합니다.
Host는 IP 주소를 갖는 시스템입니다. 즉, 네트워크를 이용하기 위해 네트워크에 연결된 모든 장치가 Host입니다.
공인 IP (Public IP Address)는 공인이 된 IP를 뜻(전세계에서 유일)하며. 전세계적으로 ICANN이라는 기관이 국가별로 사용할 IP 대역을 관리하고 우리 나라는 인터넷 진흥원(KISA, 한국의 인터넷 서비스 공급자)에서 우리나라 내에서 사용할 주소를 관리합니다.
인터넷
상에서 유일한 주소입니다.내/외부
에서 접근이 가능합니다.(공개성)사설 IP는 네트워크(Network) 안에서 사용되는 주소.( 내부적으로 사용되는 고유한 주소 )로 사설 IP는 하나의 네트워크 안에서 유일하며. 사설 IP(private IP)는 이 이름에서 보듯이 인터넷상에서 확인할 수 없고, 내부 네트워크에서만 사용 가능한 IP를 말합니다.
가정이나, 소규모 사무공간에서 공유기 / 라우터 등의 장비가 하나의 공인 IP를 할당 받고 NAT방식을 통해 여러 컴퓨터가 나누어 쓰는 방식으로 사용될 때 주로 사용합니다.
네트워크
안에서 유일합니다.외부
에서 접근이 불가능합니다.(폐쇄성)CODNS, groom님 벨로그, leejiwonn님 벨로그
Port란 서버가 사용자의 웹페이지 요청이나 파일요청을 구분하기 위해 사용합니다.
포트는 번호로 나누어서 관리를 하며 일반적으로 IP address 뒤에 콜론(:)을 이용하여 표기합니다.
ex) 182.143.421.211:443
20 - FTP(data)
21 - FTP(제어)
22 - SSH
23 - Telnet
25 - SMTP
53 - DNS
80 - HTTP
110 - POP3
443 - HTTPS
Port Forwarding
은 Port Mapping
이라고도 불리며 공유기에게 이정표 🚳를 달아줘서 지정된 주소를 잘 찾을 수 있게끔 도와주는 것을 포트포워딩이라고 합니다.
처음 인터넷을 착상해 낼 당시에는, 지금처럼 엄청나게 많은 개수의 IP 주소가 필요할 것이라는 것을 미처 예상하지 못했던 것 같습니다.
그 결과 우리가 현재 사용하고 있는 체계의 IP 주소는 이 세상의 모든 사람들에게 부여할 만큼 충분한 량이 아니라는 것이 드러나게 되었습니다.
이러한 주소 부족 문제를 타결하기 위해 많은 ISP들은 고정 IP 주소를 부여하는 것을 제한하고, DHCP 서버를 이용 필요할 때마다 임시적으로 IP 주소를 부여하였다가, 사용 후에는 회수하는 정책으로 선회하게 되었습니다.
이때 임시로 부여되는 IP 주소가 바로 유동 IP 주소(Dynamic IP address)입니다.
인터넷 상에서 컴퓨터를 찾거나 서로간에 데이터를 주고받기 위해서는 IP 주소를 사용한다.
만약 누군가가 velog.io/wlgns410(내주소)를 방문하려면, 타인의 컴퓨터가 DNS 서버에서 velog.io/wlgns410에 할당된 정확한 IP 주소를 물어 알아낸 다음, 이를 velog.io/wlgns410 서버에 접속하기 위한 주소로 사용한다.
하지만 이 IP 주소가 계속 바뀐다면, 사이트를 방문하기 어렵기때문에 할당값을 고정시켜놓는 것이다.
대다수의 인터넷 사용자는 IP주소를 외우기 어렵습니다. 저는 핸드폰 번호도 잘 못 외우는...
하지만 도메인 이름은 잘 기억하고 있습니다.(ex. google.com)
그래서 이 IP주소와 도메인을 서로 변환하는 역할이 필요했는데 이것을 DNS가 담당합니다.
즉, DNS 서버는 이런 도메인이름과 그에 맞는 IP주소 정를 가지고 있는 서버를 말합니다.
동적 DNS라는 것은 Dynamic IP address
와 비슷한 개념으로 유동적으로 바뀌는 DNS 주소를 이용하여 실시간으로 DNS를 갱신하는 방법입니다.
일반적으로 이용하는 포털사이트, 기업, 기관의 홈페이지들은 기관 또는 기업에서 소유하고있는 고정IP를 통해서 DNS주소를 할당 받습니다.
하지만 가정 또는 개인 단위에서 고정IP를 할당받기위해서는 많은 비용이 들고 기관, 기업에서 사용하는것과 같은 보안 시스템등이 없기 때문에 IP추적 또는 사생활 침해에 노출될 수 있습니다.
만약 유동IP에 DNS주소를 할당하면 IP가 변경되기 전까지는 정상적으로 작동하지만 IP가 바뀌고 기존 IP주소를 다른 사용자가 할당받는다면 엉뚱한 사람에게 트래픽이 가게됩니다.
이를 해결하기 위해 나온 기술이 DDNS이며 IP주소가 변경되게되면 DNS에 IP를 바뀐 IP주소로 갱신해 주기때문에 IP주소가 변경되더라도 편리하게 사용이 가능합니다.
등록자(Registrant) : 개인 도메인 주소를 쓰고 싶다.
등록대행자(Registrar) : 개인의 도메인 등록 작업을 대행한다.
등록소(Registry) : 도메인 네임 서버를 관리하는 기관
ICANN : DNS system 최상단에 위치하여 IP 주소를 관리하고 루트 네임 서버들에 대한 관리자 역할을 한다.
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 참고
HTTP에서 Server의 client request의 정보는 Cookie가 가지고 있다. 그렇다면 왜 생긴걸까? 🤔
클라이언트가 HTTP request를 보낼 때, 서버는 response로 HTTP response Header에 set-cookie
를 보냅니다.
이와 동시에 Server Back-End Database에 정보를 저장하게 됩니다.
둘 다 정보를 갖고 있다는 것이 공통점이지만 큰 차이점이 있다.
다음과 같은 과정을 거쳐 HTTP는 동작하게 됩니다.
TCP School.com를 참고해 주시길 바랍니다.
서버와 클라이언트의 데이터 전송을 신뢰성있게 전달하기 위해 만들어진 프로토콜이다.
신뢰성 : 손상된 데이터가 있다면 복구해야한다. 신뢰성을 실현하기 위해 적극적 수신, 통지, 재전송 체계등을 사용한다.
흐름 제어 : 컴퓨터는 CPU와 네트워크의 대역폭 차이 때문에 서로 다른 데이터 속도로 작동하는데, 송신자가 더 빠른 속도로 수신자에게 데이터를 보내기 때문에 오류가 발생한다. 여기서 TCP는 송신자가 보내는 데이터의 양을 제어하는 흐름 제어 메커니즘을 구현한다.
다중화 : TCP는 응용프로그램에 Port 번호 값을 연계시킨다. 각 포트의 연계는 다른 포트의 쌍을 사용하므로 응용프로그램 프로세스들 사이에 여러 연결이 존재하게 된다. 이것을 다중화라고 한다.
HyperText Transfer Protocol Secure라는 뜻으로 보안이 강화된 통신규약이다.
암호화를 한 방법으로 클라이언트가 서버에 데이터를 전송하기 때문에 타인이 메시지를 알아내기 어렵다.
HTTPS는 SSL 프로토콜 기반으로 돌아가는 프로토콜이다.
SSL 3.0(=TSL 1.0) 인증서란 클라이언트와 서버간의 통신을 제 3자가 보증해주는 문서이다.