AWS(Amazon Web Services)의 전체 인프라스트럭처는 보안 시설로서 클라우드에서 실행되는 사용자의 모든 자원은 보안성을 보장받을 수 있습니다. 이는 기본적으로 AWS를 사용하는 모든 기업들이 보장받을 수 있는 안정성입니다. 이에 Amazon VPC(Virtual Private Cloud) 서비스를 이용해서 운영서버를 구축함으로써 사용자 수준에서 보안의 수준을 높일 수 있습니다. 이번 세션에서 Amazon VPC와 VPC를 구성하고 있는 서브넷, 가상라우터와 라우트 테이블, 인터넷 게이트웨이, NAT 게이트웨이, 보안 그룹에 대해서 이론을 배우고 실습을 통해서 운영 서버를 만들어 보도록 하겠습니다.
1. 네트워크
1-1. 네트워크란?
네트워크(Network)란 여러 디바이스(컴퓨터) 간의 연결망
한 대의 컴퓨터만으로는 네트워크가 될 수 없지만 두 대 이상의 컴퓨터가 연결되어 있으면 네트워크
이렇게 연결되어 있는 컴퓨터들은 서로 간에 필요한 데이터를 주고 받을 수 있게 됩니다.
2. TCP/IP
살아가면서 사람과 사람 사이에 지켜야 하는 여러 규칙이 있듯이, 네트워크에서도 통신을 하기 위한 규칙이 있는데 이것을 프로토콜(protocol) 이라고 합니다. 이러한 프로토콜 중 전세계적으로 가장 많이 쓰이는 것이 TCP와 IP입니다. TCP/IP는 하나의 프로토콜이 아닌 패킷 통신 방식의 IP(Internet Protocol)와 전송 조절 프로토콜인 TCP(Transmission Control Protocol)를 합쳐 부르는 말입니다.
2-1. IP(Internet Protocol)
컴퓨터들은 복잡한 인터넷 망을 통하여 서로 데이터를 주고 받게 됩니다. 이렇게 복잡한 인터넷 망을 통과하여 올바른 목적지까지 데이터를 전달하기 위해 필요한 규칙이 바로 IP(Internet Protocol)입니다.
우편물을 보내려면 주소가 필요하듯 데이터를 다른 목적지로 보내려면 어떤 네트워크의 어떤 컴퓨터인지 구분할 수 있는 주소가 필요한데 그 주소가 IP 주소입니다. IP는 하나의 규칙(프로토콜)으로서 패킷(Packet)이라는 통신 단위에 정보들을 담아 IP 주소로 데이터를 전송합니다.
위의 그림과 같이 Client가 “Hello, Wecode!” 라는 데이터를 200.0.0.2 라는 IP 주소를 할당받은 Server에 전송하고자 하는 상황을 살펴보면 출발지 주소(100.0.0.1)와, 목적지 주소(200.0.0.2), 전달하고자 하는 데이터(”Hello, Wecode!”) 등 여러 정보를 담은 패킷을 만들어 전송하여 복잡한 인터넷 망 속 수많은 노드를 거쳐 목적지에 도착하게 됩니다.
하지만 IP도 다음과 같은 문제점을 가지고 있습니다.
- 비연결성(connectionlessness) - 목적지에 해당하는 서버가 꺼져있어도 패킷을 전송합니다.
- 비신뢰성(unreliability) - 말 그대로 신뢰할 수 없다는 의미입니다. 여러 패킷을 전송할 때 패킷이 대상 서버에 순서대로 도착하지 않을 수도 있으며 중간에 노드에 문제가 생겨 패킷이 유실될 경우 아무런 조치를 취할 수 없습니다.
- 목적지에 해당하는 서버가 통신하는 어플리케이션이 만약 하나가 아니라면 그것을 구분해낼 수 없습니다.
이러한 문제를 해결하고자 신뢰성을 보장할 수 있는 프로토콜을 함께 사용하는데 그것이 바로 TCP 입니다.
2-2. TCP(Transmission Control Protocol)
TCP(Transmission Control Protocol) 는 IP의 여러 문제를 보완해주는 프로토콜입니다. IP가 패킷 단위로 데이터를 구성한다면 TCP는 세그먼트 단위로 데이터를 구성하게 됩니다.
그렇다면 TCP가 IP의 여러 한계를 어떻게 보완하는지 살펴보겠습니다.
- IP는 목적지에 해당하는 서버가 여러 어플리케이션과 통신하고 있을 경우 그것을 구분할 수 없습니다. 이를 대비해 TCP는 포트(Port) 정보를 담습니다. 또한 같은 이유로 출발지에 해당하는 서버의 포트 정보도 담습니다.
- 목적지에 해당하는 서버가 패킷의 순서를 알 수 있도록 순서 번호 정보를 담습니다.
- 데이터가 올바르게 전달이 되었는지 보증해줍니다. 데이터를 전송하고 잘 도착했다면 그에 대한 응답을 돌려받습니다.
- 출발지, 목적지 서버가 올바르게 연결이 되는지 확인할 수 있도록 TCP 3-way handshake 방식을 이용합니다.
2-2-1. TCP 3-way handshake
위에서 언급한 TCP 3-way Handshake가 어떻게 동작하는지 간단하게 살펴보면 다음과 같습니다.
- SYN(Synchronization)
- 클라이언트는 서버와의 연결을 위해 서버에 접속을 요청하는 SYN 패킷을 보냅니다.
- SYN(Synchronization) + ACK(Acknowledgement)
- 서버가 SYN 패킷을 받게 되면 클라이언트에게 올바르게 받았다는 신호인 ACK와 SYN 패킷을 같이 보냅니다.
- ACK(Acknowledgement)
- 마지막으로 클라이언트가 서버에게 ACK 패킷을 보내 서버가 받게 되면 데이터를 주고 받을 수 있는 상태가 됩니다.
2-3. TCP/IP Model
TCP/IP(Transmission Control Protocol/Internet Protocol) 모델은 컴퓨터가 서로 데이터를 주고 받을 때에 그 네트워크 통신 과정을 크게 4개의 계층(Layer)로 나누어 놓은 모델입니다. 흔히 TCP/IP 4계층 이라고도 부릅니다.
컴퓨터간 통신을 할 때에는 최상위 계층인 응용 계층(Application Layer)부터 최하위 계층인 네트워크 인터페이스 계층(Network Interface Layer) 순으로 각 계층을 한 번씩 거치게 됩니다. 각 계층의 역할과 특징은 다음과 같습니다.
- Layer 4 - 응용 계층(Application Layer)
- 사용자와 가장 가까운 계층으로 어플리케이션이 어떤 데이터를 전송할지 결정합니다.
- 예시 HTTP, FTP, SSH ...
- Layer 3 - 전송 계층(Transport Layer)
- 통신 노드 간의 연결을 제어하고 신뢰성있는 데이터 전송을 담당합니다. 세그먼트(Segment) 단위로 데이터를 구성합니다.
- 예시 TCP, UDP, PORT ...
- Layer 2 - 인터넷 계층(Internet Layer)
- 최종 목적지까지 정확하게 데이터가 전송될 수 있도록 라우팅 기능을 담당합니다. 패킷(Packet) 단위로 데이터를 구성합니다.
- 예시 IP ...
- Layer 1 - 네트워크 인터페이스 계층(Network Access Layer/ Network Interface Layer)
- OS의 네트워크 카드와 디바이스 드라이버 등 하드웨어 요소와 관련된 모든 것을 지원하는 계층입니다. 네트워크용 하드웨어 기기 간에 데이터 전송을 제어함으로 상위 계층은 하드웨어의 종류에 상관없이 통신할 수 있습니다.
3. 공인 IP & 사설 IP
3-1. 공인 IP
공인 IP(Public IP)는 전세계에서 유일하게 식별될 수 있는 IP를 의미하며 인터넷 서비스 공급자(ISP)를 통해 할당받습니다. 그리고 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 컴퓨터가 해당 공인 IP를 통해 접근할 수 있습니다. 따라서 공인 IP를 사용하는 경우 보안을 더욱 신경써야 합니다.
예시 도로명 주소와 같이 유일하게 식별할 수 있는 값 → 서울특별시 강남구 테헤란로 427
3-1-1. 공인 IP 확인하는 방법
다음과 같은 명령어를 입력하여 **그림 3-1**과 같이 공인 IP를 출력할 수 있습니다.
$ curl ifconfig.me
3-2. 사설 IP
사설 IP(Private IP)는 네트워크 내부에서만 식별될 수 있는 IP를 의미하며 라우터(공유기)에 의해 할당받습니다. 이름에서 보듯이 인터넷상에서는 확인이 불가능하며 내부 네트워크에서만 사용 가능합니다. 일반 가정이나 회사에서 라우터(공유기) 등의 장비가 하나의 공인 IP를 할당받고 나누어 쓰는 방식으로 주로 사용됩니다.
예시 층, 호수와 같이 여러 곳에서 중복될 수 있는 값 → 13층 1302호
3-2-1. 사설 IP 확인하는 방법
MacOS의 경우 다음과 같은 명령어를 입력하여 **그림 3-2**과 같이 사설 IP를 출력할 수 있습니다.
$ ipconfig getifaddr en0
[그림 3-3] 터미널에 사설 IP 출력 - Ubuntu
[그림 3-4] 터미널에 사설 IP 출력 - Linux
Linux(Ubuntu)의 경우 다음과 같은 명령어를 입력하여 그림 3-3 혹은 **그림 3-4**과 같이 사설 IP를 출력할 수 있습니다.
$ hostname -i
'Cloud Service > AWS 공부' 카테고리의 다른 글
[AWS] VPC-3) [Network] Subnet & CIDR (0) | 2023.10.28 |
---|---|
[AWS] VPC- 2) Network] IP Address ** (0) | 2023.10.28 |
[AWS] RDS - 3) 데이터베이스 덤프(Database dump) ** (0) | 2023.10.28 |
[AWS] RDS - 2) DB 인스턴스 생성 + 실습 ** (0) | 2023.10.28 |
[AWS] RDS란?(Relational Database Service) -1) (0) | 2023.10.28 |