Book Study/웹 엔지니어가 알아야 할 인프라의 기본

Chapter 2. 인프라 기술의 기초 지식 -1

cocologue 2021. 3. 7. 18:37

2.1 인터넷이라는 거대한 네트워크 / 2.2 인터넷을 통한 데이터 송수신 구조

  인터넷은 IP주소로 이루어져 있는 하나의 거대한 네트워크이다. IP주소란 '.'으로 구분되는 4개의 숫자 배열로, 네트워크에 연결된 모든 기기는 이러한 IP주소가 할당되어 있어 각자의 IP주소를 통해 서로 통신을 한다. IP주소는 전 세계적으로 중복되지 않도록 관리되는 글로벌 IP주소(공인 IP)와 회사나 가정 등에서 자유롭게 사용되는 로컬 IP주소(사설 IP)로 구분되고 있으며, 로컬 IP주소로 통신하는 네트워크에서는 어느 하나의 기기가 글로벌 IP를 가지게 되어 로컬 네트워크와 글로벌 네트워크의 중계를 하게 된다. 추가로 넷마스크(NetMask)라는 구성을 통해서 연속하는 IP주소를 그룹핑이 가능한데, IP주소와 넷마스크를 활용하게 되면 한정된 자원인 IP주소를 잘게 나누어 사용할 수 있다.

 

[로컬 IP주소로 사용 가능 한 대역]

매우 큰 규모의 네트워크용 10.0.0.0 ~ 10.255.255.255
중간 규모의 네트워크용 172.16.0.0 ~ 172.31.255.255
작은 규모의 네트워크용 192.168.0.0 ~ 192.168.255.255

  여기서, '127.0.0.1~127.255.255.254' 대역은 로컬 루프백 주소, '169.254.0.0~169.254.255.255' 대역은 링크 로컬 주소라고 따로 지칭한다. 로컬 루프백 주소 중 '127.0.0.1'의 경우에는 서버 자기 자신을 가리키는 IP주소로 통용되고 있다. 링크 로컬 주소는 DHCP모드에서 IP주소 할당에 실패하였을 경우 이용하게 된다.

 

  도메인은 기기에 할당 된 IP주소를 알기 쉽도록 해주는 것으로, 'example.com'과 같은 형식으로 표현된다. IP주소와 도메인은 DNS(Domain Name Server)를 통해 연결되어 매칭 되는데, 이때 DNS는 시스템 별로 서버 관리자가 직접 DNS 서버를 관리하는 것이 가능하지만, 도메인 취득 대행사업자 등이 관리하고 있는 DNS 서버에 위탁하여 관리하는 경우가 많다. 도메인은 전문 사업자를 통해 취득하여야 하며, 전 세계적으로 중복되지 않도록 보장된다('whois.co.kr'이나 'Amazon Web Services Route53' 같은 사업자를 통해 취득 가능하다).

  도메인은 가장 오른쪽에 배치되는 최상위 도메인(TLD)과 속성, 개별 명칭으로 이루어져 있는데, TLD는 '. com'이나 '. net'과 같이 국가와 관계없는 'gTLD(generic Top Level Domain)'와 '. kr'처럼 국가를 나타내는 'ccTLD(country code Top Level Domain)'로 이루어져 있다. ccTLD에는 'co(회사)' 또는 'go(정부)'와 같이 속성을 나타내는 부호가 붙기도 하며, 이러한 도메인은 각각의 속성에 따라 개별적인 규칙에 의해 발급된다('co.kr'의 경우 회사마다 한 개만 취득이 가능하다).

 

[도메인 구성 요소]

FQDN(Fully Qualified Domain Name)

  DNS는 앞서 설명한 것과 같이 IP주소와 FQDN을 서로 변환하는 것으로, 하나의 FQDN에 여러 개의 IP주소를 연결하거나 그 반대의 경우도 연결이 가능하다. FQDN을 IP주소로 변환하는 것 외에 IP주소를 FQDN으로 변환하게 되는 경우를 reverse DNS라고 부르는데, reverse DNS는 1:1 매칭의 특징을 지닌다. DNS의 연결 정보는 '레코드'라고 부르며, 이러한 레코드들은 유효시간(TTL)을 따로 지정이 가능하지만 TTL을 따르지 않는 클라이언트로 인해 완벽하게 전환을 하기는 어려운 점이 있다.

 

[DNS의 주요 레코드 종류와 의미]

