4차 5차 미프와 에이블데이까지 겪고 나서 하는 오랜만의 포스팅.
포스팅 할 거리가 넘쳐난다.
와중에 이번주 토요일에는 경영정보 시각화 필기시험이 있다 ㅎㅎ
화이팅
IT 인프라
- 정의
IT로 서비스하기 위한 모든 기반시설(자원)을 의미한다.
< IT 인프라의 예시 >
네트워크
서버
데이터베이스
정보 보안
시스템 소프트웨어
이것들은 세 가지의 주요 구성요소를 가지고 있다.
하드웨어(HW) | 물리적 장비 | PC, CPU, 서버, 스토리지, 라우터, 스위치 |
소프트웨어(SW) | 프로그램 | OS, Database, MS office |
네트워크 | 장비를 연결하는 장비 또는 연결 그 자체 | 공유기(라우터), 스위치*, 방화벽, 케이블 |
* 라우터, 스위치 등이 하드웨어에도 있고 네트워크에도 있다.
네트워크는 HW, SW를 가리지 않고 연결을 담당하는 녀석들을 포괄하는 개념이기 때문이다.
- 유형
IT 인프라의 유형은 크게 On-premise 방식과 Cloud 방식으로 구분된다.
1. On - Premise
서버, 스토리지, 네트워크 등의 자원을 기업이 자체적으로 가지고 있는 IT 인프라 유형이다.
전통적인 방식으로, 기업이 데이터센터를 운영하게 된다.
2. 클라우드(Cloud)
기업이 클라우드 컴퓨팅 서비스를 제공해주는 업체로부터 자원을 대여해서 사용하는 방식이다.
데이터 센터를 따로 만들지 않아도 된다는 점에서 공간과 비용을 절감할 수 있으며,
물리적 저장장치가 필요없다는 점에서 저장량을 유연하게 조절할 수 있다.
클라우드 컴퓨팅 서비스를 제공해주는 업체를 CSP(Cloud Service Provider)라고 하며,
AWS, Azure, GCP 등이 대표적이다.
다만 이같은 방식을 더 구체적으로 퍼블릭 클라우드라고 부르기도 한다.
이 경우 세부적 클라우드 유형을 나누는데, 나머지 유형은 다음과 같다.
<프라이빗 클라우드>
CSP를 끼지 않고 기업이 직접 클라우드 환경을 구축한 다음
기업 내부나 계열사에게 공개하는 방식이다.
그럼 서비스 자원과 데이터는 기업의 데이터센터에 저장되겠지.
프라이빗 클라우드를 구성한 기업의 입장에서는
On - premise와 크게 다르지 않은 듯?
<하이브리드>
말 그대로 두 유형 IT 인프라 유형을 혼합한 것이다.
On - premise와 퍼블릭 클라우드를 혼합하여 사용하는데,
클라우드 특성상 서버 확장이 용이하기 떄문에
On - premise 기반의 업체가 성장과 함께 클라우드를 도입한 경우 이렇게 된다.
위에서 말했듯 프라이빗 클라우드도 On - premise와 유사한 점이 있기에
프라이빗 + 퍼블릭 클라우드 형태도 하이브리드로 취급한다.
<멀티 클라우드>
여러 종류의 클라우드를 함께 사용하는 방식이다.
예를 들어 'AWS을 메인으로 사용 + Azure에 백업' 이런 식으로.
하나의 CSP에서는 기업이 요구하는 모든 기능을 얻기 힘든 경우가 많아서 사용한다.
IT 인프라 구성도
앞으로 주구장창 나올 그림.
이번 주의 목적은 이 그림을 이해하는 것이라고 할 수 있다.
오늘은 이중에서도 스토리지, 서버, 네트워크라는 세 가지 구성 요소를 배우도록 한다.
스위치 네트워크
- 네트워크
네트워크는 규모에 따라 다음과 같이 나뉜다.
PAN (Personal Area Network) |
가장 작은 규모, USB나 블루투스 등의 연결 |
LAN (Local Area Network) |
근거리 규모, Wifi나 LAN 케이블을 통한 연결 |
MAN (Metropolitan Area Network) |
대도시 규모 |
WAN (Wide Area Network) |
광대역, 세계적 규모, 인터넷 등 |
네트워크의 구성요소는 다음과 같다.
전송 단말기(노드) | 정보 전달을 주도하는 장치 | PC, 서버 |
전송 매체 | 유선 케이블 또는 무선 기술 | 동축케이블, 광케이블, LTE, 블루투스 |
전송 프로토콜 | 단말기 간의 규약 | HTTP, SMTP, TCP, IP |
네트워크 장비 | 목적지를 찾고 길을 결정하는 기능을 한다. | 허브, 스위치, 라우터 |
< OSI 7계층 모델 >오랜만에 외워 본다. 응표세전네데물!
통신이 일어나는 과정을 7개 계층으로 분리하여 ISO에서 정한 모델이다.
7층 : 응용(Application) 계층
- 사용자와 가장 가까운 계층, 사용자에게 서비스를 제공하는 단계다.
- 프로토콜로 HTTP, SMTP 등이 있다.
6층 : 표현(Presentation) 계층
- 데이터를 어떤 구문으로 전송할지 결정하는 층 : 확장자를 결정한다.
- 암호화/복호화가 일어나는 층이다.
5층 : 세션(Session) 계층
- 통신을 하기 위한 세션을 구축하는 계층.
- 여러 App들 사이의 통신이 일어난다.
4층 : 전송(Transport) 계층(Segment 사용)
- 데이터의 용량, 전송 속도, 목적지를 처리한다.
- 전송의 에러를 처리한다.
- 포트 넘버를 통해 관리된다.
3층 : 네트워크 계층(Packet 사용)
- 논리적인 주소(IP)를 사용하여 전송 경로를 관리한다.
- 패킷 전송이 일어난다.
2층 : 데이터 링크 계층(Frame 사용)
- 물리적인 주소(MAC : 장치가 가진 주소를 말한다.)를 사용하여 데이터를 전송한다.
- 데이터 전송을 위한 포멧을 결정한다.
- 여기도 에러 처리 기능이 있다..
1층 : 물리 계층(Bit 사용)
- bit 단위의 정보 교환을 통해 물리적인 연결을 보장한다.
※ 헤더와 캡슐화
아무래도 이 과정에서 많이들 생략되는데,
비전공자 입장에선 헤더, 캡슐화와 역캡슐화 등이 어렵게 다가온다.
이를 철저하게 비전공자 입장에서 설명하자면 다음과 같다.
7계층이 사용자에 가깝다고 했지?
따라서 사용자가 뭔가를 하면(이메일을 쓴다든가),
정보는 7계층에서 1계층 방향으로 이동한다.
이때, 각 계층을 겪으며 각 계층의 처리 내용이
데이터에 택(tag)처럼 덕지덕지 붙는다.
이 정보를 헤더(header)라고 부른다.
헤더 내용은 뭐... 이 정보는 어디서 출발했다. 프로토콜은 뭘 썼다 이런 메타데이터적 내용들이다.
이때 헤더가 그냥 무분별하게 붙으면 안되겠지?
그래서 각 층에서는 자기가 붙인 헤더를 포장·정리한 후에 다음 계층으로 보낸다.
그걸 캡슐화라고 한다.
반대로, 이번엔 이메일을 받는 입장에서 생각해 보자.
컴퓨터는 캡슐화된 정보를 나한테 보여줄건데,
캡슐화의 끝에는 물리 계층이 있으니 그 정보를 그대로 보여주면
수신자는 0100101110.... 이런 데이터를 보게 된다.
우리는 인간인지라, 캡슐화된 정보를 다시 우리 식으로 풀어야 한다.
이번엔 데이터가 1계층에서 7계층까지 올라오면서 각종 요소들이 제거되는거지.
그것을 역캡슐화라고 한다.
< TCP/IP 4계층 모델 >
OSI 7계층 모델을 실무 측면에서 단순화시킨 것이다.
응용 + 표현 + 세션 계층 = 응용 계층(FTP, HTTP, SMTP, DNS)
전송 계층 = 전송 계층(TCP, UDP)
네트워크 계층 = 네트워크 계층(IP, ICMP, OSPF)
데이터링크 계층 + 물리 계층 = 네트워크 액세스 계층(이더넷, 토큰 링)
- 네트워크 장비
1계층(물리 계층) : 리피터, 허브
비트로 구성된 데이터를 전송하므로, On/Off의 전기적 신호를 활용한다.
리피터 | 전기적 신호를 증폭시키는 역할을 한다. |
허브 | 여러 포트를 가진 장비 |
케이블 | 마찬가지로 물리 계층에 속한다. |
2계층(데이터링크 계층) : 스위치
다양한 포트를 제공하여 MAC 주소를 통한 통신을 지원한다.
대표적인 프로토콜로 Ethernet을 사용한다.
3계층(네트워크 계층) : 라우터, 공유기, L3 스위치
4계층(전송 계층) : L4 스위치
7계층(응용 계층) : L7 스위치
- 스위치
위의 장비 중에서 스위치에 대해 더 자세히 알아보자.
스위치의 역할은 노드-노드 간의 연결을 중개해주는 것이다.
위 그림에서 볼 수 있듯, 다양한 기기를 상호 연결하기보다는
스위치라는 하나의 장치에 연결함으로써 통신할 수 있게 해 준다.
당연히 일관성 측면에서나 품질 측면에서나 이게 훨씬 나은 방법이다.
- 스위치의 작동원리
장치 A가 B로 데이터를 전송한다고 가정해 보자.
이 데이터에는 세 가지 정보가 들어 있다.
출발지(A) MAC 주소
목적지(B) MAC 주소
데이터의 내용
스위치는 들어온 정보를 기반으로 MAC Address Table을 작성한다.
(= 스위치의 port에 MAC 주소를 매핑한다.)
이때가 첫 통신이라면, 데이터 전송이 완료되기 전에
목적지(B)가 어느 포트에 연결되어 있는지 알 수 없다.
따라서 스위치가 모든 장치들에게 A의 요청을 보내고,
B가 응답하면 그 포트 위치를 Address Table을 작성한다.
이런 방식으로 MAC Address Table이 완성되면,
이때부터는 MAC 주소끼리 중개해 주는거지.
IP 네트워크
IP는 많이들 안다.
우리에게 익숙한 IP는 이렇게 생겼다.
172.16.128.17
하지만, 실제로 이 IP는 기본적으로 32bit의 2진수로 구성되어 있다.
10101100000100001000000000010001
어우 보기 힘들어.
엔지니어들도 그랬나 보다.
그래서 이를 8x4 형태로 바꾼 후, 각 옥텟(덩어리)를 십진수로 변환해서 표기한다.
10101100 . 00010000 . 10000000 . 00010001 = 172,16,128,17
이상의 IP 주소는 'Network 주소 + Host 주소' 형식으로 구성되어 있다.
이때 Network 주소가 몇 개의 옥텟을 점유하냐에 따라,
네트워크 클래스가 나뉜다.
하나의 옥텟이 만들 수 있는 경우의 수는 00000000 ~ 1111111의 255개이다.
먄약 Network 주소가 네 개 중 세 개의 옥텟을 점유하고 있다면,
해당 네트워크에서 사용 가능한 단말기(Host 주소)는 255개 뿐이란 거지.
반대로 Network 주소가 하나의 옥텟만 점유하고 있다면,
해당 네트워크에서는 255*255*255 = 16,581,375개의 호스트를 쓸 수 있다.
즉, Network 주소가 짧을수록 방대한 네트워크인 것이다.
방대한 것부터 A클래스, B클래스, C클래스 네트워크라고 부른다.
A클래스는 1옥텟, B클래스는 2옥텟, C클래스는 3옥텟을 네트워크 주소로 사용한다.
이 구분은 첫 번째 옥텟으로 알 수 있도록 약속되어 있는데,
1~126 : A클래스 (*127은 테스트 네트워크)
128~191 : B클래스
192~223 : C클래스
로 약속되어 있다.
예를 들어 '192.168.10.1'은,
첫 옥텟이 192이므로 이 네트워크는 C클래스.
따라서 192.168.10 까지는 네트워크 주소고,
1이 호스트 주소가 된다.
그렇다면 이 네트워크에 연결 가능한 호스트는?
192.168.10.1 ~ 192.168.10.255가 된다.
이때, 네트워크 주소를 표기하는 방법으로 서브넷 마스크라는 표기가 있다.
옥텟 중 네트워크 주소에 해당하는 부분을 11111111(=255)로 표현하는 방식이다.
정리하자면 아래와 같은 거지.
이쯤에서 드는 생각.
"굳이?"
아까 말했듯, 클래스는 첫 번째 옥텟을 보는 걸로 충분하다.
그럼 클래스마다 네트워크 주소가 차지하는 부분은 정해져 있는데,
왜 서브넷 마스크라는 걸 쓸까?
난 이 부분이 참 납득이 안 됐었더랬다.
그도 그럴 것이, 사실 서브넷 마스크는 클래스 구분에 쓰는게 아니다.
< CIDR >
네트워크 클래스에는 내부적인 문제가 있다.
A클래스는 약 1600만개, B클래스는 약 6만 5천개, C클래스는 250개의 호스트를 쓸 수 있지?
근데 보통 기업에서 네트워크를 구성할 때,
1000개 내외로 필요한 경우가 많다.
B를 쓰자니 낭비가 심하고, C는 작아서 못 쓴다.
우린 5명인데 식당 좌석이 10인석이랑 2인석밖에 없는 상황이다.
따라서 식당 테이블을 더 쪼개는 방법이 고안되었다.
그것이 바로 CIDR(Classless Inter-Domain Routing)이다.
이는 IP를 옥텟 단위가 아닌 비트 단위로 쪼갤 수 있게 하는 방법이다.
위에서 말한 1000개짜리 네트워크가 필요하다고 하자.
기존에는
11111111.11111111.00000000.00000000의 B클래스를 써야겠지.
호스트 주소 영역의 00000000.00000000을 써야 하는데,
1000개니까 사실 2^10까지만 쓰면 된다.
00000000.00000000 이만큼만 쓰면 된단거지. 이건 너무 낭비다.
하지만 CIDR이라면, 저 밑줄 친 부분만을 호스트 주소로 쓸 수 있다.
CIDR에서는 이렇게 끊어지는 서브넷 마스크를 더 쉽게 표기하기 위해
'/숫자'와 같은 방식을 사용하기도 한다.
이를테면,
172.16.128.17/14
이게 무슨 뜻이냐.
10101100 . 00010000 . 10000000 . 00010001
밑줄 친 만큼(14비트)만 네트워크 주소고,
나머지는 호스트 주소라는 뜻이다.
확실히 CIDR을 사용할 때는 저런 표기법이 필요해 보인다.
이외에도 IP 네트워크를 이해하기 위한 용어들이 있다.
- ARP
Address Resolution Protocol의 줄임말.
IP만 알고 있을 때, MAC 주소를 알 수 있게 해 주는 프로토콜이다.
위에서 MAC Address Table 만들 때처럼 스위치가 각 노드에 MAC request를 보내고,
request에 들어 있는 IP 주소와 같은 노드가 자신의 MAC주소를 반환하는 것.
이를 통해 ARP 테이블이 업데이트되어 통신이 가능해진다.
- NAT
Network Address Translation.
사설 IP를 공인 IP로 변환해주는 서비스이다.
딱 공유기를 생각하면 되는데, 집 안의 PC마다 회선이 다 다르면 인터넷 요금이 n배다.
따라서 내부 PC의 IP는 다 다를지언정,
외부 네트워크에 드러나는 IP는 하나의 공인 IP가 되도록 만들어 주는 것이 NAT이다.
(그래서 약간의 보안 기능도 있다.)
Unicast, Broadcast, Multicast가 있다.
라우터
서로 다른 네트워크를 연결해 주는 장비이다.
3계층, 그러니까 네트워크 계층의 터줏대감이다.
네트워크 계층이니까 전달하는 데이터는 패킷 형태.
라우터가 수행하는 작업을 라우팅이라고 하며,
라우팅은 라우팅 테이블에 저장된 정보를 바탕으로 네트워크를 연결한다.
네트워크 자체가 다르면 서로의 주소를 알 수 없기 때문에 통신이 불가능한데,
라우터는 이 길을 알려 주는 역할을 한다.
작동 원리가 스위치와 같은데,
테이블에 저장된 정보를 바탕으로 중개를 한다는 점이 그렇다.
차이라면 노드와 노드가 아니라 스위치와 스위치를 연결해 준다는 것 뿐.
DHCP(Dynamic Host Configuraion Protocol)
IP 주소를 관리하는 응용 계층의 프로토콜이다.
IP 자원은 한정적이기 때문에, 쓰지 않는 자원을 빠르게 회수하고(자원 활용성 제고),
서로 다른 PC가 같은 IP를 쓰는 상황을 방지한다.(충돌 예방)
위 그림처럼 DHCP는 클라이언트의 요청에 따라IP 주소를 할당해 준다.
물론 IP주소를 할당받지 않은 클라이언트는 통신을 할 수 없다.
이때 클라이언트는 브로드캐스트, 즉 모두에게 IP request를 보냄으로써 해결한다.
DNS
DNS는 예전에 한번 다룬 적 있다.(https://guoyee94.tistory.com/32)
전화번호부 같은 개념으로, 웹 도메인을 key로 하여 IP 주소를 반환해 주는 시스템이다.