[UMC 2주차] 포트포워딩, AWS

유보라·2022년 3월 22일
1

UMC 2기

목록 보기
3/14
post-thumbnail

안녕하세요! UMC 2주차에 들어선 보라입니다😁

오늘은 바로 월요일인데요! 새로운 UMC 강의를 들을 생각에 두근두근 신나는 마음으로 한 주를 시작했습니다 크크

목차는 오늘도 동일합니다!😙

  1. 실습 과정
  2. 트러블 슈팅
  3. 키워드
  4. 강의 후기
  5. 생각티비

1. 실습 과정

포트 포워딩(Port Forwarding)

우리 집의 공유기를 이용하여 포트 포워딩 실습을 해보자!

Bitnami 패키지에서 Apache 서버가 잘 돌아가고 있는 지 확인해주고,

Manage Servers > Configure에서 port 번호를 3000번으로 설정을 해주었다.

자, 이제 공유기의 IP 주소를 알아야한다.

먼저 cmd 창에 ipconfig를 입력해준다.

그럼 위 화면과 같이 뜨는데, 무선 LAN 어댑터 Wi-Fi에서 기본 게이트웨이 주소가 내 공유기의 외부 IP 주소이고, IPv4 주소가 내 컴퓨터가 부여받은 사설 IP이다.

둘 다 기억해놓자!

알아낸 공유기의 외부 IP 주소를 크롬 주소창에 입력해줬더니 강의 영상과 같은 화면이 뜨지 않고 KT GIGA WIFI HOME 이라는 페이지로 연결 되었다.

공유기마다 방법이 조금씩 다른 것 같았다.

우리 집의 공유기는 KT였기 때문에, 아래의 링크를 참고하여 설정을 해주었다.

참고 : https://toopyo.tistory.com/entry/kt-portforwarding

로그인을 하면 위 화면에서 포트 포워딩 설정을 할 수 있다.

소스 IP 주소 : (생략)
소스 포트 : (생략)
외부 포트 : 3000 ~ 3000
내부 IP 주소 : 내 컴퓨터가 부여받은 사설 IP 입력
내부 포트 : 3000 ~ 3000
프로토콜 : TCP
설명 : 포트 포워딩 테스트

이렇게 입력을 해주었다.

그 후 아래와 같은 페이지를 들어가준다.

위 사진을 보면 인터넷 연결정보 > IP주소 를 확인할 수 있는데, 이 주소가 바로 외부에서 우리집 공유기에 접근할 때 사용하는 공인 IP 주소이다.

자 이제 데이터 모드를 사용 중인 아이패드(외부기기)에서 방금 알아낸 IP:3000/phpinfo.php 로 접속해보자!

짜잔!! 성공한 모습 ㅎㅎ

AWS(Amazon Web Service) ec2

먼저 AWS 프리 티어 계정을 생성해줬다.

원래 유료라서 그런지 결제 수단 등록도 해야됐고 주소도 영문으로 입력해야해서 번거로웠다.

기본 지원 - 무료를 선택하고 가입 완료를 누른다!

성공적으로 AWS 관리 콘솔에 로그인한 후, 지역을 서울로 바꿔주면 실습 준비 끝!

서비스 검색창에 ec2를 검색해서에 들어가준다.

인스턴스 생성 클릭!

이미지 선택은 Ubuntu를 검색하여 18.04 버전 선택~

인스턴스 유형 선택은 프리 티어 사용 가능 한 걸로!

스토리지 추가에서 크기를 30GB로 바꿔준 후에,

보안 그룹에서 내 IP로 설정을 해줬다. (나중에 수정을 할 예정이라고 하셨다.)

시작을 누르면 이렇게 키페어 생성하는 창이 뜬다.

나중에 SSH를 등록할 때 이 키페어가 꼭 필요하므로 다운 받은 후 고이 모셔놓자!

위치를 알아놔야 한다.

서버 이름도 bora_study로 잘 바꿔주고, 보안 설정을 해주겠다.

인바운드 규칙과 아웃바운드 규칙이 있다고 한다.

인바운드 규칙은 서버에 접속할 때 규칙이고, 아웃바운드 규칙은 서버에서 데이터가 나갈 때의 규칙이라고 한다.

우리는 인바운드 규칙만 신경 쓰면 됨!

나는 인바운드 규칙 편집 버튼이 바로 보이지 않아서

좌측 네트워크 및 보안 > 보안그룹 > 작업 > 인바운드 규칙 편집

