수업 내용 요약

ik_13038·2022년 8월 12일
0

라이징캠프 2주차

목록 보기
1/10

2주차 학습내용 정리 및 요약


1. 서버에 어떻게 접근하는가?

스타벅스 가게에 드라이브 스루, 직원용 게이트, 일반 게이트 등 다양한 통로가 있듯이
서버에도 Port라고 불리는 다양한 통로가 있다. 이 각 통로에 용도가 있듯이 포트 또한 각기 사용자에 따라 다른 규칙을 설정할 수 있다.
서버에 포트 요청이 들어올 때 inbound 규칙을 통해 검사를 실시하며
요청이 끝날 때엔 outbound 규칙이 있으나 대개 설정하지 않는다.

다시말해 일반적으로 트래픽에 네트워크 간에 이동하는 방향에 inbound와 oubound가 존재하고
inbound 규칙은 모든 접속 불가가 디폴트값이며, outbound 규칙으로는 모든 접속 허용이 디폴트값이다.

이런 규칙 설정을 사용자가 변경할 수 있는데 일반적으로 방화벽이라는 모듈로 설정을 변경할 수 있다.

방화벽이란 서버와 서버 간 통신을 하는데 있어서 정의된 보안 규칙에 기반하여 네트워크 트래픽을 제어하는 보안 시스템을 일컫는다.

cf) daemon

인바운드 규칙에 관련하여 일종의 문지기 역할을 추가로 하는 것이 daemon이다. daemon은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램으로 시스템 로그를 남기는 syslogd처럼 보통 데몬을 뜻하는 ‘d’를 이름 끝에 달고 있으며, 일반적으로 프로세스로 실행된다.

데몬은 대개 부모 프로세스를 갖지 않으며(PPID가 1), 따라서 프로세스 트리에서 init 바로 아래에 위치한다.

시스템은 시동할 때 데몬을 시작하는 경우가 많으며, 이런 데몬들은 네트워크 요청, 하드웨어 동작, 여타 프로그램에 반응하는 기능을 담당하게 된다. 이 기능에 앞서 말한 문지기 역할을 수행하는 것이다. 요청이 정상적인지 검사하는 해킹 방지 역할 또한 수행한다.

2. 서버 요청은 어떻게 이루어지는가?

일반적으로 클라이언트가 서버에 요청을 할 때 한 규칙에 준수하여 요청 사항을 전송한다. 이 요청사항을 네트워크에서는 프로토콜이라고 명한다. 다시 말해, 프로토콜은 컴퓨터 내부 혹은 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계를 뜻한다. 이 프로토콜들은 각각 관례적으로 포트번호를 하나씩 갖는다.

다양한 것들이 있지만 수업에는 아래와 같은 것들을 대표적으로 배웠다.

