본문 바로가기

우아한테크코스

📋 배포 인프라 강의 1 - Public Cloud, 통신 확인하기

2021-04-27글

Public Cloud란?

Cloud

클라우드는 인터넷을 은유적으로 표현하는 말. 어디에든 있고 어떤 형태로든 변할 수 있다. 정확히는 인터넷을 통해 원격으로 접근할 수 있는 모든 것을 의미한다. (메일, 드라이브 등)

Cloud Computing?

서버, 데이터베이스, 네트워킹 등 컴퓨팅 리소스를 인터넷을 통해 관리하는 것

클라우드를 사용하는 이유?

관심사의 분리

서비스를 만들려고 할 때 서비스의 본질에 대해 집중을 하기 위해서 사용한다.
우리의 서비스는 저장소에 있는 데이터를 서버에서 원하는 형태로 가공해 네트워크를 통해 사용자에게 전달한다.
우리는 데이터, 서버, 네트워크를 어떻게 관리할지만 관심을 두었다.
그렇다면 실제 서비스 할때를 생각해보자.

서비스할 경우 고려할 점

  • 데이터를 어떻게 관리할 것인가
  • 서버를 어떻게 관리할 것인가
  • 네트워크를 어떻게 관리할 것인가

이러한 고민들은 Cloud 제공 업체가 해준다.
클라우드를 사용한다는 것은 단순히 컴퓨팅 리소스를 인터넷을 통해 관리하는 것만을 의미하지 않는다.
관심사를 분리하여 우리가 집중할 대상에 더 집중하기 위함이다.


통신 확인하기

  • 노드 : IP를 가지고 통신할 수 있는 대상
  • 하나의 프로그램을 실행하면 PID를 할당해서 실행시킨다 = 프로그램이 메모리에 띄워져서 동작하는 상태

OSI 7 계층

1계층 - Physical Layer(물리 계층)

  • 0과 1의 나열을 주고 받을 수 있게 해주는 모듈

2계층 - Data Link Layer(데이터 링크 계층)

  • 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고 받기 위해 필요한 모듈
  • 물리적 주소를 이용해 노드 간 연결
  • Framing 작업이 여기에 속한다.
  • 대표 장비 : 브릿지, L2 스위치

3계층 - Network Layer(네트워크 계층)

  • 수많은 네트워크 연결로 이뤄진 inter-network 속에서 목적지 컴퓨터로 데이터를 전송하기 위해 IP 주소로 길을 찾고(routing)
  • 자신의 다음 라우터에게 데이터를 넘겨주는 것(forwording)
  • 논리적 주소로 최초 출발지부터 최종 목적지까지의 최적 경로 결정
  • 대표 장비 : 라우터, L3 스위치 등
  • 프로토콜 : IPv4

4계층 - Transport Layer(전송 계층)

  • 포트 번호를 통해 서비스를 구분하고 데이터 전송을 담당
  • 대표 장비 : L4 스위치 등
  • 프로토콜 : TCP

5계층 - Session Layer(세션 계층)

  • 응용 프로그램 간 세션 수립, 유지, 종료

6계층 - Presentation Layer(표현 계층)

  • 데이터의 표현(확장자 연결, 압축, 암호화, 변환)

7계층 - Application Layer(응용 계층)

  • 사용자에게 인터페이스 제공, 원본 데이터 생성
  • 프로토콜 : HTTP, SSH 등...

네트워크 체크

1. Ping 체크

IP 정보만으로 서버에 요청이 가능한지 확인한다.
ICMP란 프로토콜을 사용하는데, 이는 IP가 신뢰성을 보장하지 않아 에러에 대처할 수 없는 문제점에 대해 오류 정보 발견 및 보고를 담당한다.
TCP가 아니라 Port 번호가 없다.

$ ping [대상 IP]
  • RTT(Round Trip Time) : 한 패킷이 왕복한 시간을 의미. 네트워크 시간은 연결 시간, 요청 시간, 응답 시간 등으로 구성됩니다. RTT가 높을 경우 어느 구간에서 오래 걸리는지 확인해야한다.

🤔 IP 정보로 통신할 때, 실제 서버 위치를 아는 법?

ARP(Address Resolution Protocol) : 논리적 주소인 IP주소 정보를 이용하여 물리적 주소인 MAC 주소를 알아와 통신이 가능하게 도와주는 프로토콜로, ARP Request를 Braodcast로 요청하면 수신한 장비들 중 자신의 IP에 해당하는 장비가 응답을 한다. 응답받은 NIC 포트 정보와 IP, MAC 주소를 기반으로 이후 통신을 진행한다.

2. Port 체크

서비스의 정상 구동 여부를 확인할 수 있다.
포트가 띄워졌다는 것은 그 애플리케이션을 사용할 수 있다는 것이다.

$ telnet [Target Server IP] [Target Service Port]

하나의 포트 번호를 오픈해두고도 많은 사용자와 연결할 수 있다.

소켓

소켓은 소프트웨어로 작성된 통신 접속점으로, 네트워크 응용프로그램은 소켓을 통해 통신망으로 데이터를 송수신한다.
소켓은 응용 프로그램에서 TCP/IP를 이용하는 창구 역할을 한다.
(포트번호는 TCP/IP가 지원하는 상위 계층의 프로세스를 구분하기 위한 번호이므로 하나의 컴퓨터내에 있는 응용 프로세스들은 반드시 서로 다른 포트번호를 사용하여야 한다.)

소켓을 이용한 프로그램에서 상대방과 IP 패킷을 주고 받기 위해서는 5가지 정보가 정해져야 한다.

  • 통신에 사용할 프로토콜
  • 자신의 IP 주소
  • 자신의 포트번호
  • 상대방의 IP 주소
  • 상대방의 포트번호

3. HTTP Response 체크

상태 코드를 기반으로 상세하게 이상유무를 판단할 수 있다.

$ curl -I google.com

4. 패킷 분석

tcpdump, wireshark 등의 도구를 사용하여 패킷을 모니터링할 수 있다.