이렇게 들어가줬다.

위와 같이, 규칙 추가를 통해 규칙 2개를 더 만들어준다.

  1. HTTP 유형, Anywhere-IPv6
  2. HTTP 유형, Anywhere-IPv4

HTTP로 만든 이유는 '손님이 사용하는 문'을 만들기 위해서이다.

(기존에 SSH 규칙이 하나 만들어져 있을 텐데, SSH 유형의 문은 관리자들만 이용할 수 있다!)

그리고 인스턴스에서 내가 만든 서버의 public IP를 확인할 수 있는데, 이 IP는 고정 IP가 아니라 유동 IP라서 인스턴스를 종료하고 다시 시작하면 바뀐다고 한다!

그래서 이렇게 탄력적 IP를 받아서 연결해주겠다!

인스턴스가 맞나 확인하고 연결을 누르면 끝~

탄력적 IP 부분이 비어있었는데 이제는 비어있지 않고 잘 할당이 되었다~!

그리고 이제 SSH 키를 등록 해야하는데 윈도우는 cmd만으로 설정할 수 없다고 한다... (맥북 살 이유 +1)

그래서 아래 링크에서 WinSCP라는 걸 다운 받아줬다!

링크 : https://winscp.net/download/WinSCP-5.19.6-Setup.exe

자 이렇게 연결이 잘 되면 새로운 세션을 누른 뒤에

위와 같이 설정을 해줬다. 이때 호스트 이름은 아까 할당했던 탄력적 IP를 입력해주면 된다!

그리고 고급 > SSH > 인증 > 개인키 파일 > 아까 다운받은 키페어 위치로 가서 선택

이때 안 보인다면 PuTTY 개인 키 파일에서 모든 개인 키 파일로 바꿔주면 된당

그러면 PuTTY 형식으로 변환을 할거냐고 물어보는데 예를 눌러서 변환을 해준당~

그 후 저장을 눌러서 bora_server 라는 이름으로 저장을 해줬다!!

연결이 잘 되어서 비어있던 오른쪽에 뭔가가 생겼다!

위의 빨간색 동그라미 버튼을 누르면 PuTTY가 켜진다.

PuTTY는 SSH접속(SSH의 포트는 default 22)이 가능한 터미널 에뮬레이터라고 한다.

PuTTY까지 잘 실행되는 모습을 확인 했으니 이번 실습은 끝!

2. 트러블 슈팅

1. 외않되

문제 원인

WinSCP에서 SSH 키 연결을 마치고 PuTTY를 실행했지만 이런 에러가 떴다.

해결 방안

PuTTY를 설치해주고 다시 한 번 작동시켰더니 정상적으로 실행되었다.

3. 키워드

네트워크 계층

네트워크 이해를 위해서 네트워크 계층에 대한 이해는 필!수!

네트워크와 네트워크를 연결하기 위해서는 참 많은 과정들이 필요하다. 복잡하고 많은 과정들을 한 번에 처리하는 것은 힘들기 때문에 계층을 나누어 필요한 역할들을 수행하도록 하였다. 계층을 나누면 복잡한 시스템을 단순화 시킬 수 있고 업데이트 및 유지보수를 쉽게 할 수 있다는 장점이 있다.

네트워크 계층은 OSI 7 LayerTCP/IP의 5 Layer 크게 두 가지가 있다.

OSI 7 Layer

OSI(Open Systems Interconnection Reference Mode) 7 Layer는 국제표준화기구 ISO에서 만든 참조 모델이다. 계층을 하나 하나 살펴보자!

  • Application Layer(응용 계층)
    사용자와 가장 밀접, 인터페이스 역할, 응용 프로세스 간의 정보 교환, 사용자에게 보이는 유일한 계층!

  • Presentation Layer(표현 계층)
    데이터 형식 결정, 수신한 데이터를 해석하기 위한 데이터 부호화&변화 , 데이터 인코딩&디코딩,
    데이터의 암호화&복호화

  • Session Layer(세션 계층)
    통신 장치 간 상호작용&동기화, 연결 세션에서 에러 발생 시 복구 관리
    (OS가 세션 계층임!)

  • Transport Layer(전송 계층)
    신뢰성있는 데이터 전송 담당(source-to-destination delivery), 데이터 전송을 위해 Port 번호 사용, TCP/UDP 등의 프로토콜을 사용, 오류 검출, 복구, 중복 검사 역할 -> 제일 할 일이 많다!

  • Network Layer(네트워크 계층)
    Routing 기능 담당(목적지까지 빠르고 안전하게 데이터를 보낼 최적의 경로 설정), 주소(IP)를 정하고 경로(Route)를 선택해 패킷 전달

  • Data Link Later(데이터 링크 계층)
    물리적인 연결을 통해 인접한 두 장치간의 정보 전송 담당(hop-to-hop delivery), MAC 주소를 통해서 통신, 데이터 전송 시 오류 감지 가능, 오류 발생 시 재전송 기능

  • Physical Layer(물리 계층)
    비트 단위로 데이터 전송, 단지 데이터 전달만 함