프로토콜포트 번호주 사용자
Https443client
Http80client
ssh22staff
ftp20,21staff
mysql3306staff
smtp25staff
  • staff(서버 관리자)가 아닌 client가 주로 사용하는 프로토콜인 http와 https는 거의 포트번호를 생략하고도 접속이 가능하다.

  • Https는 Http에 ssl을 적용한 방식으로 CA에 인증서를 받고 (CA ex. let's Encrypt)
    발급받은 인증서를 설치 받아 서버에 SSL을 적용하는 방식으로 이루어진다.
    여기서 SSL은 보안 소켓 계층(Secure Sockets Layer, SSL) 인증서로 종종 디지털 인증서로 불리며, 브라우저(사용자의 컴퓨터)와 서버(웹사이트) 사이의 암호화된 연결을 수립하는 데 사용한다. 기존 http의 경우 해킹 등 안정성 면에서 취약한 면을 보인다.
    이 때 해당 SSL을 적용한 https를 이용함으로써 취약함을 보완하는데 최근에는 거의 대부분의 도메인은 https를 사용하고 있으며 사용자가 http 프로토콜을 사용하여 접근하더라도 https로 리다이렉션해주는 것을 통해 안정성 문제를 미연에 방지하고 있다.
    참고로 최근은 TLS라는 SSL의 향상된, 더욱 안전한 버전을 사용하는 게 대부분인데 일반적으로 사용자들이 SSL로 인지하고 있어 두 개 다 동일한 의미로 사용되기도 한다.

  • Http는 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해 놓은 규칙이다.

  • ssh(Secure shell)는 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜로 컴퓨터 간 통신에 주로 사용된다. 예를 들자면 서버 구축을 서버 관리자가 구축한 뒤 터미널로 접근할 때 ssh 프로토콜을 사용할 수 있다. 기존의 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 텔넷은 암호화가 이루어지지 않아 계정 정보가 탈취될 위험이 높으므로, 여기에 암호화 기능을 추가하여 1995년에 나온 프로토콜이다.

  • ftp(file transfer protocol)는 TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다. 네트워크에 연결된 컴퓨터끼리 데이터를 원활하게 교환하기 위한 목적으로 개발되었다. 파생형으로 FTP에 TLS 프로토콜이 적용된 FTPS가 있으며, 비슷한 기능을 제공하는 SSH 프로토콜 기반의 SFTP가 있다. FTP는 비밀번호가 평문으로 전송되어 보안성이 매우 떨어지므로 FTPS를 사용하는걸 적극 권장한다고 한다.

  • Mysql 프로토콜은 해당 프로그램 내에서 다음과 같은 처리를 할 때 사용된다고 한다.

  1. 로그인할 때
  2. 보통 갱신계열의 SELECT문을 실행할 때
  3. 보통 검색계열의 SQL문을 실행할 때
  4. Prepared Satement을 실행할 때
  5. 서버사이드 커서를 이용할 때
  • smtp는 간이 우편 전송 프로토콜(Simple Mail Transfer Protocol)의 약자. 이메일 전송에 사용되는 네트워크 프로토콜이다.

3. 서버를 누가 사용할 수 있는가?

위 그림에서처럼 일반적으로 우리는 한 공유기를 통해 여러 매체들을 연결한다. 이 때 공유기는 외부 IP 주소와 내부 IP 주소를 분리하여 가지는데 외부 IP(공용 IP)는 외부 인터넷 회선에 할당되는 주소로 바깥 여타 네트워크와 통신하는데 사용된다.
내부 IP(사설 IP)는 외부 IP를 받은 이후 공유기에 연결된 각각의 매체들에 할당되는 ip주소이다.

포트 포워딩이란?

공유기의 포트를 통해 이 공유기와 연결된 기기들의 특정 포트에 진입할 수 있게 하는 기능이다. 만약 공유기에 컴퓨터가 연결되어 있을 때 외부 4g망으로 연결된 핸드폰이 컴퓨터에 연결을 시도할 시, 그냥 공유기 주소 + 포트번호로 입력한다면 공유기의 '어느 기기'의 포트로 들어가야하는 지 알 수 없다. 따라서 포트 포워딩은 공유기에 연결된 기기의 포트를 특정 번호를 통해 전달(forwarding)해 주는 것이라고 이해할 수 있다. 또는 공유기에 기기+해당 기기의 포트에 해당하는 포트 번호를 할당 해 주는 것이라고 해도 될 듯하다. 예를 들어 공유기의 180포트로 접속하면 핸드폰의 5000 포트에 접속하게하고, 280포트로 접속하면 컴퓨터의 5000포트에 접속하게 하는 것이다. 여기서 180, 280등을 지정하는 작업이 포트포워딩이다. 이러한 정보들은 Routing Table 내부에 공유기가 저장을 하고 있다.

  • 일반적으로 라우팅 테이블이 담고 있는 정보

    외부포트내부 IP내부 포트
    80192.168.0.280
    3000192.168.0.33000

    따라서 같은 네트워크를 사용해서 내부 IP와 포트를 공유하고 있는 매체끼리는 포트포워딩이 따로 필요가 없다.

4. 서브 도메인이란?

서브 도메인은 보조 도메인으로써, URL로 전송하거나 계정 내의 IP 주소나 디렉토리로 포워딩되는 도메인 이름의 확장자이다.

우리가 네이버에서 검색창을 통해 무언가를 검색할 때 www.naver.com/serach...~로 뜨는 일반적인 형태가 아닌 www.search.naver.com으로 뜨는 경우 이 때의 도메인 주소 값을 서브 도메인이라고 한다. 일반적으로 우리가 www.search.naver.com/~으로 이동시에는 기능적으로 동일한 www.naver.com/search...으로 리다이렉션이 되며 이는 가비아 등과 같은 DNS를 판매하는 회사들로부터 기능이 제공된다.

참고로 서브 도메인 사용 시 추가비용은 든다고 하나 그리 비싸지 않다고 한다.
(추가 발급 시 1000원..등)

일반적으로 우리가 서비스 사에서 개발을 할 때 dev(develope)와 prod(produce)를 구분해서 사용하는데 이 때 서브도메인을 많이 활용한다. git을 통해 dev 버전이 완벽하다고 생각이 들면 prod로 배포하는 등 이 기능을 활용할 수 있다.

출처:

라이징캠프 수업 내용 외
https://ko.wikipedia.org/wiki/%EB%8D%B0%EB%AA%AC_(%EC%BB%B4%ED%93%A8%ED%8C%85)
https://martinnoh.tistory.com/entry/%EB%8D%B0%EB%AA%AC-%EA%B0%9C%EB%85%90
https://www.cloudflare.com/ko-kr/learning/ssl/what-is-ssl/
https://lamanus.kr/59
https://cgntv.tistory.com/entry/%EC%84%9C%EB%B8%8C-%EB%8F%84%EB%A9%94%EC%9D%B8%EC%9D%B4%EB%9E%80

ps. 기타 느낀 점 및 수행 예정 사항

처음 발표를 했던 고고가 굉장히 발표를 논리 정연하게 해주었다. 팀원을 통해 어떻게 효율적으로 발표를 해야할지 깨달을 수 있었고 추후 발표 시에 참고하여 더 완벽한 발표를 할 수 있도록 노력해야겠다. 다른 분들도 열심히 준비하셨던 거 같다. (본인은 준비를 많이 안 하여 속사포처럼 정신없이 말을 빠르게 했는데 발표 연습이 필요해보인다.. 괜히 영상찍어보라는 게 아닌 듯 싶었다.)

과제 수행 예정 (서버 구축)

  1. Local 서버 구축 / Window Apache PHP MySQL

  2. AWS 서버 구축 / Linux + Nginx PHP MySQL

  3. Sub Domain에 각각 나만의 페이지 만들기 (html, css, javascript 활용)

기타)
-> 빠르게 과제 실시 이후 html, css, js를 공부를 조금이라도 해야할 것 같다..ㅎㅎ;
-> 기타 SQL 공부 (한방쿼리 대비)
-> PHP 알아보기
등등

profile
글 연습, 정보 수집

0개의 댓글