레코드의 종류 의미
A 주소 정보(IP주소)를 설정한다.
PTR 포인터(도메인 이름에 대응하는 IP주소)를 설정한다.
NS 네임 서버를 설정한다.
CNAME Canonical NAME(정식명칭)을 설정한다(alias와 유사).
TXT 도메인에 연결 된 텍스트 정보를 설정한다.
MX 도메인의 메일 서버 정보를 설정한다.

 

  인터넷은 라우터를 기점으로 상위(Default Gateway) 네트워크와 하위 네트워크를 구분하며, 로컬 데이터를 타 네트워크로 보낼 때 라우터를 통해 상위로 데이터를 흘러 보냄으로써 네트워크 전체에서 통신이 가능하도록 구축되어있다. 이것을 라우팅(Routing)이라고 부르며, 작은 통신 구간에서는 1U(높이 44.45mm) 정도의 작은 네트워크 기기로도 트래픽 대응이 가능하지만 어느 정도 상위로 올라가게 되면 물리적, 논리적으로 직통하는 루트가 필요하게 되는데, 이때 이 부분이 사업자 간의 통신이 된다.

  글로벌 IP주소(공인 IP)는 네트워크 기기가 많아질수록 그 수가 부족해지고 있기 때문에 이에 대한 대응으로 사설 주소를 활용하는 NAT(Network Address Translation)가 이용된다. NAT는 사설 IP주소와 글로벌 IP주소를 변환함으로써 각각의 기기가 글로벌 IP를 지니지 않은 채로 글로벌 네트워크와 통신할 수 있도록 하는 기술이다. 실제로는 NAT보다 IP주소와 접속 포트를 변환하는 NAPT(Network Address Port Translation)이 사용되는 경우가 많다. 다음 그림과 같이 라우터를 통과하는 타이밍에 소스(PC->서버) IP주소(SRC), 목적지(서버-> PC) IP주소(DST)로 IP주소가 변환되며 NAT라우터가 IP주소를 변환하는 구조로 되어있고, 이는 가정용 라우터나 대규모 서비스에서도 많이 사용되고 있다.

 

[NAT라우터가 IP주소를 변환하는 방법]

인터넷(IP네트워크)는 계층화 되어 통신호환성을 가진다.

 

2.3 URL을 분석해보자

  URL(Uniform Resource Locator)과 URI(Uniform Resource Identifier)는 인터넷 상에서의 콘텐츠나 데이터의 위치를 나타내기 위한 표현방법으로, URI가 URL보다 조금 더 넓은 개념으로 쓰인다. 두 가지 방법 모두 기술방식이 규정되어있으며, 구체적인 방법과 각각을 구성하는 요소와 의미는 다음과 같다. 생략 가능한 포트번호의 경우 IANA(Internet Assigned Numbers Authority)가 관리하고 있는 'Well Known Port Number' 0~1023번을 말하며, 이 범위 안의 포트 번호는 생략할 수 있다(Linux 서버는 /etc/services에도 생략가능한 포트가 기재되어있다).

 

[URL/URI 구성요소와 의미]

<PROT>://[<USER>[:<PASS>]@]<FQDN>[:<PORT>]<PATH>
PORT 프로토콜, HTTP/HTTPS/FTP 등
USER 인증에 이용하는 사용자명, 인증이 없으면 생략 가능
PASS 인증에 이용하는 패스워드, 인증이 없으면 생략 가능
FQDN FQDN(Fully Qualified Domain Name)
PORT 포트 번호, 프로토콜로부터 추측 가능하면 생략 가능
PATH 파일 등의 리소스의 경로, 또한 '/'로 끝나면 디렉토리를 나타냄

[대표적인 Well Known Port Number]

프로토콜 포트 번호 프로토콜 포트 번호
SMTP 25 IMAP 143
POP3 110 SSH 22
HTTP 80 SNMP 161
HTTPS 443 DNS 53

 

2.4 프로토콜의 내부 들여다보기

  브라우저와 서버 사이에서 어떠한 상호 작용이 발생하는지는 인터넷 프로토콜 HTTP(HyperText Transfer Protocol)을 통해 확인이 가능하다. 브라우저에서 서버로 요구하는 내용인 Request Headers(요청 헤더)와버에서 브라우저로 응답하는 내용이 담긴 Response Headers(응답 헤더)를 확인하면 상호작용의 단면을 쉽게 확인이 가능한데, 이러한 헤더 내용은 서비스 디버그 수행 시 필수로 확인이 필요한 내용이므로 그 항목과 의미를 정확히 파악하고 있는 것이 좋다. Chrome 브라우저에서는 F12를 통해 개발자 모드에서 쉽게 헤더 확인이 가능하다.

 

[HTTP 헤더의 항목과 의미]

헤더 항목 의미
Host 목적지의 도메인
Connection 접속을 유지할 것인가, 곧바로 끊을 것인가 등의 접속에 관한 정보
Pragma 메시지에 관한 추가 정보
Cache-Control 메시지가 경유하는 중간 캐시의 동작 지시
Accept 클라이언트의 수용 가능한 콘텐츠 종류
User-Agent 클라이언트의 웹 브라우저 등의 정보
Accept-Encoding 클라이언트의 수용 가능한 문자 인코딩
Accept-Language 클라이언트의 수용 가능한 언어
Cookie 클라이언트의 상태 관리 정보를 서버에 반환
Date 응답의 작성 날짜와 시간
Server 서버 업체 이름, 버전 번호
Accept-Ranges 객체의 일부에 대한 요청을 서버가 수용할 수 있는지
Vary 서버가 응답 내용을 결정 할 때, 응답 URI 이외에 이용한 헤더 목록
Content-Encoding 콘텐츠의 인코딩 정보
Content-Length 콘텐츠의 크기(바이트 단위)
Content-Type 콘텐츠의 종류
반응형