서울에 있는 김사장님이 부산에 있는 박사장님에게 우편을 보내는 상황을 생각해보면 쉽다.

사진 출처 : 컴네 강의 노트💚

TCP/IP 5 Layer

TCP/IP Protocol Suite는 위의 OSI 7 Layer에서 상단 3개의 Layer가 Application Layer 하나로 합쳐진 것이라고 생각하면 된다. 요즘에는 OSI 7 Layer가 아닌 TCP/IP Protocol Suite를 따른다.

사진 출처 : 컴네 강의 노트💚

TCP

Transmission Control Protocol의 약자로, 서버와 클라이언트 간 신뢰성있는 데이터 전달을 위해 만들어진 프로토콜이다.

특징

  • 신뢰성: 말단 장치간 신뢰할 수 있는 데이터 전달이 가능하며, 손상, 소실, 중복 등의 데이터 전달 에러를 복구한다.
  • 다중화 : 한 라우터의 많은 프로세스가 TCP 통신 서비스를 동시에 사용할 수 있다.
  • 양방향 운반 가능 : 하나의 전송 선로에서 데이터가 동시에 양쪽방향으로 전송 될 수 있다.
  • 3 Way Handshake 절차 : TCP 연결과 종료 과정에서 클라이언트와 서버가 플래그를 3번 교환하는 것을 말한다.

IP

Internet Protocol의 약자로, 네트워크 상에서 다른 컴퓨터와 구별하게 해주는 고유번호. 전화번호 같은 느낌이다!

한번 부여되면 변치 않는 고정 IP와 남아있는 IP를 돌아가면서 부여하는 유동 IP가 있다. 고정 IP는 주로 서버 운영에 사용되고 유동 IP는 공유기 등에서 사용된다.

프로토콜(Protocol)이란

컴퓨터 간의 데이터 송신에 필요한 통신 규약. 한 마디로 "약속"이다!

데이터 통신이 처음 시작 됐을 때는 정보통신 업체들의 장비나 통신 방식이 서로 호환되지 않는 문제가 있었다. 이를 해결하기 위해 어떤 방식으로 데이터 통신을 할 것인지 규약을 정하기로 했는데, 그것이 프로토콜이다. 프로토콜의 종류는 여러가지가 있는데 밑에서 알아보겠다!

(오! 네트워크 용어에서 P가 나온다면 대부분 Protocol의 약자일 가능성이 크다고 한다!)

프로토콜 예시들

HTTP

HyperText Transfer Protocol의 약자로, 텍스트 기반의 통신 규약이며 인터넷에서 데이터를 주고 받기 위해 필요한 프로토콜이다.

클라이언트가 브라우저를 통해서 서버에게 어떤 것을 요청(request)하면 서버가 요청사항에 맞는 결과를 찾아서 응답(response)하는 형태로 동작한다. HTML, JSON, XML 형태의 정보를 주고 받는다.

연결 상태를 유지하지 않는 비연결성 프로토콜이라서 이를 보완하기 위해 Cookie와 Session이 등장했다고 한다.

PORT# : 80번

HTTPS

HTTP Secure라는 뜻으로, HTTP에서 보안이 업그레이드 된 버전이다.

HTTP의 문제점이 서버에서 브라우저로 전송되는 정보가 암호화되지 않는 점이어서, 보안이 강화된 버전인 HTTPS가 등장했다. 공인된 인증 기관에게 인증서를 발급받은 후에 브라우저와 통신할 때마다 인증서를 제시해서 인증받은 서버라고 알리는 식으로 동작한다.

PORT# : 443번

HTTPS - SSL

HTTPS는 SSL(Secure Sockets Layer) 인증서를 사용한다고 했다. 쉽게 말하면 주민등록증같은 느낌이다!
SSL 인증서에는 key가 적혀있는데 이 key를 이용하여 데이터를 암호화해서 주고 받는다. SSL은 서버와 브라우저가 같은 1개의 key를 사용하는 대칭키 방식과, private key와 public key를 만들어서 사용하는 공개키 방식 두 가지를 적절히 혼용하여 사용한다.

한 마디로 인증서가 있는 사람들한테만 데이터를 해독해준다~

FTP

File Transfer Protocol의 약자로 서버끼리 파일을 주고 받기 위해 필요한 프로토콜이다.

여러 파일을 연속으로 송수신 해야해서 HTTP와는 다르게 연결 상태를 유지한다.

지금은 보안이 좋지 않아서 잘 사용하지 않는다고 한다!

PORT# : 21번

MYSQL

MYSQL에서 사용하는 프로토콜.

쉽게 말해서 MYSQL에 접속할 때, SQL문을 실행할 때 등 클라이언트와 서버가 어떤식으로 패킷을 송수신 할 지를 정해논 것이다.

PORT# : 3306번

SSH

Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다.

SSH는 private key와 public key를 만들어서 사용하는 공개키 방식의 암호화 기법을 사용한다. 이때, private key는 local 머신에 위치하고 public key는 remote 머신에 위치한다. remote 머신에서는 public key를 항상 가지고 있다가 local에서 접근 시도가 들어오면 local이 가지고 있는 private key와 대조해서 일치하는가를 확인한다.

최근에 github에서 SSH 키를 만들었던 것이 생각나서 기억에 잘 남을 것 같다^^

PORT# : 22번

SFTP

SFTP는 SSH의 파일 전송 버전이다. (그래서 port#가 똑같다. SFTP.port# == SSH.port#)

즉, SSH 방식을 이용해서 안전하게 암호화된 구간에서 FTP 기능을 이용할 수 있도록 한다.

PORT# : 22번

IP

현실 세계로 치면 위도, 경도와 같은 느낌!

Packet

Pack + Bucket = Packet!

우체국에서 화물을 적당한 덩어리로 나눠서 행선지를 표시하는 꼬리표를 붙이는데, 이것을 데이터 통신에 접목한 것이다. 데이터를 한번에 다 받아서 처리하려면 시간이 오래걸리니까 잘게 쪼개서 주고받는다~

Packet은 Header와 Body로 이루어져있다.

Header는 행선지를 표시하는 꼬리표이다. 송장 같은 느낌!

프로토콜마다 패킷의 모양이 조금씩 다른데, 아래는 TCP 헤더의 그림이다.

사진을 보면, 보내는 곳의 port#, 받는 곳의 port#, Sequnce#, ..., Checksum, HLEN(H.L.), ... 등등 다양한 정보들을 담고 있다. 이 헤더의 정보들을 바탕으로 패킷이 자기가 가야할 곳에 도착할 수 있고, 빠짐없이 잘 도착했는지(checksum) 등을 체크할 수 있다.

Body

그렇다면 Body는 화물의 내용물이라고 할 수 있겠다.

내가 택배를 보내려고 할 때 안에 넣는 내용물이 Body이다.

즉, 내가 보내려는 데이터가 body에 들어있다.

마찬가지로 프로토콜에 따라 다르긴 한데, 패킷들이 Layer에서 처리 될 때 캡슐화가 진행이 되어서 그 전에는 Header였던 것도 다음 Layer에서는 Body에 포함될 수 있다...

IPv4

IP 주소를 나타내는 방식을 나타낸 현재의 인터넷 프로토콜이다.

주소 길이가 32비트로, 약 43억개의 주소를 표현할 수 있다.

이진수를 8비트씩 묶어서 10진수로 표시하고, 이런 것들 4개 사이에 점을 찍어준다.
ex) 203.252.53.55

헤더의 크기가 정해져있지 않다.

IPv6

IPv4의 주소 부족 문제로 생겨난 차세대 인터넷 프로토콜이다.

주소 길이가 128비트이기 때문에 약 43억의 4승 만큼의 주소를 표현할 수 있다.

이진수를 16비트씩 묶어서 16진수로 표현하고, 이런 것들을 8개 쓰는데 사이사이에 :을 써준다.
ex) 2002:0221:ABCD:DCBA:0000:0000:FFFF:4002

Domain

IP는 위도, 경도와 비슷하다고 하였다. 즉, 위도, 경도와 같은 정보만으로는 어디를 가리키는지 한 눈에 알아볼 수 없다! 그래서 한 눈에 알아볼 수 있도록 도로명 주소처럼 표현한 것이 Domain 주소이다.

ex) www.naver.com

OSI

Open System Interconnection의 약자로, 개방형 시스템간 상호 접속을 의미한다.

※ 저희 자바공갈단에서는 핵심 키워드를 나누어 맡아서 스터디 시간에 발표하는 식으로 진행하기로 하였습니다! 여기까지가 제가 맡은 부분💚 ※

Port

서버에서 포트란?

포트란? "논리적인 접속 장소"

IP 내에서 프로세스 구분을 위해 사용하는 번호이다. 포트 숫자는 IP 주소가 가리키는 PC에 접속할 수 있는 통로(채널)을 의미한다. 예를 들어, IP 주소인 127.0.0.1 뒤에 :3000과 같은 숫자가 표현된다. 추가적으로 이미 사용 중인 포트는 중복해서 사용할 수 없다. 포트 번호는 0~ 65,535 까지 사용할 수 있다.그 중에서 0 ~ 1023번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있다.

cf. ip주소와 port번호를 합쳐 소켓을 구성한다

: 소켓이란? 네트워크(인터넷)의 연결 도구를 뜻하고, 쉽게 설명해 client가 server에게 연결을 요청하기 위해 사용하는 전화기 같은 것이라고 생각하면 된다.

포트리스닝

서버가 포트를 열어놓고, 클라이언트의 연결 요청을 할때까지 리스닝(Listening) 상태로 기다리는 것이다. 위에서 소켓을 전화기라고 비유했다. client가 전화를 걸어 요청을 하려고 할 때 server의 전화기 콘센트가 뽑혀있으면 전화를 받을 수 없게 된다. 따라서 콘센트를 꼽고 전화가 오기전에 대기하는 상태 리스닝 상태라고 한다.

인바운드 / 아웃바운드

인바운드 규칙은 클라이언트가 자신의 서버 데이터에 들어올 수 있는 규칙을 의미한다. 서버에 접속하고, 해당 데이터들을 읽을 수 있으며 권한 여부에 따라서 생성, 수정, 삭제도 허용하는 규칙이다. 클라이언트가 서버의 데이터에 접속하는 권한이므로, 기본적으로 인바운드 규칙은 모든 포트를 닫는 것을 전재로 한다. 즉, 인바운드 규칙에서 설정하지 않은 포트들은 사용할 수 없는 포트이며, 해당 포트를 사용하더라도 접속 자체를 막게된다.

아웃바운드 규칙은 서버에서 나갈 수 있는 (반출할 수 있는) 데이터에 대한 규칙을 의미한다. 인바운드 규칙에서 허용된 포트로 들어왔다고 한들, 아웃바운드 규칙에서 데이터 반출이 허용되지 않은 포트라면 클라이언트는 "다운로드"를 할 수 없게 된다. 보통 아웃바운드 규칙은 기본 옵션으로 모든 포트에게 허용되어 있는 편이다.

참조 : https://velog.io/@newon-seoul/포트와-인바운드-아웃바운드-규칙

데몬(Daemon)

Port forwarding

외부 IP를 통해 접속한 클라이언트가 특정 port를 통해 요청 시, 내부 IP로 보내서 처리

쉽게 말하면 공유기에게 길을 만들고 이정표를 달아주는 것

공유기

위는 공유기 사진으로 빨간색 박스가 WAN 선 나머지 포트가 LAN 선이다.

아주 간략하게 말하면 WAN은 공유기에서 입력, LAN은 출력이다.

WAN

WAN은 Wide Area Network 의 준말로써 LAN과 LAN 사이를 광범위한 지역 단위로 구성하는 네트워크를 의미한다. 아래의 그림 같이 WAN은 LAN과 LAN사이를 이어준다!

LAN

LAN은 Local Area Network의 약자로 사용자가 포함된 지역 네트워크를 의미한다. 예를 들어, 학교, 회사, 집에서 컴퓨터, IP 전화기등의 장비를 서로 연결한 것. 이 때 컴퓨터끼리 1대1로 직접 연결하는게 아니라 공유기나 스위치등을 이용해서 연결하는 방식이다.

외부 IP (공인 IP)

인터넷 사용자의 로컬 네트워크를 식별하기 위해 인터넷 서비스 공급자(ISP)가 제공하는 IP 주소입니다.공인 IP는 전세계에서 유일한 IP 주소를 갖으며 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC로부터의 접근이 가능하다. 따라서 공인 IP 주소를 사용하는 경우에는 방화벽 등의 보안 프로그램을 설치할 필요가 있다.

내부 IP (사설 IP)

공유기에 연결된 클라이언트들이 서로를 식별하기 위해 가지는 IP

공유기도 와이파이를 사용하는 클라이언트들을 식별할 수 있어야 하기 때문에 내부적으로 IP를 한 번 더 할당하게 된다. 그것이 바로 내부 IP!

시스템 환경 설정 > 네트워크 속성 에서 확인가능

외부 포트

웹 브라우저에서 외부 IP를 통해 내부 웹서버(컴퓨터)로 접속할 때 외부 IP 뒤의 “ : “ (콜론) 뒤에 붙는 숫자

내부 포트

내부 포트란 외부에서 8080 포트로 접속한 기기를 내부의 어떤 포트 번호로 연결해 주느냐에 대한 포트 번호

게이트웨이

컴퓨터 네트워크에서의 게이트웨이는 현재 사용자가 위치한 네트워크에서 다른 네트워크로 이동하기 위해 반드시 거쳐야 하는 거점을 의미한다. 자동차 고속도로로 진입하기 위해 통과하는 톨게이트와 유사한 개념~

두 컴퓨터가 네트워크 상에서 서로 연결되려면 동일한 통신 프로토콜을 사용해야 한다. 따라서 프로토콜이 다른 네트워크 상의 컴퓨터와 통신하려면 두 프로토콜을 적절히 변환해 주는 변환기가 필요한데, 게이트웨이가 바로 이러한 변환기 역할을 한다. 한국인과 미국인 사이에 원활한 의사소통을 위해 통역사를 두는 것과 동일함!

집 컴퓨터에서 인터넷에 접속하려는 경우 집 -> 공유기 -> 인터넷 제공 회사 라우터 -> 인터넷망와 같은 경로를 따라간다. 이 때, 공유기와 인터넷 제공 회사의 라우터는 이전의 단계에서 다음 단계로 넘어 갈 때의 게이트웨이 역할을 담당한다. 인터넷에 접속하기 위해서는 수많은 게이트웨이를 거쳐야한다.

  • 이 때, 거치는 게이트웨이의 수를 홉 수 (hop count)라고 하는데, 위의 예제에서는 인터넷에 연결할 때까지 필요한 hop count가 2이다.

방화벽

방화벽이란 외부 사용자(WAN)들이 내부 네트워크(LAN)에 접근하지 못하도록 하는 일종의 내부 네트워크 방어도구!

다른 소프트웨어적인 프로그램 도구와는 달리 방화벽이라함은 독립된 시스템이나 전용 하드웨어등을 뜻한다. 연결요청에 대해서 승인된 호스트에 한하여 처리하는 간단한 인증에서부터 패킷필터링 및 분석, 프로토콜 내 특정 공격서명(attack signature)을 막는기술, 사용자 연결의 인증과 암호화 단계까지 다양하게 존재한다.

AWS의 개념 및 다양한 서비스들

AWS는 아마존에서 제공하는 클라우드 서비스!

AWS를 통해 제공받는 클라우드 컴퓨팅 서비스는 IT리소스를 네트워크를 통해 제공받으며,

이 클라우드 컴퓨팅은 3가지 유형으로 나눌 수 있다.

  1. Infrastructure as a Service(IaaS)

    일반적으로 네트워킹 기능, 가상 서버/스토리지 공간 제공

    IT 리소스에 대한 관리 제어 기능을 제공

  2. Platform as a Service(PaaS)

    OS, DB 등 기본 인프라 제공

    제공되는 서비스의 관리는 전부 서비스 제공자가 하므로, 인프라(일반적으로 하드웨어와 운영 체제)를 관리할 필요가 없어 애플리케이션 개발과 관리에 집중할 수 있다.

  3. Software as a Service(SaaS)

    네이버클라우드, 웹 메일, ERP 등과 같은 형태의, 소프트웨어나 애플리케이션의 기능 제공

    사용자는 서비스를 유지 관리하는 방법이나 기본 인프라를 관리하는 방법에 대해 생각할 필요 없이 특정 소프트웨어를 어떻게 사용할 지만 생각하면 된다.

AWS EC2 란

Amazon EC2를 통해 AWS 클라우드에서 확장 가능 컴퓨팅 용량을 제공받는다. 따라서 하드웨어등에 대한 구축 부담이 줄어 편하게 애플리케이션을 개발하고 배포할 수 있다.

Amazon EC2를 사용하여 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있다.

Amazon EC2에서는 확장 또는 축소를 통해 요구 사항 변경 또는 사용량 스파이크를 처리할 수 있으므로 트래픽을 예측할 필요성이 줄어든다.

4. 강의 후기

2주차 강의 내용은 지금 내가 수강하고 있는 컴퓨터 네트워크에서 배웠던 내용이라 이해하기가 쉬웠다😁

학교 공부랑 동아리에서 하는 공부를 병행하는게 조금 빡셀 것으로 예상했는데

이렇게 겹치는 부분들이 나와주니 내가 잘 이해했나 확인할 수도 있고, 오히려 더 깊게 공부하게 되어 좋은 것 같다!

이번 주차에 CHALLENGE 과제가 없어서 약간 섭섭(?)... 하지는 않았고 다음 주차를 기대하겠다!!😉

5. 생각티비 - 추가 개념 키워드

TCP vs UDP

TCP와 UDP는 OSI 모델에서 Transport-layer 계층에 사용되는 프로토콜

Transport-layer는 송신자와 수신자를 연결하는 통신 서비스를 제공하고, IP에 의해 전달되는 패킷의 오류를 검사를 담당하는 계층이다.

TCP

TCP는 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 연결 지향적 프로토콜

클라이언트가 연결 요청을 하고, 서버가 연결을 수락하면 통신 선로가 고정되고, 모든 데이터는 고정된 통신 선로를 통해서 순차적으로 전달

TCP는 Checksum만 사용하는 UDP와 다르게 Acknowledgement numbers, Sequence numbers도 사용한다.

그렇기 때문에 TCP는 데이터를 정확하고 안정적으로 전달할 수 있다. 하지만 UDP에 비해 패킷 전송은 느리다.

UDP

UDP는 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 비연결 지향적 프로토콜.

연결 과정이 없기 때문에 TCP보다는 빠른 전송을 할 수 있지만 데이터 전달의 신뢰성은 떨어진다.

UDP는 발신자가 데이터 패킷을 순차적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달 될 수 있다. 이때 먼저 보낸 패킷이 느린 선로를 통해 전송되기도 하므로 반드시 패킷이 보낸 순서대로 도착하는 것은 아니다.

잘못된 선로로 전송되어 패킷이 변조되거나 유실될 수도 있다. 이럴 경우 재전송을 하지 않는다.

Checksum을 사용하며 TCP에 비해 패킷 전송은 빠르지만 신뢰도는 낮다.

TCP 예시 / UDP 예시

TCP는 순서를 보장한다는 점, 신뢰도가 있다는 점 때문에 이메일이나 파일 전송과 같이, 데이터가 순서대로 도착해야 하는 상황에서 주로 사용된다.

UDP는 데이터가 도착하는 순서보다 빠르게 반응 하는 것이 중요한 실시간 동영상 플레이어나 게임과 같은 경우에 주로 사용된다.

DNS(Domain Name Server)

사람이 읽을 수 있는 도메인 이름(www.naver.com)을 IP주소(223.130.200.104)로 변환해주는 시스템

Proxy

proxy란? proxy를 사용하는 이유

Forward proxy

Reverse proxy

네트워크 장비

라우터

라우터는 LAN(Local Area Network:근거리 통신망)을 연결해 주는 장치로써, 데이터를 전송할 때 최종 목적지에 가기 위하여 거쳐야하는 많은 경로들 중에 적절한 통신 경로를 결정하기 위하여 한 통신망에서 다른 통신망으로 데이터 패킷을 전송하는 장치이다. 즉, 라우터는 다른 기종간의 네트워크를 연결하는 역할을 하는 네트워크 장비이다.

우리가 흔히 알고 있는 ‘www.naver.com’와 같은 도메인을 통해 접속을 하면, 도메인 서버를 통하여 IP를 얻을 수 있다. 이 IP를 이용하여 요청을 보내면, 라우터에서는 ‘다음은 여기 라우터로 가야됩니다!’라고 판단하고 데이터 패킷을 다른 라우터에게 전송해준다. 이런 과정을 여러번 진행하면서 수많은 라우터들을 거치고, 최종 목적지인 네이버로 도착하게 된다.

허브

허브는 전기적인 신호를 증폭시켜 LAN의 전송거리를 연장시키고, 데이터 패킷을 받으면 연결된 모든 장치들에게 보낸다. 모든 장치들이 데이터패킷을 받고, 자신에게 온 데이터 패킷인지 확인하고 필요하면 취득한다.

허브가 없다면 아래 그림처럼 크로스 케이블을 사용하여 두 대만 연결할 수 있다.


하지만 허브를 사용한다면 아래 그림과 같이 한꺼번에 많은 장비를 연결할 수 있다.

허브는 한 장비에서 전송된 데이터 프레임을 허브로 연결된 모든 장비에게 다 전송하는데 이를 플러딩(flooding)이라고 한다.

한 장비가 프레임을 전송하면 모든 장비와 충돌이 발생할 수 있으므로, 허브에 접속된 모든 장비들은 하나의 충돌 영역에 있다고 한다. 같은 이유때문에 보안성도 떨어진다.

스위치

스위치는 연결된 장치들의 IP와 MAC 주소를 모두 테이블 형태로 가지고, 원하는 목적지에 데이터 패킷을 전송하는 장치이다.

허브와는 달리, 스위치는 무작정 데이터 패킷을 뿌리는 것이 아니라, IP와 MAC 주소를 기반으로 필요한 장치에게만 데이터 패킷을 전송해준다.

위 그림은 PC4가 프레임을 스위치로 전송하면, 스위치는 MAC 주소 테이블을 참조하여 해당 PC가 연결되어 있는 포트3으로만 프레임을 전송한다.

한 포트에서 전송된 프레임이 MAC 주소 테이블에 있는 특정 포트로만 전송되기 때문에 다른 포트가 전송하는 프레임과 충돌이 일어나지 않는다. 그러므로 네트워크 성능이 향상되고, 보안성도 좋아진다.

공유기

ISP(Internet Service Provider) 업체에서 제공하는 한개의 인터넷 IP Address로 여러 대의 컴퓨터, 노트북, 핸드폰 등이 인터넷을 공유할 수 있도록 해준다.

인터넷 공유기는 허브 기능을 포함하고 있어서, 여러 대의 PC를 연결할 수 있다.

이더넷(Ethernet)

이더넷은 네트워킹의 한 방식이다. 즉, 네트워크를 만드는 방법 중 하나이다.

이더넷의 가장 큰 특징은 CSMA/CD라는 프로토콜을 사용해서 통신한다는 것이다.

CSMA/CD (Carrier Sense Multiple Access/Collision Detection)

  • 이더넷 환경에서 통신을 하고 싶은 PC나 서버는 먼저 지금 네트워크 상에 통신이 일어나고 있는지를 확인한다. 이때 누군가가 네트워크 상에 통신을 하고 있으면 자기가 보낼 정보가 있어도 못 보내고 기다린다. 그러다가 네트워크에서 통신이 없어지면 자기 데이터를 네트워크 상에 실어서 보낸다.
  • 그런데 만약 네트워크 상에서 두 대의 PC나 서버가 보낼 데이터를 가지고 눈치를 살피고 있다가 네트워크 상에 통신이 일어나지 않으면 동시에 데이터를 보내는 경우도 있을 것이다. 이더넷에서는 이렇게 두 개 이상의 PC나 서버가 동시에 네트워크 상에 데이터를 실어 보내는 경우가 발생한다.
  • 통신에서는 이렇게 두 개의 장비들이 데이터를 동시에 보내려다가 부딪치는 경우가 발생하게 되면 데이터를 전송했던 PC들은 랜덤한 시간동안 기다린 다음 다시 데이터를 전송하게 된다.
  • Carrier Sense : 네트워크 상에 통신이 일어나고 있는지를 확인하는 것이다.
  • Multiple Access(다중 접근) : 두 개 이상의 PC나 서버가 동시에 네트워크 상에 데이터를 실어 보내는 경우이다.
  • Collision(충돌) : 두 개의 장비들이 데이터를 동시에 보내려다가 부딪치는 경우이다.

MAC 주소

MAC 주소는 컴퓨터간 데이터를 전송하기 위해 있는 단 하나의 고유한 컴퓨터의 물리적 주소이다. 네트워크 계층 중 2계층인 데이터링크에서 사용되는 주소이다.

profile
인하대학교 컴퓨터공학과 학생입니다😀

0개의 댓글